差分
このページの2つのバージョン間の差分を表示します。
— |
blog:2021:2021-05-02 [2021-05-02 13:26] (現在) Decomo 作成 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== VMのFreeBSD 13.0Rのrand_harvestqのCPU負荷が高い件 ====== | ||
+ | 家鯖の消費電力がとある時点から急に増えた。その差は実に30Wで明らかに誤差ではない。 | ||
+ | |||
+ | FreeBSDな仮想マシンを起動すると増えるのは明白だったが、原因として思い当たることはなかった。が、ふとProxmox VEのCPU使用率グラフを見たら、FreeBSD 13.0-RELEASEに更新したタイミングでCPU利用率が大幅に上がっているのに気付いた。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | FreeBSD内でtopしても特段高負荷なプロセスはなかったものの、よーく見てみるとSystemが4~5%となっており、何かがCPUを使ってるのは間違いない。そこでtop -SPでシステムの個別の状態を見てみると、'' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | プロセス名から察するに、乱数のエントロピー収穫用のプロセスである。エントロピー収穫の詳細は、手前みそながら[[blog: | ||
+ | |||
+ | 関連するシステム変数を見ても、特に変な個所はなさげ。しいて言えば、乱数源としてVirtIO Entropy Adapter (VirtIO RNG)とIntel Secure Key RNG (RDRAND)の2種類が使われてる点が仮想マシン特有ってところかな。 | ||
+ | < | ||
+ | $ sysctl kern.random | ||
+ | kern.random.fortuna.concurrent_read: | ||
+ | kern.random.fortuna.minpoolsize: | ||
+ | kern.random.rdrand.rdrand_independent_seed: | ||
+ | kern.random.use_chacha20_cipher: | ||
+ | kern.random.block_seeded_status: | ||
+ | kern.random.random_sources: | ||
+ | kern.random.harvest.mask_symbolic: | ||
+ | kern.random.harvest.mask_bin: | ||
+ | kern.random.harvest.mask: | ||
+ | kern.random.initial_seeding.disable_bypass_warnings: | ||
+ | kern.random.initial_seeding.arc4random_bypassed_before_seeding: | ||
+ | kern.random.initial_seeding.read_random_bypassed_before_seeding: | ||
+ | kern.random.initial_seeding.bypass_before_seeding: | ||
+ | </ | ||
+ | |||
+ | で、まぁ、色々と試してみたら、VirtIO Entropy Adapterが高負荷の原因だった。 | ||
+ | |||
+ | その名の通り、VMでホスト側の乱数デバイスを使うための準仮想化デバイスなんだけど、ふつーに考えたら負荷は低くなるハズ。VirtIO RNGの乱数源は''/ | ||
+ | |||
+ | 準仮想化で負荷が高くなっては本末転倒なので、VMからVirtIO RNGを取り除いて運用することにした。FreeBSD側ではIntel Secure Key RNGが動いてるので問題はないでしょう。 | ||
+ | |||
+ | これで消費電力は無事元の水準に戻り、お財布の平和は保たれたのであった。 |