我的虚拟机中 rcuos 和 rcuob 进程过多

我的虚拟机中 rcuos 和 rcuob 进程过多

CentOS 7.2 (3.10.0-327.18.2.el7.x86_64)我在具有 32 GB RAM 的 Lenovo W540 iCore 7 上以具有 2 个 CPU 和 6 GB RAM 的 VMware 来宾身份运行。

我在虚拟机中看到 rcuos 和 rcuob 每个有 128 个进程。这听起来不太正确,因为这些进程应该等于系统中的核心数量。

我注意到我的虚拟机偶尔会冻结。

有没有办法限制 rcuos 和 rcuob 进程的数量等于 CPU 的数量。

我将 VM Guest 中的 CPU 数量减少到 1,但 rcuos 和 rcuob 的数量仍然各为 128。

然后,我添加了一个内核启动参数,将和maxcpus=0的数量减少到 1 个,但随后我需要为虚拟机分配更多内核。如果我只使用一个核心,我的应用程序性能会降低 40%。rcuosrcuob

答案1

我对 Linux 内核以及如何调整它的了解非常有限。在我发布并偶然发现另一个内核启动参数 nr_cpus 后,我继续谷歌搜索这里当我在虚拟机中将其设置为 2(CPU 数量)后,我现在只看到 2 个 rcuos 和 rcuoc 进程。

这对我有用。

编辑

/etc/默认/grub
并添加
处理器数量=2
在 GRUB_CMDLINE_LINUX 行中。然后就跑了
grub2-mkconfig -o /boot/grub2/grub.cfg
重新启动后,现在 rcuos 和 rcuoc 每个进程不再是 128 个,我现在只看到每个进程 2 个。

$ ps 辅助| grep rcu
根 8 0.0 0.0 0 0 ? S 23:04 0:00 [rcu_bh]
根 9 0.0 0.0 0 0 ? S 23:04 0:00 [rcuob/0]
根 10 0.0 0.0 0 0 ? S 23:04 0:00 [rcuob/1]
根 11 0.0 0.0 0 0 ?晚上 23:04 0:00 [rcu_sched]
根 12 0.0 0.0 0 0 ? S 23:04 0:00 [rcuos/0]
根 13 0.0 0.0 0 0 ? S 23:04 0:00 [rcuos/1]

答案2

这种类型的内核线程太多是一个错误,已在https://access.redhat.com/solutions/1404313通过勘误表https://rhn.redhat.com/errata/RHSA-2016-2574.html并在或之后修复kernel-3.10.0-514。 RedHat 于 2016 年 11 月发布了此内容,因此我确信它现在可以在 CentOS 中使用。

更新内核并重新启动。您应该看到正常的线程数rcous。在我的例子中,正常值实际上是 0,低于 6 核虚拟机上的大约 95。

答案3

在vmware中解决此问题的另一种方法:

关闭虚拟机。

编辑设置 > 选项 > 高级 > 内存/CPU 热插拔

在“CPU 热插拔”中,禁用“此虚拟机的 CPU 热插拔”。

打开。

问题解决了。

相关内容