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ゲストのCPU数を1に減らしましたが、rcuosとrcuobの数は依然として128です。
maxcpus=0
その後、sとsの数を1に減らすカーネルブートパラメータを追加しましたが、仮想マシンにさらにコアを割り当てる必要がありました。コアを1つだけ使用すると、アプリケーションのパフォーマンスが40%低下します。rcuos
rcuob
答え1
Linuxカーネルとそれを調整する方法についての私の知識は非常に限られています。別のカーネルブートパラメータnr_cpusを公開し、偶然発見した後、引き続きインターネット検索を行いました。ここ仮想マシンでこれを2(CPU数)に設定すると、2つのrcuosプロセスとrcuocプロセスのみが表示されるようになりました。
これは私にとって効果的です。
編集する
/etc/default/grubそして追加してください
プロセッサ数=2GRUB_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コアVMの約95未満です。
答え3
vmwareでこの問題を解決するもう1つの方法は次のとおりです。
仮想マシンを終了します。
設定の編集>オプション>詳細>メモリ/ CPUホットプラグ
CPUホットプラグでこの仮想マシンのCPUホットプラグを無効にします。
開いている。
問題が解決しました。