centos7 40g网卡测试nfs 性能,kworker线程跑满单cpu,速度无法提升的问题

现象

当测试开始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

补丁的说明以及修改的代码页面
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/sunrpc/sched.c?id=f515f86b34b2e7d4b24cc9b7375c9e749895088e

解决办法

搜索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

0.00 avg. rating (0% score) - 0 votes
点赞