파일 시스템 작업에 대한 CPU 사용량이 상단에 표시되지 않습니다.

파일 시스템 작업에 대한 CPU 사용량이 상단에 표시되지 않습니다.

lsUbuntu Linux 터미널에서 다음 명령을 실행(10,000회)하고 이를 사용하여 topCPU 사용량을 모니터링했습니다. top총 CPU 사용량(라인 2)은 약 48%(사용자 13.1% + 코어 34.9%)로 표시되지만 아래 목록에는 올바른 CPU 사용량이 반영되지 않습니다 . CPU의 6.5%만이 bash 프로세스와 관련되어 있습니다. 참고: Irix 모드를 꺼두었으므로 6.5%는 행 2와 같습니다.

for i in {1..10000}; do (ls /tmp/ >/dev/null); done

상단 스크린샷

또한 "커널 스레드 숨기기" 옵션을 선택 취소해 보았지만 htop동일한 결과를 얻었습니다.

시스템의 어떤 부분이 CPU(코어?)를 사용하고 있으며 왜 top/hidden 입니까 htop?

답변1

수명주기가 매우 짧은 많은 프로세스를 실행하고 있습니다. 최상위 출력에서는 그 중 많은 것을 볼 수 없습니다.

Top은 정기적인 간격(보통 초당 1회)으로 시스템 활동을 측정합니다. 새로 고칠 때마다 프로세스 목록을 살펴보고 각 프로세스에 대한 통계를 수집합니다. 스케줄러의 운에 따라 ls이 시점에는 프로세스가 0개 또는 1개 있을 수 있습니다. 프로세스가 top표시되지 않으면 표시 ls되지 않습니다. top프로세스가 표시 되더라도 통계를 얻는 것은 원자적이지 않습니다 . 프로세스가 열거되는 시간과 프로세스의 통계를 읽는 시간 사이에 ls프로세스가 종료되면 프로세스가 표시되지 않습니다. top따라서 일반적으로 나열할 프로세스가 없습니다 ls.

프로세스 가 있더라도 ls프로세스는 오랫동안 실행되지 않으므로 마지막 순간에 차지하는 CPU 사용량은 무시할 수 있습니다. 아마도 목록의 맨 아래 어딘가에 있을 것입니다.

CPU 사용량은 자동으로 측정되지 않고 근사치일 뿐이므로 커널에서 수집한 총 CPU 사용량 통계가 프로세스별로 수집된 사용량 통계의 합계와 항상 일치하는 것은 아닙니다. 이러한 합계는 충분히 오래 실행되는 프로세스에 대해서는 일치하지만, 이 예에서 볼 수 있듯이 수명이 짧은 프로세스가 있는 경우 크게 다를 수 있습니다.

관련 정보