我正在将物理服务器移动到虚拟机 (rhel 7.3),在运行相当基本的脚本时,我注意到我正在执行的操作的 CPU 使用率非常高。经过一番调查后,我发现如果我运行任何脚本,rngd 会消耗大约 30% 的 CPU(30% 超过 4 个核心,所以本质上是一个完整的核心)。表现出这种行为的测试脚本就像这样简单......
#!/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 使用了 virtio_rng,一个将基于硬件的 rng 暴露给 VM 的内核模块,并且加载了该模块。我无法检查 esxi 盒子本身的配置是否正确,但我的问题是:
- 如何确保 virtio_rng 在虚拟环境中正确设置?
- 为什么这样一个不使用随机数的简单脚本会访问 rngd 并消耗基本上整个 CPU?
- 我可能不理解熵以及它在执行命令时如何发挥作用。有人能指出我正确的方向吗? (google了很多不适用的结果)