Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考.docVIP

Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考   摘要:本文主要讨论在Linux系统内核在页回收时出现cpu load瞬间飙高的问题,主要表现为Linux系统响应慢,我们从内核的角度分析了导致该问题的几种可能情况。我们可以借助提高watermark low可以尽早的唤醒kswapd,然后kswapd来做background reclaim。Linux内核提供了各种各样的机制,我们根据具体的使用场景来选择使用合适的策略。从而实现系统性能的提升。   关键词:linux 内核分析 页回收   中图分类号:TP31 文献标识码:A 文章编号:1007-9416(2016)12-0252-01   Abstract:This article main discussion in Linux kernel CPU load instantly soared during pp recycling problems, main show is Linux system response is slow, we analyzed the cause of the problem from the Angle of the kernel several possible situation. We can help improve the watermark low can awaken kswapd as soon as possible, then kswapd to do background reclaim. The Linux kernel provides a variety of mechanisms, we according to the specific usage scenarios to choose to use the right strategy. So as to realize the system performance improvement.   Key Words:Linux;kernel analysis;page recovery   1 前言   搜索团队的服务器前段时间频繁出现CPU load很高(比如load average达到80多)的情况,希望能借助这个机会给大家介绍一下在Linux系统出现问题时我们能够借助哪些工具去协助分析;以及介绍一下Linux在内存管理方面的一些机制以及我们的使用策略。   2 Linux系统出现常见问题的分析   在Linux系统里面有很多的问题定位工具,可以协助我们来分析问题。于是我们就针对目前搜索服务器的现象,思考可以借助哪些工具来找到问题原因。   Linux系统响应慢,从内核的角度看,大致可能有以下几种情况:   (1)线程在内核态执行的时间过长,这个时间超出了它被调度算法给分配的执行时间,它在内核态长时间的占用CPU,而且也不返回用户态。这种现象有个术语,叫做softlockup。   通过一个现象来简单说下内核态和用户态。我们可能遇到这个现象,执行完一个命令,CTRL+C怎么都杀不死它,而且敲键盘也反应,这可能就是因为此时这个进程正运行在内核态,CRTL+C是给进程发signal的方式通知进程,而进程只有在从内核态返回用户态的时候才会去检查有没有信号,所以如果它处在内核态的话显然是无法被杀死的。这种现象就给我们系统很忙的感觉。   (2)CPU load值高,说明处于Running状态和D状态的线程太多。线程等待资源而去睡眠,就会进入D状态(即Disk sleep,深度睡眠),进入D状态的线程是不能够被打断的,他们会一直睡眠直到等待的资源被释放时主动去唤醒他们。(大致的原理是,这些线程在等待什么资源,比如某个信号量,它就会被加入到这个信号量的等待队列里,然后其它的线程释放这个信号量的时候会去检查该信号量的等待队列,然后把队列里线程给唤醒。)   (3)在内核态,除了进程上下文外,还有中断上下文。中断也可能有异常,比如长时间被关中断。中断长时间被关闭,这个现象叫做hardlockup。   针对hardlockup,内核也有监测机制,是NMI watchdog。可以通过/proc/interrupts来看系统是否使能了NMI watchdog。如果值不为0,说明系统使能了NMI watchdog。然后我们通过sysctl将kernel.nmi_watchdog设置为1,即,在触发了NMI watchdog的时候主动让内核去panic。从而监测出hardlockup这种故障。   3 解决问题   为了避免direct reclaim,我们得保证在进程申请内存时有足够可用的free pages

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档