Когда файловая система смонтирована в определенной точке -монтирования, ОС считывает блок Super -из смонтированной файловой системы и загружает его в память. Блок Super -, наряду со многими другими вещами, содержит информацию об индексном узле корня этой файловой системы.
Вышеупомянутые пункты верны, что существуют структуры данных ОС, которые хранят записи обо всех смонтированных файловых системах, если другая файловая система была смонтирована в /home/, блок Super -этой файловой системы будет обращаться к блоку Super -этой файловой системы, чтобы получить индексный дескриптор корневого каталога. номер.
Через пару дней мне удалось ответить на свой вопрос. Оглядываясь назад, это было довольно просто.
Отзывчивость:Демон slurmd можно запустить с помощью аргументов командной строки, перечислите их с помощью slurmd -h
. В частности, slurmd -n 19
устанавливает наивысшее значение nice -(и, следовательно, самый низкий приоритет )для демона и всех его подпроцессов. На настольных компьютерах я просто
/etc/systemd/system/slurmd.service
, добавив -n 19
к ExecStart
, т.е.ExecStart=/usr/local/sbin/slurmd $SLURMD_OPTIONS -n 19
systemctl daemon-reload
systemctl restart slurmd.service
Резервирование памяти:Часть памяти может быть зарезервирована для системы. Я оставляю 8 ГБ владельцу, добавляя MemSpecLimit=8000
к спецификациям узла в slurmd.conf
. Для фактического ограничения памяти было сделано несколько дополнительных шагов:
Выберите «Ядро» и «Память» в качестве потребляемых ресурсов, установив SelectTypeParameters=CR_Core_Memory
в slurmd.conf
.
Добавьте подключаемый модуль задач cgroups, установив TaskPlugin=task/affinity,task/cgroup
в slurmd.conf
, а затем установив ConstrainRAMSpace=yes
в cgroup.conf
.
Поскольку мы работаем в Ubuntu, включите память и поменяйте местами контрольные группы, добавив строку GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
в/etc/default/grub
График работы в рабочие дни Некоторые из моих коллег хотели бы, чтобы их никто не отвлекал в рабочее время. Это легко сделать с помощью scontrol
на головном узле, чтобы установить их состояние узла на «вниз» в рабочее время и «возобновить» после рабочего дня. Я делаю это автоматически с помощью системных таймеров:
scontrol
:#!/bin/bash
# slurm-update.sh - Updates the state on nodes belonging to the work-hour desktops partition.
systemctl start slurmd
for node in $(sinfo -h --partition=WHdesktops --format="%n"); do
state=$(sinfo -h --node=$node --format="%T")
echo "Setting node $node to state=$1 with reason=$2"
scontrol update NodeName=$node state=$1 reason="$2" || echo "State on $node is already $(sinfo -h --node=$node --format=\"%T\")"
done
Для этого требуется два аргумента: новое состояние и его причина.
/etc/systemd/system
для запуска приведенного выше сценария в определенное время. Сделайте по одной паре для каждого состояния, которое вы хотите установить (, например, я сделал 3 пары,установить, слить и возобновить ). Пара для постановки «вниз» выглядит так # /etc/systemd/system/slurm-down.service:
[Unit]
Description=Shut down all SLURM desktop nodes
[Service]
Type=simple
ExecStart=/bin/bash /mnt/nfs/slurm_fs/systemd/slurm-update.sh down afterhours
StandardError=journal
и
# /etc/systemd/system/slurm-down.timer:
[Unit]
Description=Timer for shutting down slurm on desktop nodes on weekdays
[Timer]
Unit=slurm-down.service
OnBootSec=10min
# Run hourly on weekdays between 8:05 to 18:05
OnCalendar=Mon..Fri *-*-* 8..18:05:00
[Install]
WantedBy=multi-user.target
Перезагрузите демоны с помощью systemctl daemon-reload
, а затем включите и запустите только таймер, а не службу:systemctl enable --now slurm-down.timer
.
Повторите шаги для состояния возобновления работы в нерабочее время и, при необходимости, для состояния слива примерно за час до состояния простоя.