现象
当测试开始nfs client客户端机器的nmon发现有一个cpu达到100,从进程看是linux内部进程kworker
原因分析
再用关键字kworker cpu 搜索发现可能和kworker cpu占用高可能和 sunrpc调用有关
Dell EMC HPC NFS 存储解决方案 - 高可用性 (NSS7.4 - HA) 配置
dell这个文章提到centos 7.6的内核版本 3.10.0-957.el7有一个bug,会导致NFS 将随同一个任务(如 kworker)挂起,占用 100% 的 CPU。需要升级到kernel-3.10.0-957.5.1.el7 或更高版本已解决此问题.
进一步搜索kworker cpu sunrpc
发现有这么一个补丁
https://patchwork.kernel.org/project/linux-nfs/patch/CAN-5tyEX1Z_3EB3h6=z_S1E=gpTObOrcP5Ub2HmVKBB5RaU1DQ@mail.gmail.com/
[RFC] fix parallelism for rpc tasks
似乎是说nfs 的sunrpc是会固定在一个cpu上运行,这个补丁的作者想把它改为多cpu
邮件列表中,补丁也实现了,也已经提交到了内核
测试情况看性能有所提升
linux内核的此文件的补丁列表页面
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/net/sunrpc/sched.c
解决办法
搜索centos7 的内核补丁记录
https://git.centos.org/rpms/kernel/blob/c8s/f/SPECS/kernel.spec
文件比较大,要往下拉几下才能刷到
在3.10.0.-914 有这个补丁
Fri Jun 22 2018 Bruno E. O. Meneguele bmeneg@redhat.com [3.10.0-914.el7]
- [fs] fix parallelism for rpc tasks (Steve Dickson) [1476875]
因此需要更新内核到3.10.0-914.el7 或更高
centos 7.6-1810 内核是 3.10.0-957 升级到7.6可以有这个补丁
© 2022, 新之助meow. 原创文章转载请注明: 转载自http://www.xinmeow.com