Через пару дней мне удалось ответить на свой вопрос. Оглядываясь назад, это было довольно просто.
Отзывчивость:Демон 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
.
Повторите шаги для состояния возобновления работы в нерабочее время и, при необходимости, для состояния слива примерно за час до состояния простоя.
Хорошо, похоже, у вас есть несколько проблем с записями в вашем /etc/apt/sources.list
, которые необходимо решить (подробнее см. в разделе ниже ), хотя, насколько я могу судить, они не связаны к вашей проблеме с MariaDB. Записи для репозитория MariaDB 10.6, похоже, работают нормально.
Из информации, которую вы мне предоставили, я могу предположить, что версия MariaDB сдерживается на уровне 10.5.12 из-за того, что она уже установлена до , тем более -до -. Дата добавления репозитория MariaDB в ваш sources.list
. Я предполагаю, что запуск sudo apt upgrade
выглядит примерно так:
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
mariadb-server
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
apt
не обновляет MariaDB до версии 10.6 автоматически, поскольку для этого потребуется удалить некоторые специфические пакеты зависимостей версии 10.5 -. Решение этой проблемы должно быть таким же простым, как явное указание пакетов mariadb-server
и mariadb-client
для обновления. Просто запустите sudo apt upgrade mariadb-server mariadb-client
, и приглашение должно выглядеть примерно так:
$ sudo apt upgrade mariadb-server mariadb-client
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
libconfig-inifiles-perl
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
mariadb-client-10.5 mariadb-client-core-10.5 mariadb-server-10.5 mariadb-server-core-10.5
The following NEW packages will be installed:
libdaxctl1 libndctl6 libpmem1 liburing1 mariadb-client mariadb-client-10.6 mariadb-client-core-10.6 mariadb-server-10.6 mariadb-server-core-10.6
The following packages will be upgraded:
mariadb-server
1 upgraded, 9 newly installed, 4 to remove and 0 not upgraded.
Need to get 13.7 MB of archives.
After this operation, 5,323 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Если это так, просто введите y
, чтобы продолжить, а затем убедитесь, что установлена версия MariaDB 10.6 с mariadb --version
:
$ mariadb --version
mariadb Ver 15.1 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) using readline EditLine wrapper
В качестве побочного примечания в отношении проблемы #2 в вашем вопросе: в версии 10.5 mariadb --version
вывод должен читать using EditLine wrapper
, а не using readline Editline wrapper
. Эта конкретная причуда совершенно нормальна и не имеет ничего общего с присутствием libreadline-dev
.
Как я уже говорил, у вас есть проблемы с sources.list
, которые необходимо решить. Это выходит за рамки вашей проблемы с MariaDB, но я собираюсь немного коснуться здесь, чтобы исправить наиболее важные из этих проблем, поскольку это связано с безопасностью -.
Эти два debian-security
источника используют старый формат из Debian 10 (Buster )и более ранних версий, который был изменен во время обновления до Debian 11 (Bullseye ). Вы можете видеть, что они создают ошибки в выводе sudo apt update
.
deb http://mirrors.163.com/debian-security/ bullseye/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ bullseye/updates main non-free contrib
Эти строки следует удалить и заменить на новый формат. Команда безопасности Debian не поощряет использование зеркал для репозиториев безопасности , так что вот официальные зеркала.
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
Есть также некоторые другие ошибки, исходящие из исходных файлов внутри /etc/apt/sources.list.d/
, но их исправление выходит за рамки этого вопроса. Посмотрите на ошибки в выводе sudo apt update
, если хотите исправить их самостоятельно.