Вопрос или проблема
Я пытаюсь ограничить использование ресурсов для cgroup, не имея доступа к root.
Я могу установить memory.limit_in_bytes, используя cgm setvalue memory memory.limit_in_bytes 150G
Но я не могу установить memsw.limit_in_bytes таким же образом, независимо от того, больше ли memsw.limit_in_bytes, чем memory.limit_in_bytes (это необходимо, потому что опция memsw устанавливает максимальные пределы памяти + свопа)
Все, что я получаю: Ошибка org.freedesktop.DBus.Error.InvalidArgs: недействительный запрос
Есть идеи?
При использовании cgm
имейте в виду, что cgm chown $controller $cgroup $uid $gid
только изменяет владельца директории /sys/fs/cgroup/$controller/$cgroup
и ее файлов cgroup.procs
и tasks
. Пользователи без привилегий, которые не могут записывать в эти файлы, получат сообщение вызов cgmanager_set_value_sync завершился неудачей: недействительный запрос, как вы обнаружили.
Еще одной возможностью является отсутствие файла, например, из-за отсутствия поддержки свопа в ядре. Если ваше ядро не настроено с CONFIG_MEMCG_SWAP_ENABLED
, то вам нужно передать параметр swapaccount=1
в командной строке.
Ответ или решение
Ошибка при установке memsw.limit_in_bytes в cgroup на Ubuntu Server с использованием cgm
Если вы сталкиваетесь с проблемой при попытке установить memsw.limit_in_bytes
в cgroup на сервере Ubuntu, это может быть связано с несколькими факторами, особенно если у вас нет доступа к правам суперпользователя. Давайте рассмотрим возможные причины возникновения ошибки и предложим пути ее решения.
1. Ограничения прав доступа
Как вы уже указали, использование команды cgm chown $controller $cgroup $uid $gid
изменяет владельца директории cgroup, однако, это не дает прав на запись для всех файлов в данной директории. Чтобы действительно установить значение memsw.limit_in_bytes
, вам необходимо убедиться, что у вас есть необходимые разрешения на запись в соответствующие файлы.
Если у вас нет достаточных прав, вы получите ошибку call to cgmanager_set_value_sync failed: invalid request
. Важно убедиться, что пользователь, от имени которого выполняются команды, имеет все необходимые права на запись как в файлы cgroup.procs
, так и в файлы настроек.
2. Поддержка свопа в ядре
Другая возможная причина заключается в том, что в вашем ядре может отсутствовать поддержка свопа для cgroup. Чтобы проверить это, выполните следующие шаги:
- Убедитесь, что ваша система работает с включенной поддержкой swap accounting. Это можно сделать, проверив загрузку необходимых параметров ядра. Убедитесь, что в загрузочной конфигурации GRUB добавлен параметр
swapaccount=1
.
Для проверки можно воспользоваться командой:
cat /proc/cmdline
Если параметр swapaccount=1
отсутствует, добавьте его в конфигурацию GRUB:
- Откройте файл
/etc/default/grub
для редактирования. - Найдите строку
GRUB_CMDLINE_LINUX_DEFAULT
и добавьтеswapaccount=1
к существующим параметрам. - Сохраните изменения и обновите конфигурацию загрузчика:
sudo update-grub
- Перезагрузите систему.
После перезагрузки убедитесь, что параметр установлен, снова проверив командой cat /proc/cmdline
.
3. Недостаток Swap в системе
Также стоит отметить, что если у вас не настроен swap в системе, создание параметра memsw.limit_in_bytes
может быть невозможным. Убедитесь, что у вас настроен и активирован swap.
Вы можете проверить наличие swap, используя команду:
swapon --show
Если нет активного swap, его можно создать, например, с помощью следующей последовательности команд:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Не забудьте добавить строку в /etc/fstab
, чтобы сделать изменения постоянными:
/swapfile none swap sw 0 0
Заключение
В случае, если вы по-прежнему получаете ошибку при установке memsw.limit_in_bytes
, обратитесь к администратору системы с просьбой проверить правами доступа и настройками ядра. Вы также можете рассмотреть возможность получения временного доступа к правам суперпользователя, чтобы выполнить необходимые настройки на уровне системы.
Следуя вышеуказанным рекомендациям, вы сможете настроить параметры cgroup должным образом и управлять ресурсами системы более эффективно.
Оптимизация для SEO
Используйте ключевые слова, такие как memsw.limit_in_bytes
, cgroup
, Ubuntu Server
, ошибка
, и настройка ресурсов
, в заголовках и содержании, чтобы улучшить видимость в поисковых системах.