프로그램을 실행한 후 프로그램의 가장 높은 리소스 사용량(CPU, 메모리 또는 대역폭)을 쉽게 확인할 수 있는 방법이 있습니까?

프로그램을 실행한 후 프로그램의 가장 높은 리소스 사용량(CPU, 메모리 또는 대역폭)을 쉽게 확인할 수 있는 방법이 있습니까?

나는 이것을 사용하여 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 또는관심이 있을 수도 있습니다.

관련 정보