Ограничения PBS на использование ресурсов
- PBS позволяет ограничить максимальное количество определённого ресурса, которое может быть одновременно занято всеми работающими задачами конкретного пользователя. Если запуск очередной задачи приведёт к превышению такого имеющегося ограничения, тогда эта задача не будет запускаться, даже если все необходимые ей ресурсы свободны.
- Задача с запросом ресурсов, превышающим какое-либо действующее ограничение, будет без каких-либо замечаний поставлена командой 'qsub' в очередь, но никогда не запустится, т.к. PBS неспособен предоставить ей запрошенные ресурсы. Такие задачи администраторами ИВЦ НГУ периодически удаляются.
- У нас применяются ограничения как минимум на следующие типы ресурсов:
- Процессорные ядра (ncpus)
- Графические сопроцессоры (ngpus)
- Ограничения бывают глобальными (пременимыми ко всему кластеру) и локальными для какой-то определённой очереди задач.
- Ограничения бывают персональными (применимыми к конкретной учётной записи) или пременимыми ко всем пользователям. Персональные ограничения имеют более высокий приоритет.
- Значения ограничений со временем могут изменяться для управления текущей нагрузкой на кластер. Например:
- Если на кластере интенсивно работает всего несколько пользователей и много свободных ресурсов простаивает (хотя в очереди есть задачи, ожидающие запуска) - тогда значения ограничения увеличивается, чтобы избежать неоправданного простоя.
- Если с определённым ресурсом активно работает большое количество пользователей и все ресурсы заняты (нет свободных GPU, нет ни одного полностью свободного узла определённного типа, …), тогда значение ограничения уменьшается, чтобы досталось всем, пусть и меньше.
- При этом имеются минимальные значения ограничений, ниже которых ограничения не опускаются, либо об уменьшении сообщается через список рассылки. Средствами pbs их просмотреть нельзя.
- По состоянию на июнь 2020 эти ограничения:
- 72 ncpus
- 9 ngpus
- Если пользователь запрашивает для задачи максимальное количество ресурсов, ориентируясь на текущие значениях ограничений в момент выполнения qsub, то может получиться так, что к тому времени, как необходимые ресурсы освободятся, значения ограничений будут уменьшены и задача не сможет запуститься. Поэтому не стоит в рамках одной задачи запрашивать больше ресурсов, чем установленные минимальные значения ограничений.
- Подробное описание параметров 'max_run_res.<resource>' находится в документе 'PBS Professional Reference Guide', доступном на странице с описанием PBS.
Текущие ограничения
- Просмотреть текущий список всех ограничений можно на интерфейсном сервере следующей командой:
qmgr -c'print server'|grep max_run|grep -v hpcuser|sort
set queue bl2x220g6q max_run_res.ncpus = [u:PBS_GENERIC=80] set queue bl2x220g7q max_run_res.ncpus = [u:PBS_GENERIC=96] set queue xl230g9q max_run_res.ncpus = [u:PBS_GENERIC=24] set server max_run_res.lic_matlab = [u:PBS_GENERIC=3] set server max_run_res.ncpus += [u:avpetrov=16] set server max_run_res.ncpus = [u:PBS_GENERIC=96] set server max_run_res.ngpus = [u:PBS_GENERIC=18]
- В данном случае:
- Каждый может использовать не более 18 ngpus
- Каждый может использовать не более 96 ядер CPU, при этом дополнительно накладываются ограничения:
- Не более 80 ядер в очереди bl2x220g6q
- Не более 96 ядер в очереди bl2x220g7q
- Не более 24 ядер в очереди xl230g9q
- Пользователь 'avpetrov' может занимать не более 16 ядер.
- Каждый может использовать не более 3х лицензий lic_matlab. Подобные правила позволяют управлять выдачей лицензий при работе нескольких пользователей,