网站自建设需要买什么,应用公园app在线平台,淘宝开店注册流程,深圳制作网站公司哪家好Linux操作系统load average过高#xff0c;kworker占用较多cpu 今天巡检发现#xff0c;mc1的K8S服务器集群有些异常#xff0c;负载不太均衡。其中10.2.75.32-34#xff0c;49的load average值都在40以上#xff0c;虽然机器的cpu核数都是40或48核不算严重#xff0c;但…Linux操作系统load average过高kworker占用较多cpu 今天巡检发现mc1的K8S服务器集群有些异常负载不太均衡。其中10.2.75.32-3449的load average值都在40以上虽然机器的cpu核数都是40或48核不算严重但也值得重视。 登陆机器查看执行top发现cpu的使用率接近40%sys有20-30user有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 和 userspaceondemand。当用户选择使用 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