[cuda] CUDA를 사용하는 GPU에 대한 top 명령

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 간격)을 사용할 수도 있습니다 .


답변

또 다른 유용한 모니터링 접근 방식은 psGPU 를 사용 하는 프로세스를 필터링 하여 사용 하는 것입니다. 나는 이것을 많이 사용합니다.

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-smiGPU를 사용하는 주요 프로세스뿐만 아니라 프로세스 포크를 표시한다는 것입니다.

그러나 한 가지 단점은 명령을 실행하는 사용자가 소유 한 프로세스로 제한된다는 것입니다. 다른 사용자가 소유 한 모든 프로세스에를 열려면, 나는를 추가 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