私は物理サーバーを仮想マシン(rhel 7.3)に移動しており、かなり基本的なスクリプトの実行中に私がやっている作業のCPU使用率が非常に高いことを発見しました。いくつかの調査の結果、スクリプトを実行すると、rngdがCPUの約30%(4コアで30%、つまり本質的にコア全体)を消費することがわかりました。この動作を示すテストスクリプトは、次のように簡単です。
#!/bin/bash
for i in {1..10000}; do
echo $i > /dev/null
y=$((i+1))
echo $y > /dev/null
echo $y | grep 'orange' > /dev/null
sleep 0.001
done
いくつかの調査を行った結果、vmwareは、ハードウェアベースのrngをVMに公開し、そのモジュールをロードするカーネルモジュールであるvirtio_rngを使用しているようです。 esxiボックス自体が正しく設定されていることを確認できませんが、私の質問は次のようになります。
- 仮想環境でvirtio_rngが正しく設定されているかどうかを確認するには?
- 乱数を使用しないこの単純なスクリプトがrngdにアクセスし、デフォルトでCPU全体を消費するのはなぜですか?
- エントロピーとエントロピーがコマンドの実行にどのような役割を果たしているのか理解できない場合があります。誰もが正しい方向に私を指すことができますか? (該当しない結果がたくさん検索されました。)