나는 이것을 사용하여 top
전체 실시간 CPU 및 메모리 사용량
은 물론 nload
전체 실시간 대역폭 사용량을 확인할 수 있다는 것을 알고 있습니다.
하지만 프로그램이 실행된 후 최대(또는 평균) CPU, 메모리 및 대역폭 사용량을 보고 싶습니다. 프로그램 시간을 추정할 때
와 마찬가지로 .time my_command
Linux/Unix에서 이 작업을 수행하는 쉬운 방법이 있습니까?
답변1
시스템이 프로세스 계정을 지원하고 계정이 활성화된 경우 RedHat Linux 등의 프로세스 계정 파일에서 레코드를 사용할 수 있습니다.
$ grep -q BSD_PROCESS_ACCT=y /boot/config-* && echo hooray
hooray
$ sudo touch /var/log/pacct
$ sudo accton /var/log/pacct
$
...
$ sudo accton # turn it off
파일을 구문 분석하는 것은 acct(5)
독자의 연습 과제로 남겨집니다.
그러나 이는 전역적이므로 새로운 프로세스 생성으로 인해 로드가 많은 시스템에는 적합하지 않을 수 있습니다. 각 프로세스에 대해 호출은 관심 있는 하위 프로세스에 대해 보고하는 getrusage(2)
플래그가 있는 래퍼를 통해 CPU 및 메모리 통계를 생성해야 합니다 .RUSAGE_CHILDREN
특히 프로세스별로 네트워크 대역폭을 확보하기가 더 어려울 수 있습니다.
DTrace 또는길관심이 있을 수도 있습니다.