프로세스 트리란 프로세스와 그것이 어떤 방식으로든 실행되는 모든 것을 의미합니다.
나는 그것을 시도했지만 /usr/bin/time -v
완전히 잘못된 것으로 나타났습니다. 예를 들어, npm test
14GiB의 여유 RAM과 8GiB의 무료 스왑으로 프로젝트 중 하나를 실행하면 OOM 킬러가 내 애플리케이션(가장 일반적으로 브라우저 및 IDE)을 종료하기 시작합니다. time
보고된 바에 따르면 800MiB만 사용했지만 실제 메모리 소비량은 20GiB 이상으로 매우 높아야 합니다.
답변1
먼저 개요 를 작성하는 데 사용할 smem
수 있는 .smem -tas uss
-t
...전체 표시-a
...열 너비 자동 조정-s uss
...다음을 기준으로 결과 정렬항공모함기둥
pmap
각 프로세스의 세부 사항을 보려면 스위치를 사용하는 것이 가장 좋습니다 -X
. 커널이 제공하는 모든 정보를 얻으려면 -XX
일반적으로 이는 과잉입니다.
2초 새로 고침 모니터링 받기PID3120:
watch -n 2 pmap -X 3120
편집 : 실제로 정점에 도달하려면 위 내용은 모니터링에 도움이 되지만 실제 피크를 표시하지는 않습니다. 잊어버렸어요.
저는 개인적으로 valgrind
이 massif
도구를 사용합니다.
valgrind --tool=massif --pages-as-heap=yes --massif-out-file=evolution_massif.out evolution; grep mem_heap_B evolution_massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1
설명하다:
--page-as-heap=yes
...Massif에게 힙뿐만 아니라 모든 메모리를 차지해야 한다고 지시합니다.--massif-out-file
출력 파일구성도구- 진화...모니터링해야 하는 애플리케이션
다음 부분은 최대 레코드 수를 찾는 것입니다.
검색 횟수 grep
는메모리 힙 B발생하다. sed -e
문자열을 제거 mem_heap_B
하면 숫자 결과만 얻을 수 있습니다. 범용 숫자 정렬로 정렬 sort -g
하고 가장 큰 숫자를 가져 tail -n 1
와서 정렬된 숫자의 첫 번째 행을 반환합니다.
응용 프로그램이 종료되면 valgrid
[B]ytes 단위의 최대 메모리인 숫자가 인쇄됩니다.
메모리 피크 기록 확인
출력 파일 표시진화_massif.outms_print
, Massif의 후처리 도구를 사용할 수 있습니다 .
매우 간단합니다:
ms_print evolution_massif.out
출력은 다음과 같아야 합니다(출력의 첫 번째 페이지). 여기서 어떤 스냅샷이 최고인지 확인할 수 있습니다.10(피크):
--------------------------------------------------------------------------------
Command: evolution
Massif arguments: --pages-as-heap=yes --massif-out-file=massif.out
ms_print arguments: massif.out
--------------------------------------------------------------------------------
GB
10.09^ #
| #
| #
| #
| #
| #
| # @:::::@::::::::::::::::@@:::::@:::::@::::::@::::@:::::@::
| # @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::::@:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| @ #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
| :::@::#::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
0 +----------------------------------------------------------------------->Gi
0 8.927
Number of snapshots: 97
Detailed snapshots: [7, 10 (peak), 17, 24, 43, 44, 50, 60, 70, 80, 90]
--------------------------------------------------------------------------------
n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
0 0 16,384 16,384 0 0
1 149,772,704 393,547,776 393,547,776 0 0
2 243,902,287 398,592,800 398,592,800 0 0
3 396,613,298 558,157,704 558,157,704 0 0
4 504,752,503 638,138,760 638,138,760 0 0
5 604,812,936 639,894,808 639,894,808 0 0
...
모든 자녀를 추가하려면 수정하세요.:
모든 하위 항목(자식)을 추가하려면 명령 --trace-children=yes
에 이 옵션을 추가 하면 됩니다 .valgrind