Узнайте время процессора и использование памяти для работы с грязью

Я предполагаю, что это довольно тривиальный вопрос, но, тем не менее, я ищу (сакрально, я полагаю) команду, которая будет отображать процессорное время и память, используемую идентификатором задания slurm.

7 ответов

Решение

Вы правы в том, что священная команда - это то, что вы ищете. Переключатель --format является другим ключевым элементом. Если вы запустите эту команду:

sacct -e

вы получите распечатку различных полей, которые можно использовать для ключа --format. Подробная информация о каждом поле описана в разделе "Поля учетной записи" справочной страницы. Что касается времени процессора и памяти, CPUTime и MaxRSS, вероятно, то, что вы ищете. cputimeraw также можно использовать, если вы хотите число в секундах, в отличие от обычного формата времени Slurm.

sacct --format="CPUTime,MaxRSS"

Другой отвечает на все форматы детализации для вывода sacct, который отлично подходит для просмотра нескольких заданий, агрегированных в таблице.

Однако иногда вы хотите рассмотреть конкретную работу более подробно, чтобы вы могли определить, эффективно ли ваша работа использовала выделенные ресурсы. Для этого, seff это очень полезно. Синтаксис просто seff <Jobid>, Например, вот моя недавняя работа (которая провалилась):

$ seff 15780625

Job ID: 15780625
Cluster: mycluster
User/Group: myuser/mygroup
State: OUT_OF_MEMORY (exit code 0)
Nodes: 1
Cores per node: 16
CPU Utilized: 12:06:01
CPU Efficiency: 85.35% of 14:10:40 core-walltime
Job Wall-clock time: 00:53:10
Memory Utilized: 1.41 GB
Memory Efficiency: 70.47% of 2.00 GB

Обратите внимание, что ключевая метрика ЦП, CPU Utilized, соответствует полю TotalCPU из sacct, в то время как используемая память соответствует MaxRSS.

sacct действительно команда, используемая для готовых заданий. Для запуска рабочих мест, вы можете посмотреть на sstat команда.

@aaron.kizmiller прав, sacct это команда для использования.

Можно получить все следующие поля, передав их в saact --format="field,field"

Поля:

Account           AdminComment      AllocCPUS         AllocGRES
AllocNodes        AllocTRES         AssocID           AveCPU
AveCPUFreq        AveDiskRead       AveDiskWrite      AvePages
AveRSS            AveVMSize         BlockID           Cluster
Comment           ConsumedEnergy    ConsumedEnergyRaw CPUTime
CPUTimeRAW        DerivedExitCode   Elapsed           ElapsedRaw
Eligible          End               ExitCode          GID
Group             JobID             JobIDRaw          JobName
Layout            MaxDiskRead       MaxDiskReadNode   MaxDiskReadTask
MaxDiskWrite      MaxDiskWriteNode  MaxDiskWriteTask  MaxPages
MaxPagesNode      MaxPagesTask      MaxRSS            MaxRSSNode
MaxRSSTask        MaxVMSize         MaxVMSizeNode     MaxVMSizeTask
McsLabel          MinCPU            MinCPUNode        MinCPUTask
NCPUS             NNodes            NodeList          NTasks
Priority          Partition         QOS               QOSRAW
ReqCPUFreq        ReqCPUFreqMin     ReqCPUFreqMax     ReqCPUFreqGov
ReqCPUS           ReqGRES           ReqMem            ReqNodes
ReqTRES           Reservation       ReservationId     Reserved
ResvCPU           ResvCPURAW        Start             State
Submit            Suspended         SystemCPU         Timelimit
TotalCPU          UID               User              UserCPU
WCKey             WCKeyID           WorkDir

Например, чтобы вывести список всех идентификаторов заданий, прошедшего времени и максимального размера виртуальной машины, вы можете запустить:

sacct --format='JobID,Elapsed,MaxVMSize'

Вы можете экспортировать SACCT_FORMAT и просто введите sacct каждый раз.

      $ export SACCT_FORMAT="JobID%20,JobName,User,Partition,NodeList,Elapsed,CPUTime,State,AllocTRES%32"
$ sacct
               JobID    JobName      User  Partition        NodeList    Elapsed    CPUTime      State                        AllocTRES 
-------------------- ---------- --------- ---------- --------------- ---------- ---------- ---------- -------------------------------- 
            249527_4   xgb_tune    zhaoqi         cn            cn12   00:26:50 1-11:46:40    RUNNING billing=80,cpu=80,mem=100G,node+ 
            249527_1   xgb_tune    zhaoqi         cn            cn09   00:26:50 1-11:46:40    RUNNING billing=80,cpu=80,mem=100G,node+ 
            249527_2   xgb_tune    zhaoqi         cn            cn10   00:26:50 1-11:46:40    RUNNING billing=80,cpu=80,mem=100G,node+ 
            249527_3   xgb_tune    zhaoqi         cn            cn11   00:26:50 1-11:46:40    RUNNING billing=80,cpu=80,mem=100G,node+ 

ссылка: https://docs.ycrc.yale.edu/clusters-at-yale/job-scheduling/resource-usage/

Хотя фантастические решения уже существуют, я разделяю другую точку зрения.

Этот метод позволяет осуществлять мониторинг множества узлов в реальном времени.

Мы можем написать сценарий monitor.sh чтобы получить статистику (например, память), затем записать ее в файл.

#! /bin/sh
if [ -f "./free.log_"`hostname` ];then
    echo "file existed , now deleting it !"
    rm ./free.log_`hostname`
fi
echo "start recording!"

while true
do
    echo "******["`date +%Y-%m-%d_%H:%M:%S`"]******" >> free.log_`hostname`
    free -s 1 -c 2 -h|sed -n 1,2p >> free.log_`hostname`
done

Затем напишите сценарий своей работы sbatch_input.sh, который может быть вызван sbatch.

#! /bin/sh
#SBATCH -N 2
#SBATCH -p cnall
srun hostname
srun ./monitor.sh

Вызов сценария

sbatch ./sbatch_input.sh

Мы можем видеть какой-то журнал.

      sacct -a -j <job_id> --format=user%10,jobname%10,node%10,start%10,end%10,elapsed%10,MaxRS

используйте команду sacctчтобы получить доступ к истории завершенных работ slurm

за <job_id>, тогда это относится к идентификатору задания slurm, это --format=указать различные детали для отображения, в каком формате:

  • в user: пользователь запускает задание
  • в jobname: имя задания или процесса
  • в node: это, чтобы указать, на какой машине была выполнена работа
  • в startа также endпоследовательно указывают даты начала и окончания работы
  • за elapsedречь идет о времени выполнения задания или процесса,
  • а также MaxRSдля максимального процессора, используемого для выполнения работы
  • за %он используется для определения того, сколько символов необходимо выделить для печати данной информации (например, имя задания% 25: имя задания будет отображаться в 25 символах)
Другие вопросы по тегам