Это вывод моей команды nvidia-smi, я хочу проанализировать ее вывод и уничтожить все процессы python, которые выполняются на GPU. Я уже знаю, как убить все процессы Python с помощью следующего сценария, который я написал.

kall () {
    pgrep $1 | xargs kill -9
}

И теперь я хочу уничтожить все процессы (получить номер PID), использующие графический процессор, поэтому я хочу проанализировать вывод nvidia-smi.

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.27                 Driver Version: 367.27                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    Off  | 0000:01:00.0      On |                  N/A |
|  0%   46C    P2    40W / 166W |   4902MiB /  8112MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0       917    G   /usr/lib/xorg/Xorg                             209MiB |
|    0      1683    G   compiz                                         159MiB |
|    0      3780    G   ...UI2016Q2,UsePasswordSeparatedSigninFlow<P   130MiB |
|    0     25962    C   python                                        2199MiB |
|    0     26103    C   python                                        2201MiB |
+-----------------------------------------------------------------------------+
0
xxx222 11 Дек 2016 в 00:05

3 ответа

Лучший ответ

Отфильтруйте вывод вашей команды с помощью awk. Если 4-е поле «G», выведите PID (3-е поле)

nvidia-smi | awk '$4=="G" {print $3}' | xargs kill -9

РЕДАКТИРОВАТЬ: немного неправильно понял, что вы хотели. Если вы хотите уничтожить процессы Python, которые делают ваши списки инструментов (как вы исправили сами):

nvidia-smi | awk '$5=="python" {print $3}' | xargs kill -9
1
Jean-François Fabre 10 Дек 2016 в 21:49

Предполагая, что вывод такой же, как и выше, можно использовать следующий скрипт awk:

$ awk '$2$3 ~ /^[0-9]+$/{print $3}' input
917
1683
3780
25962
26103

Выше предполагается, что только процессы будут содержать цифры только во втором и третьем столбцах.

1
andlrc 10 Дек 2016 в 21:35

Вы можете получить нужный вывод из утилиты nvidia-smi напрямую с

$ nvidia-smi --query-compute-apps=pid --format=csv,noheader
917
1683
3780
25962
26103

Смотрите man-страницу nvidia-smi --help-query-compute-apps для получения дополнительной информации о запросах, связанных с приложениями, запущенными на gpu (s).

0
Maxim 7 Сен 2019 в 01:48