cuda 및 MPI를 사용하는 프로세스를 모니터링하려고합니다. 이렇게 할 수있는 방법이 있습니까? “top”명령과 같은 것이지만 GPU도 모니터링합니까?
답변
내가 찾을 수 gpustat 매우 유용합니다. In은와 함께 설치할 수 있으며 pip install gpustat
프로세스 또는 사용자 별 사용 내역을 인쇄합니다.
답변
사용 된 리소스에 대한 실시간 통찰력을 얻으려면 다음을 수행하십시오.
nvidia-smi -l 1
이것은 매초마다 뷰를 반복하고 호출합니다.
콘솔 기록에서 루프 된 통화의 과거 추적을 유지하지 않으려면 다음을 수행 할 수도 있습니다.
watch -n0.1 nvidia-smi
여기서 0.1은 시간 간격 (초)입니다.
답변
이 정보를 결합하는 것은 알지 못하지만 nvidia-smi
도구를 사용 하여 원시 데이터를 가져올 수 있습니다 (-l에 대한 팁에 대해 @jmsu에게 감사드립니다).
$ nvidia-smi -q -g 0 -d UTILIZATION -l
==============NVSMI LOG==============
Timestamp : Tue Nov 22 11:50:05 2011
Driver Version : 275.19
Attached GPUs : 2
GPU 0:1:0
Utilization
Gpu : 0 %
Memory : 0 %
답변
여기 에서 안정적인 최신 CUDA 드라이버 (4.2)를 다운로드하여 설치 합니다 . Linux에서 nVidia-smi 295.41은 원하는 것을 제공합니다. 사용 nvidia-smi
:
[root@localhost release]# nvidia-smi
Wed Sep 26 23:16:16 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.295.41 Driver Version: 295.41 |
|-------------------------------+----------------------+----------------------+
| Nb. Name | Bus Id Disp. | Volatile ECC SB / DB |
| Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. |
|===============================+======================+======================|
| 0. Tesla C2050 | 0000:05:00.0 On | 0 0 |
| 30% 62 C P0 N/A / N/A | 3% 70MB / 2687MB | 44% Default |
|-------------------------------+----------------------+----------------------|
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0. 7336 ./align 61MB |
+-----------------------------------------------------------------------------+
편집 : 최신 NVIDIA 드라이버에서이 지원은 Tesla 카드로 제한됩니다.
답변
“–query-compute-apps =”인수 사용
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
추가 도움이 필요하면 다음을 따르십시오.
nvidia-smi --help-query-compute-app
답변
를 사용 watch nvidia-smi
하면 기본적으로 2 초 간격으로 메시지가 출력됩니다.
예를 들어, 아래 이미지와 같이 :
watch -n 5 nvidia-smi
(-n 5 x 5s 간격)을 사용할 수도 있습니다 .
답변
또 다른 유용한 모니터링 접근 방식은 ps
GPU 를 사용 하는 프로세스를 필터링 하여 사용 하는 것입니다. 나는 이것을 많이 사용합니다.
ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`
그러면 모든 nvidia GPU 활용 프로세스와 이에 대한 몇 가지 통계가 표시됩니다. lsof ...
현재 사용자가 소유 한 nvidia GPU를 사용하여 모든 프로세스 목록을 검색하고 해당 프로세스에 대한 결과를 ps -p ...
표시 ps
합니다. ps f
자식 / 부모 프로세스 관계 / 계층에 대한 멋진 형식을 표시 -o
하고 사용자 지정 형식을 지정합니다. 그건 그냥하는 것과 비슷합니다ps u
하지만 프로세스 그룹 ID를 추가하고 다른 필드를 제거합니다.
이것의 한 가지 장점은 nvidia-smi
GPU를 사용하는 주요 프로세스뿐만 아니라 프로세스 포크를 표시한다는 것입니다.
그러나 한 가지 단점은 명령을 실행하는 사용자가 소유 한 프로세스로 제한된다는 것입니다. 다른 사용자가 소유 한 모든 프로세스에를 열려면, 나는를 추가 sudo
전과 lsof
.
마지막으로 watch
계속 업데이트하기 위해 함께 결합합니다 . 따라서 결국 다음과 같이 보입니다.
watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`'
다음과 같은 출력이 있습니다.
Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi... Mon Jun 6 14:03:20 2016
USER PGRP PID %CPU %MEM STARTED TIME COMMAND
grisait+ 27294 50934 0.0 0.1 Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623
grisait+ 27294 50941 0.0 0.0 Jun 02 00:00:00 \_ /opt/google/chrome/chrome --type=gpu-broker
grisait+ 53596 53596 36.6 1.1 13:47:06 00:05:57 python -u process_examples.py
grisait+ 53596 33428 6.9 0.5 14:02:09 00:00:04 \_ python -u process_examples.py
grisait+ 53596 33773 7.5 0.5 14:02:19 00:00:04 \_ python -u process_examples.py
grisait+ 53596 34174 5.0 0.5 14:02:30 00:00:02 \_ python -u process_examples.py
grisait+ 28205 28205 905 1.5 13:30:39 04:56:09 python -u train.py
grisait+ 28205 28387 5.8 0.4 13:30:49 00:01:53 \_ python -u train.py
grisait+ 28205 28388 5.3 0.4 13:30:49 00:01:45 \_ python -u train.py
grisait+ 28205 28389 4.5 0.4 13:30:49 00:01:29 \_ python -u train.py
grisait+ 28205 28390 4.5 0.4 13:30:49 00:01:28 \_ python -u train.py
grisait+ 28205 28391 4.8 0.4 13:30:49 00:01:34 \_ python -u train.py