Вопрос или проблема
Я пытаюсь заставить cgroups
работать на своем Linux-компьютере, и это было очень сложно.
Мне кажется, что это должно быть гораздо проще, поскольку управление ресурсами является ключевым для здоровой рабочей среды, и именно поэтому я пытаюсь это использовать, но я столкнулся с множеством проблем.
У меня есть файл /etc/cgconfig.conf
, который выглядит так:
group "chromium_slack" {
perm {
admin {
uid = "nate";
gid = "nate";
}
task {
uid = "nate";
gid = "nate";
}
}
cpu {
shares="50";
}
memory {
swappiness="60";
limit_in_bytes="256000000";
}
}
И когда я запускаю службу cgconfig
вот так:
sudo systemctl start cgconfig.service
Я получаю статус службы Cgroup, requested group parameter does not exist
, который выглядит так:
× cgconfig.service - Служба конфигурации контрольной группы
Loaded: загружен (/usr/lib/systemd/system/cgconfig.service; включена; предустановка: отключена)
Active: завершилась с ошибкой (Результат: код выхода) с четвера 2022-12-15 15:17:16 EST; 11 мин. назад
Process: 9559 ExecStart=/usr/bin/cgconfigparser -l /etc/cgconfig.conf -s 1664 (код=вышел, статус=95)
Main PID: 9559 (код=вышел, статус=95)
CPU: 8мс
Dec 15 15:17:16 nx systemd[1]: Запуск службы конфигурации контрольной группы...
Dec 15 15:17:16 nx cgconfigparser[9559]: /usr/bin/cgconfigparser; ошибка загрузки /etc/cgconfig.conf: Cgroup, запрашиваемый параметр группы не существует
Dec 15 15:17:16 nx systemd[1]: cgconfig.service: Главный процесс вышел, код=вышел, статус=95/n/a
Dec 15 15:17:16 nx systemd[1]: cgconfig.service: Завершилось с результатом 'код выхода'.
Dec 15 15:17:16 nx systemd[1]: Не удалось запустить службу конфигурации контрольной группы.
Но когда я пытаюсь сделать это вручную с cgcreate
так:
sudo cgcreate -a $USER -g memory,cpu:chromium_slack
sudo echo 256M > /sys/fs/cgroup/chromium_slack/memory.limit_in_bytes
Я получаю ошибку permission denied: /sys/fs/cgroup/chromium_slack/memory.limit_in_bytes
.
Так что мой вопрос таков… Как мне заставить это работать?
Вы должны выполнить перенаправление внутри оболочки root:
sudo su - -c 'echo 256M > /sys/fs/cgroup/chromium_slack/memory.limit_in_bytes'
Ответ или решение
Решение проблемы с настройкой cgroups на Linux
Настройка групп контролеров (cgroups) в Linux может быть непростой задачей, особенно для тех, кто впервые с ними сталкивается. В данном ответе мы разберем ошибку, возникающую при запуске службы cgconfig, и предложим возможные пути решения.
Проблема
Вы столкнулись с ошибкой при попытке запустить сервис cgconfig
, получив сообщение:
Cgroup, requested group parameter does not exist
Это указывает на то, что в конфигурационном файле /etc/cgconfig.conf
есть проблемы, препятствующие созданию группы cgroup с заданными параметрами.
Анализ конфигурационного файла
Ваш текущий файл конфигурации /etc/cgconfig.conf
выглядит следующим образом:
group "chromium_slack" {
perm {
admin {
uid = "nate";
gid = "nate";
}
task {
uid = "nate";
gid = "nate";
}
}
cpu {
shares="50";
}
memory {
swappiness="60";
limit_in_bytes="256000000";
}
}
Здесь определена группа с именем chromium_slack
, и для неё установлены параметры ограничения ресурсов. Тем не менее, проблема может возникнуть из-за отсутствия необходимых контроллеров cgroup на вашей системе или неверной конфигурации.
Потенциальные причины ошибки
-
Отсутствие контроллеров cgroup: Убедитесь, что контроллеры
cpu
иmemory
загружены и доступны в системе. Можно проверить, доступны ли они через командуmount
. -
Неверные права доступа: Система может не распознать пользователя
nate
как имеющего права на создание группы cgroup. Убедитесь, что этот пользователь существует и имеет необходимые права. -
Некорректная конфигурация: Может быть, в самом файле конфигурации есть синтаксическая ошибка или опечатка. Проверьте еще раз порядок и соответствие структур данных.
Рекомендации по устранению ошибки
-
Проверка контроллеров cgroup:
Запустите команду, чтобы убедиться, что необходимые контроллеры подключены:
mount | grep cgroup
Убедитесь, что в выводе присутствуют
cpu
иmemory
. -
Изменение прав:
Если необходимо запустить команды от имени пользователя, укажите права с помощью
chmod
:sudo chmod 755 /etc/cgconfig.conf
-
Корректировка конфигурационного файла:
Если проблема сохраняется, попробуйте уточнить наименование группы и параметры, возможно, вам потребуются дополнительные настройки для вашей специфической системы.
Устранение ошибки "Permission Denied"
Если вы получаете сообщение о "permission denied" при попытке изменить значение в /sys/fs/cgroup/...
, необходимо помнить, что такие операции требуют административных прав.
Для выполнения команды с переопределением используйте:
sudo su - -c 'echo 256M > /sys/fs/cgroup/chromium_slack/memory.limit_in_bytes'
Этот подход позволяет выполнять команду от имени пользователя root.
Заключение
Настройка и администрирование cgroups в Linux требует внимательности и тщательного подхода к конфигурации. Изучите документацию по cgroups для более глубокого понимания работы этих механизмов. Помните, что ошибками можно научиться, и каждая проблема позволяет усовершенствовать свои знания в администрировании систем.