Как мне найти процессы, связанные с заданием sbatch? - PullRequest
1 голос
/ 09 апреля 2020

Когда я запускаю задание с sbatch в многоузловой системе, некоторые процессы запускаются на задействованных узлах.

Как я могу узнать процессы (ID процесса), которые выполняются на этих узлах, которые были запущены из-за запуска sbatch?

Я проверил документацию по slurm, но не нашел любая команда, которая показывает вовлеченные процессы (например, scontrol или sstat).

Идея состоит в том, чтобы найти идентификатор процесса, а затем использовать инструменты Linux для отладки процессов, которые «зависли» (т.е. нет вывода et c), и, возможно, выяснить, что делает этот конкретный процесс.

1 Ответ

2 голосов
/ 11 апреля 2020

То, что вы ищете, это scontrol listpids. На странице руководства scontrol :

listpids [job_id [.step_id]] [NodeName]

Распечатайте список идентификаторов процесса на шаге задания (если JOBID.STEPID предоставляется), или все этапы задания в задании (если задан идентификатор_топа), или все этапы задания во всех заданиях на локальном узле (если задание_представителя не указано или задано значение "*" ). Это будет работать только с процессами на узле, на котором запущен scontrol, и только для процессов, порожденных Slurm и их потомками. Обратите внимание, что некоторые конфигурации Slurm (значение pgid в ProctrackType) не могут идентифицировать все процессы, связанные с заданием или шагом задания. Обратите внимание, что опция NodeName действительно полезна, только если на одном хост-компьютере запущено несколько демонов slurmd. Несколько демонов slurmd на одном хосте, как правило, используются только разработчиками Slurm.

Просто S SH для вычислительного узла и запуска scontrol listpids. Он выведет таблицу с соответствиями PID / JOBID.

[root@node003 ~]# scontrol listpids | column -t
PID     JOBID     STEPID      LOCALID  GLOBALID
269852  68706234  batch       0        0
269998  68706234  batch       -        -
[etc.]

Я использую здесь команду column, чтобы лучше выровнять столбец и облегчить чтение.

...