在来自 rngd 的 rhel 7 虚拟机上执行脚本时 CPU 使用率较高

在来自 rngd 的 rhel 7 虚拟机上执行脚本时 CPU 使用率较高

我正在将物理服务器移动到虚拟机 (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 盒子本身的配置是否正确,但我的问题是:

  1. 如何确保 virtio_rng 在虚拟环境中正确设置?
  2. 为什么这样一个不使用随机数的简单脚本会访问 rngd 并消耗基本上整个 CPU?
  3. 我可能不理解熵以及它在执行命令时如何发挥作用。有人能指出我正确的方向吗? (google了很多不适用的结果)

相关内容