- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
理解和配置 Linux 下的 OOM Killer
这几天用C++11写了个游戏服务器,跑在Windows/FreeBSD/Linux上都没问题,结果在Linux做压力测试的时候经常会挂掉,运行30分钟后系统提示Killed。这通常是因为某时刻应用程序大量请求内存导致系统内存不足造成的,这通常会触发 Linux 内核里的 Out of Memory (OOM) killer,OOM killer 会杀掉某个进程以腾出内存留给系统用,不致于让系统挂掉。如果检查相关的日志文件(/var/log/messages)就会看到下面类似的 Out of memory: Kill process 信息:...Apr1609:45:53 debian kernel:[76149.969715]Out of memory:Kill process 8487(TCPServer) score 28or sacrifice childApr1609:45:53 debian kernel:[76149.970289]Killed process 8487(TCPServer) total-vm:162584kB, anon-rss:28912kB, file-rss:0kB...Linux 内核根据应用程序的要求分配内存,通常来说应用程序分配了内存但是并没有实际全部使用,为了提高性能,这部分没用的内存可以留作它用,这部分内存是属于每个进程的,内核直接回收利用的话比较麻烦,所以内核采用一种过度分配内存(over-commit memory)的办法来间接利用这部分 “空闲” 的内存,提高整体内存的使用效率。一般来说这样做没有问题,但当大多数应用程序都消耗完自己的内存的时候麻烦就来了,因为这些应用程序的内存需求加起来超出了物理内存(包括 swap)的容量,内核(OOM killer)必须杀掉一些进程才能腾出空间保障系统正常运行。用银行的例子来讲可能更容易懂一些,部分人取钱的时候银行不怕,银行有足够的存款应付,当全国人民(或者绝大多数)都取钱而且每个人都想把自己钱取完的时候银行的麻烦就来了,银行实际上是没有这么多钱给大家取的。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码?linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory() 被触发,然后调用 select_bad_process() 选择一个 “bad” 进程杀掉,如何判断和选择一个 “bad” 进程呢,总不能随机选吧?挑选的过程由 oom_badness() 决定,挑选的算法和想法都很简单很朴实:最 bad 的那个进程就是那个最占用内存的进程。/*** oom_badness - heuristic function to determine which candidate task to kill* @p: task struct of which task we should calculate* @totalpages: total present RAM allowed for page allocation** The heuristic for determining which task to kill is made to be as simple and* predictable as possible. ?The goal is to return the highest value for the* task consuming the most memory to avoid subsequent oom failures.*/unsignedlong oom_badness(struct task_struct *p,struct mem_cgroup *memcg,? ? ? ? ? ? ? ? ? ? ? ? ? const nodemask_t *nodemask,unsignedlong totalpages){? ? ? ? long points;? ? ? ? long adj;? ? ? ? if(oom_unkillable_task(p, memcg, nodemask))? ? ? ? ? ? ? ? return0;? ? ? ? p = find_lock_task_mm(p);? ? ? ? if(!p)? ? ? ? ? ? ? ? return0;? ? ? ? adj =(long)p-signal-oom_score_adj;? ? ? ? if(adj == OOM_SCORE_ADJ_MIN){? ? ? ? ? ? ? ? task_unlock(p);? ? ? ? ? ? ? ? return0;? ? ? ? }? ? ?
您可能关注的文档
- Oracle AQ使用实例.doc
- 南京邮电大学信号课程实验报告.doc
- ExtJS TreePanel 树的配置详细属性介绍.docx
- JavaMail API中文文档.doc
- 必修 5 Module 3 单元测试.doc
- JSlider Example 滑动栏使用.doc
- 世界ERP主要供应商及其产品.doc
- 42邮件发送.doc
- 设计任务书(侯曼曼).doc
- 云南大学软件学院JAVA实验九.doc
- 部编版一年级语文下册第四单元《8 夜色》教学课件(2025年春-新编教材).pptx
- 江苏省盐城市五校2024-2025学年高一下学期4月期中联考数学试卷(含答案).pdf
- 2025年高一语文教师工作总结简单版(六).docx
- 第12课《台阶》课件 2024—2025学年统编版语文七年级下册(共39张PPT).pptx
- 部编版一年级语文下册第四单元《语文园地四》教学课件(2025年春-新编教材).pptx
- 部编版一年级语文下册第四单元《9 端午粽》教学课件(2025年春-新编教材).pptx
- 指导技能的关键要素与提升的策略研究与分享.docx
- 湖南省永州四中直升班2025届高三(下)适应性数学试卷(含答案).pdf
- 湖北省荆荆宜襄·四地七校联盟2024-2025学年高一(下)期中联考数学试卷(含答案).pdf
- 2025年04月17日袁荣的初中历史组卷.docx
文档评论(0)