저는 물리적 서버를 가상 머신(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를 소비하는 이유는 무엇입니까?
- 엔트로피와 엔트로피가 명령 실행에 어떤 역할을 하는지 이해하지 못할 수도 있습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? (해당되지 않는 결과가 많이 검색되었습니다.)