CPU 사용량은 결코 100%가 될 수 없습니다.

CPU 사용량은 결코 100%가 될 수 없습니다.

6개의 Handbrake 인스턴스에서 비디오를 인코딩했는데 CPU 사용량이 85%를 넘지 않았습니다. 문제를 진단하는 이유/방법은 무엇입니까?

답변1

모든 비대화형 컴퓨팅 작업은 결국 일부 리소스가 100% 활용되고 다른 리소스가 완전히 활용되지 않는 병목 현상을 발견하게 됩니다.

여기에 관련된 일반적인 리소스는 CPU, 버스 대역폭, 메모리 대역폭 및 디스크 대역폭입니다. 시스템이 더 복잡하다면 더 많은 것이 있을 수 있습니다(예: GPU 사용률, GPU 대역폭). 또한 버스 대역폭과 메모리 대역폭은 동일할 수 있습니다.

또한 디스크 I/O와 CPU 사용량은 상호 의존적일 수 있으므로 디스크에서 데이터가 로드될 때까지 CPU는 작업을 시작할 수 없으며 CPU가 새 데이터 컴퓨팅을 완료할 때까지 디스크 쓰기가 시작되지 않습니다. 이 경우 애플리케이션의 도움을 받아 향후 읽기를 예측하고 데이터를 사전 버퍼링하거나 데이터가 완전히 기록되기 전에 새 계산을 시작하면 성능 향상에 도움이 될 수 있습니다. 또는 서로 종속되지 않은 여러 인스턴스를 실행하면 한 인스턴스가 CPU를 사용하고 다른 인스턴스는 디스크 I/O를 수행할 수 있습니다.

CPU 활용도가 85%에 불과한 경우 디스크 대역폭을 완전히 활용하거나 디스크 버퍼링이 부족하여 CPU가 작동하지 않을 수 있습니다. Linux에서는 atop디스크 대역폭 확인과 같은 도구를 사용할 수 있습니다 . 아직 100%가 아니라면 다른 인스턴스를 추가해 보고 별도의 인스턴스에서 CPU와 디스크를 병렬로 사용하여 차이를 보완할 수 있기를 바랍니다. 그러나 아마도 그렇지 않을 것이며 아마도 상황이 더 빨라지지 않을 것입니다.

답변2

커널은 장치가 데이터를 읽거나 쓸 때까지 기다리면 CPU 사용을 일시 중지합니다. 현재 장치 작업이 계속 실행되는 동안 이러한 모든 프로세스는 결국 중지됩니다.

관련 정보