Linux에서 프로그램의 실제 메모리 및 CPU의 총 사용량 확인

Linux에서 프로그램의 실제 메모리 및 CPU의 총 사용량 확인

Google Chrome과 Firefox가 사용하는 실제 메모리와 CPU 성능을 비교하고 싶습니다. 그래서 나는 시스템 자원을 추적하기 위해 주로 사용하는 htop을 사용하여 이 작업을 시도했지만 결론을 내릴 수 없다는 것을 알게 되었습니다. 여러 스레드를 읽었지만 여전히 혼란스럽습니다. 예를 들어 크롬에서 F4로 필터링하면 htop은 스레드인지 프로세스인지 알 수 없는 수십 개의 작업을 표시합니다. AFAIK 스레드는 동일한 주소 공간을 공유하지만 프로세스는 공유하지 않습니다. F5 키를 눌러 트리 보기를 볼 수 있으며 모든 작업에 대해 하나의 상위 항목이 있습니다. RES 열의 상위 작업 값이 전체 메모리를 제공하고 CPU% 열의 값이 이 프로그램이 여러 프로세스나 스레드를 사용하는지 여부에 관계없이 이 프로그램의 총 CPU 사용량을 제공한다는 가정은 명백히 잘못된 것입니다. 나는 이 작은 실험을 통해 그것을 발견했습니다. 나는 일부 계산에 다중 처리를 사용하는 Python 프로그램을 실행했습니다. 이것이 제가 htop에서 본 것입니다. CPU% 열의 상위 값은 항상 0으로 표시되지만 최대 100%까지 올라가는 작업이 7개 있습니다(내 시스템에는 각각 2개의 스레드가 있는 4개의 물리적 코어가 있습니다).

그렇다면 누군가 무슨 일이 일어나고 있는지 설명하고 프로그램의 실제 메모리와 CPU의 총 사용량을 어떻게 확인할 수 있습니까?

내가 읽은 바에 따르면 정확한 메모리 사용량을 결정하는 것은 간단하지 않지만 제 경우에는 절대값이 중요하지 않습니다. 비교에 사용할 수 있는 값만 있으면 됩니다.

답변1

다음 명령을 사용할 수 있습니다:

pgrep -P $(pgrep chrome) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'

또는 다음 중 하나(열을 선택하려면 $9를 변경하세요):

top -b -n1 | grep chrome | awk '{ SUM += $9} END { print SUM }'

더 많은 명령과 조언은 다음에서 찾을 수 있습니다.

답변2

psgrep에서 오류가 발생합니다.

$ pgrep -P $(pgrep chrome) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
pgrep: only one pattern can be provided
Try `pgrep --help' for more information.
error: list of process IDs must follow -p

Usage:
ps [options]

Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.

For more details see ps(1).

htop을 사용하여 PID 상위 작업을 확인하고 다음을 수행할 수 있습니다.

$ pgrep -P 1721 | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
1.2 2.6

하지만 1.2% 메모리는 너무 낮은 것 같습니다.

top은 모든 것을 계산하지 않습니다. 예: $ top -b -n1 | grep 프리플레인 | awk '{ SUM += $9} END { print SUM }' 다음 명령만 가져오므로 0을 얻습니다: /usr/share/freeplane/freeplane.sh 그러나 이 명령은 가져오지 않습니다: /usr/sbin/java -Xmx512m - Dorg.freeplane

ps auxf는 모든 것을 계산하는 것 같고 크롬의 경우 다음과 같이 표시됩니다.

$ ps auxf | grep chrome | awk '{ SUM += $4} END { print SUM }'
5.024G

그게 더 현실적일 것 같습니다. 사용된 메모리를 측정하면 다음과 같습니다.

$ free -h

Chrome을 닫기 전후에 2.4Gi 차이가 나타납니다.

편집: 각 응용 프로그램의 메모리 사용량을 확인하고 비교하는 것이 정말 쉬운 ps_mem을 찾았습니다.

관련 정보