Понимание MaxRSS из SLURM

#slurm

#slurm

Вопрос:

Я думал MaxRSS , что это было использовано для понимания требований к памяти SLURM для заданий; однако теперь я задаю себе вопрос.

Я получил уведомление SLURM о том, что моя работа не удалась.

SLURM Job_id=7347729 Name=job.cph.proband завершен, время выполнения 00:01:21, OUT_OF_MEMORY

Раньше я sacct проверял, почему задание завершилось неудачей; однако, похоже, что оно завершилось неудачей с ошибкой ООМ. Это странно, поскольку похоже, что он пытался использовать только 1.61 Gb запрошенный 3 Gb (показанный как 2.93 здесь).

Либо мое понимание MaxRSS неверно, либо эта работа не выполняется по другой причине?

Ответ №1:

В этом вики-сообщении предполагается, что диспетчер заданий может недостаточно быстро получать данные об использовании, чтобы отслеживать всплеск использования памяти, чтобы sacct инструмент дал вам конкретный ответ:

Механизм учета SLURM основан на опросе и не всегда улавливает всплески использования памяти. Реализация FSL использует функцию ядра Linux под названием «cgroups» для управления использованием памяти и процессора. SLURM настраивает cgroup для задания с соответствующими ограничениями, которые строго соблюдает ядро Linux.

Проблема проста: ядро убило процесс из-за задания-нарушителя, а механизм учета SLURM не провел опрос в нужное время, чтобы увидеть всплеск использования, который заставил ядро остановить процесс.

То, что ваш sacct вызов показывает использование 1,6 ГБ непосредственно перед отменой задания объемом 3 ГБ, может указывать на то, как ваш процесс использует память.

Структура данных, используемая вашим процессом, может потребовать изменения размера по мере ее роста. В процессе перераспределения этих данных ваш процесс может временно запросить объем памяти, превышающий тот, который Slurm имеет для этой работы.

В зависимости от реализации std::vector , например, C может попытаться создать временный новый вектор, размер которого в два раза или несколько других кратен размеру, после добавления достаточного количества элементов для копирования данных из старого вектора.

Говоря в общих чертах, без знания каких-либо подробностей о том, что вы используете, временного создания структуры данных размером в два раза больше 1,6 ГБ, по-видимому, будет достаточно, чтобы вызвать отмену задания, в вашем примере, в дополнение к любому уже выделенному пространству.