Linux操作系统load average过高,kworker占用较多cpu

今天巡检发现,mc1的K8S服务器集群有些异常,负载不太均衡。其中10.2.75.32-34,49的load average值都在40以上,虽然机器的cpu核数都是40或48核不算严重,但也值得重视。

登陆机器查看,执行top发现,cpu的使用率接近40%,sys有20-30,user有10-20。也发现有大量的内核线程[kworker]占用比较多的使用率。如下是在下午7点多的截图,如果是高峰期9点,kworker的数字多数是在20-30之间,说明占用了比较多的cpu资源。

顺着这个方向排查。[kworker]这种内核线程使用的是内核工作队列模式,1个cpu就产生对应的1个内核线程。参考了这个文章:https://yq.aliyun.com/articles/504369

里面有说到kworker的排查方面,即用ftrace命令,排查workqueue_queue_work中什么函数调用最多。

在机器上安装ftrace,参考文章:https://linux.cn/article-9273-1.html

apt-get install trace-cmd

装上后运行一段时间查看

trace-cmd record -e workqueue:workqueue_queue_work

trace-cmd report > result

把结果保存到result后,进行分析结果得出:

这个dbs_timer的function运行数量极大。关键字搜索一下,感觉有点是这个引起的问题,因为这个函数是跟cpu动态调整频率有关系,而cpu调频是用来省电用的

具体通过学习了cpufreq的知识:

https://www.ibm.com/developerworks/cn/linux/l-cn-cpufreq/index.html

http://abcdxyzk.github.io/blog/2015/08/12/kernel-cpufreq/

里面提到一点:

Cpufreq 作为一个子系统最早被加入到 Linux 内核中时只配备了 governors ,分别是performance、powersave 和 userspace,ondemand。当用户选择使用 performance governor 时,CPU会固定工作在其支持的最高运行频率上;当用户选择使用 powersave governor 时,CPU会固定工作在其支持的最低运行频率上。因此这两种 governors 都属于静态 governor ,即在使用它们时CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种governors 对应的是两种极端的应用场景,使用 performance governor 体现的是对系统高性能的最大追求,而使用 powersave governor 则是对系统低功耗的最大追求。

安装下面的软件查看配置:

apt-get install cpufrequtils

但是我们的cpu配置是这样的:

初步怀疑:cpu的动态调频策略,导致每隔一段时间就要执行od_dbs_timers函数(调用dbs_timers的调用者),来判断cpu是否要进行降频或者升频,因为我们的进程数量特别多,所以也可能会加快这个策略的运行频率。最后就导致kworker占用比较高的资源。

为了确认是否这个引起的,下午7点多的时候在3台机器上进行了验证,把cpufreq的策略改为performance,这个策略上面说过cpu将不会进行调频,这3台机器都是kworker还处于比较高使用率情况的

for i in $(ls /sys/devices/system/cpu/*/cpufreq/scaling_governor);do echo performance > $i;done

查看实际的模式是否修改完成

等待片刻后,load average 下降很多, kworker也从top命令的首页中消失,cpu的sys和user使用率也降低,说明这个改动是有效的。

在类似K8S这种负载比较高,进程数量多的服务器上,应该要关闭这个调频功能,虽然不省电,但至少可以避免在负载出现一定程度的情况下内核线程反而会加大cpu资源消耗的情况。

转载于:https://www.cnblogs.com/williamjie/p/10836799.html

Linux操作系统load average过高,kworker占用较多cpu相关推荐

  1. 上下文切换频繁,导致load average 过高

    转载记录一下,方便后面用到时方便查看. 进程上下文频繁切换导致load average过高 2016年6月26日admin发表评论阅读评论 一.问题现象 现网有两台虚拟机主机95%的cpu处于idle ...

  2. linux主机load average的概念计算过程注意事项

    最近开发的一个模块需要根据机房各节点的负载情况(如网卡IO.load average等指标)做任务调度,刚开始对Linux机器load average这项指标不是很清楚,经过调研,终于搞清楚了其计算方 ...

  3. Linux系统load average异常值处理的trick

    周末再分享一个内核bug紧急热处理case. 假如你发现某个Linux系统的load输出如下: #uptime ... 0 users, load average: 32534565100.09, 3 ...

  4. mysql load average_紧急求助:load average太高了!!

    站点同时在线人数300人左右,top出来的load average超过4,有时达到了8点多! sleeping进程达到了三百多!大部分是来自apache,导致房问速度很慢!!不知问题出在哪里,请高手赐 ...

  5. linux c++应用程序内存高或者占用CPU高的解决方案_20161213

    对于绝大多数实时程序来说,实时处理相关程序中的循环问题所带来的对机器的损耗和自身的处理速度的平衡,以及与其他程序的交互以及对其他功能的影响难免会成为程序设计中最大的障碍同时也是最大的突破点. 在所有这 ...

  6. Linux kworker 占用CPU过高

    先打开HTOP htop 然后按H K(大写) 我们看到Kworker/0:0+events占用了大量CPU,下面参考下人家的回答 什么是kworker? kworker表示进行"工作&qu ...

  7. LINUX下CPU Load Average的一点研究

    背景: 公司的某个系统工作在基于Linux的Cent OS下,一个host下同时连接了许多client, 最近某台Host总是显示CPU Load Average过高,我们单纯的以为是CPU的占用过高 ...

  8. 深入理解 Linux Load Average

    一直不解,为什么io占用较高时,系统负载也会变高,偶遇此文,终解吾惑. #1 load average介绍 ##1.1 load average 指标介绍 uptime和top等命令都可以看到load ...

  9. 容器CPU使用率过高,导致宿主机load average飙升

    早上醒来已经收到多条服务器告警信息,具体是这样的,如下图:Processor load (15 min average per core) ;服务器CPU load 过高,接下来是处理过程,记录一下. ...

最新文章

  1. Git 错误提交后该如何回滚操作
  2. SQL Server备份的三个恢复模型
  3. Thinking In Java 第四章 控制执行流程
  4. SCSM 2012 SP1创建SCOM连接器
  5. oracle删除数据库表空间
  6. camelCase骆驼拼写法
  7. 软件开发过程中最重要的是人?还是领导者?
  8. mongodb 查多个不等于_MongoDB增删查
  9. OTDR系统的分类的特点
  10. [转载]期权交易策略
  11. 注塑车间自动供料系统+上料防错一体解决方案
  12. 服务器编程之路:进无止境(上)
  13. DevOps :Jenkins pipeline + sonarQube 完成静态检测 + junit 覆盖率报告。
  14. HCIP——IPv6地址基础
  15. python爬虫-爬取股票贴吧帖子
  16. vue部署至Tomcat,F5刷新报404问题解决
  17. 人脸检测研究最新进展
  18. 176310 Can’t place multiple pins assigned to pin location Pin_K22(IOPAD_X77_Y33_N14)(FPGA编译出现复用引脚)
  19. stata里reghdfe函数在不同固定效应设计下的观测值问题
  20. 如何快速完成事业单位继续教育

热门文章

  1. 防抖与节流方案_前端ajax优化解决方案
  2. Mac下使用brew的常用步骤
  3. 【HDU - 5961】传递(图,思维,暴力,枚举点)
  4. 【HihoCoder - 1851】D级上司 (树形图,dfs)
  5. 8.深度学习练习:Gradient Checking
  6. html text align属性,HTML canvas
  7. java内容置剪贴板
  8. 9型转x型 cobol_兰州一餐馆推鸳鸯牛肉面 9种面型一面多吃
  9. 求1~n这n个整数十进制表示中1出现的次数
  10. Pandas数据排序——【按索引排序sort_index()方法、按值排序sort_value()方法】