09.12.2018 13:43
У меня в десктопе много операционки, но расходовать ее всю на кривоподелие какого-то вебмастера я не готов. Не дай, забудешь какой-нибудь убогий Facebook на ночь, систему можно увидеть в свопе. В то же время резать все через ulimit некрасиво, некоторым задачам память нужна.

Стал разбираться с cgroups. Надо отметить, что технология сыровата и переезжала в systemd, за счет чего большинство документации вообще непригодно для использования. Ниже описывается вариант,который работает на Fedora 29.

Запускаем соответствующую службу
Код:
systemctl enable cgconfig.service
systemctl start cgconfig.service
systemctl status cgconfig.service
Создаем группу olegon с подгруппой chrome для удобства
Код:
cgcreate -g cpu,memory:olegon
cgcreate -g cpu,memory:olegon/chrome
помечаем все запущенные процессы этой группой
Код:
cgclassify -g cpu,memory:olegon/chrome $(pidof chrome)
разрешаем этой группе не более 1Гб памяти
Код:
cgset -r memory.limit_in_bytes=1G olegon/chrome
и не больше половины (1024 - все) процессоров
Код:
cgset -r cpu.shares=512 olegon/chrome
минусом этого решения является то, что при нехватке памяти программа уходит в своп и, если он на том же диске, что и система, может получиться конфуз. Однако, само по себе решение отличное и работает, как надо.
для создания постоянных групп необходимо править файл /etc/cgconfig.conf
например
Код:
group browsers {
    cpu {
        cpu.shares = "256";
    }
    memory {
        memory.limit_in_bytes = "1G";
        memory.soft_limit_in_bytes = "768M";
    }
}
15.12.2018 09:47
На дистрибутивах, вроде Fedora, можно воспользоваться systemd и слайсами, т.е. так
Код:
systemctl set-property user.slice MemoryLimit=512M
systemctl set-property system.slice MemoryLimit=1024M
учтите, что эти команды сохраняют свое действие и после перезагрузки, создавая файлы
Код:
/etc/systemd/system/system.slice.d/50-MemoryLimit.conf
/etc/systemd/system/user.slice.d/50-MemoryLimit.conf
Соответственно, чтобы отменить их действие, эти файлы необходимо удалить и перезагрузиться.

Для просмотра псевдофайловой директории можно воспользоваться
Код:
ls -l /sys/fs/cgroup/
Для просмотра текущих значений в топе
Код:
systemd-cgtop
Для просмотра списка групп
Код:
systemd-cgls
Часовой пояс GMT +3, время: 06:46.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.