Структура БД Slurm

Большинство таблиц содержат колонки: время создания, время модификации, признак удаления - creation_time, mod_time, deleted.

tres_table Словарь ресурсов TRES

  • creation_time
  • deleted
  • id Числовой идентификатор - ключ
  • type Тип ресурса
  • name Имя

Для резервирования первых 999 id под системные нужды в таблицу внесена запись id=1000, type=dynamic_offset, помеченная как удаленная. При обращении из sreport к пользовательским TRES, tres type пишется заглавными буквами:

 sreport cluster AccountUtilizationByUser  start=2019-04-01 end=2019-05-21 --tres=GRES/gpu

acct_table Таблица учетных групп

  • name,description,organization

user_table Таблица пользователей

  • name, admin_level

super_assoc_table Таблица ассоциаций пользователь-учетная группа на кластере

  • id_assoc - уникальный номер
  • deleted - операция acctmgr remove удаляет запись, если она была создана несколько минут назад, иначе помечает, как удаленную.
  • user,acct - пара пользователь-учетная группа. У учетной группы поле user пустое, поле acct пустым не бывает.
  • parent_acct - родительская учетная группа. Бывает только у учетной группы.
  • lft,rgt - загадочные поля.

super_job_table Таблица заданий на кластере super

  • job_db_inx - уникальный индекс. Введён, поскольку id_job назначается за пределами DB.
  • id_job - числовой id задачи
  • account - текстовое имя учетной группы. Используется sacct при формировании списка заданий учетной группы.
  • id_assoc - номер ассоциации
  • id_user, id_group - системные UID,GID без привязки к assoc_table
  • nodelist - список узлов в формате slurm (node[3-5,7]). Есть особое значение 'None assigned'
  • nodes_alloc - число узлов
  • node_inx - список узлов в виде их числовых индексов (3-5,108-212)
  • work_dir - рабочий каталог. Поле появилось с какой то версии Slurm. До того пустой.
  • time_submit, time_start, time_end - времена в формате unix timesatmp.
    В SQL функция UNIX_TIMESTAMP('2018-09-01 12:00:00'). Обратное преобразование FROM_UNIXTIME(1447430881);
  • state - числовое значение состояния задачи

Значения state

enum job_states {
  JOB_PENDING,   /* queued waiting for initiation */
  JOB_RUNNING,   /* allocated resources and executing */
  JOB_SUSPENDED, /* allocated resources, execution suspended */
  JOB_COMPLETE,  /* completed execution successfully */
  JOB_CANCELLED, /* cancelled by user */
  JOB_FAILED,    /* completed execution unsuccessfully */
  JOB_TIMEOUT,   /* terminated on reaching time limit */
  JOB_NODE_FAIL, /* terminated on node failure */
  JOB_PREEMPTED, /* terminated due to preemption */
  JOB_BOOT_FAIL, /* terminated due to node boot failure */
  JOB_DEADLINE,  /* terminated on deadline */
  JOB_OOM,       /* experienced out of memory error */
  JOB_END        /* not a real state, last entry in table */
};

super_step_table Таблица параллельных задач (step), сформированных командами srun в рамках одного задания. Один srun - одна задача (step).

  • job_db_inx - связь с таблицей job_table
  • id_step - номер шага от 0 и далее, -2 - особый случай batch - формируется через sbatch.
  • time_start, time_end - индивидуальные времена шагов. job.time_start=min(step.time_start), job.time_end=max(step.time_end).
  • task_cnt - количество запущенных srun процессов (каждый из которых может занимать несколько ядер).

Извлечение задач на кластере super по номеру задания

select j.id_job,j.job_name,s.step_name,j.nodelist,s.nodelist,j.nodes_alloc,s.nodes_alloc,s.id_step
   from super_job_table as j
   join super_step_table as s
     on j.job_db_inx=s.job_db_inx
  where j.id_job=24747; 

Задания на кластере super, не сумевшие стартовать задачу

select j.id_job
  from super_job_table as j
  left join super_step_table as s
    on j.job_db_inx=s.job_db_inx
  where s.job_db_inx IS NULL

super_assoc_usage_month/day/hour_table Агрегированные данные по использованию кластера super. Используются при выдаче статистики через sreport. Похоже, что в основном используется таблица super_assoc_usage_day_table

  • creation_time
  • mod_time
  • deleted
  • id - фактически это id_assoc - номер ассоциации
  • id_tres - код ресурса. Берется из таблицы tres_table
  • time_start - время старта задачи, округленное до месяца/дня/часа
  • alloc_secs - выделенное время