Настройка cgroups с /etc/cgconfig.conf не удалась: группа Cgroup, запрашиваемый параметр группы не существует.

Вопрос или проблема

Я пытаюсь заставить 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 на вашей системе или неверной конфигурации.

Потенциальные причины ошибки

  1. Отсутствие контроллеров cgroup: Убедитесь, что контроллеры cpu и memory загружены и доступны в системе. Можно проверить, доступны ли они через команду mount.

  2. Неверные права доступа: Система может не распознать пользователя nate как имеющего права на создание группы cgroup. Убедитесь, что этот пользователь существует и имеет необходимые права.

  3. Некорректная конфигурация: Может быть, в самом файле конфигурации есть синтаксическая ошибка или опечатка. Проверьте еще раз порядок и соответствие структур данных.

Рекомендации по устранению ошибки

  1. Проверка контроллеров cgroup:

    Запустите команду, чтобы убедиться, что необходимые контроллеры подключены:

    mount | grep cgroup

    Убедитесь, что в выводе присутствуют cpu и memory.

  2. Изменение прав:

    Если необходимо запустить команды от имени пользователя, укажите права с помощью chmod:

    sudo chmod 755 /etc/cgconfig.conf
  3. Корректировка конфигурационного файла:

    Если проблема сохраняется, попробуйте уточнить наименование группы и параметры, возможно, вам потребуются дополнительные настройки для вашей специфической системы.

Устранение ошибки "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 для более глубокого понимания работы этих механизмов. Помните, что ошибками можно научиться, и каждая проблема позволяет усовершенствовать свои знания в администрировании систем.

Оцените материал
Добавить комментарий

Капча загружается...