Назад | Перейти на главную страницу

процессы, работающие хорошо +20, по-прежнему делают систему вялой

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

Первое решение

Используйте команду limit. Как объяснено на странице руководства:

limit, ulimit, unlimit - установить или получить ограничения на системные ресурсы, доступные для текущей оболочки и ее потомков

Вот ссылка на сайт на страницу руководства.

Второе решение

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

Как объяснено Вот :

FreeBSD предоставляет администратору несколько методов ограничения количества системных ресурсов, которые может использовать человек. Дисковые квоты ограничивают объем дискового пространства, доступного пользователям. Квоты обсуждаются в Раздел 17.11, «Дисковые квоты».

Ограничения для других ресурсов, таких как ЦП и память, можно установить с помощью простого файла или команды для настройки базы данных ограничений ресурсов. Традиционный метод определяет классы входа в систему путем редактирования /etc/login.conf. Хотя этот метод по-прежнему поддерживается, любые изменения требуют многоэтапного процесса редактирования этого файла, восстановления базы данных ресурсов, внесения необходимых изменений в /etc/master.passwd и восстановления базы данных паролей. Это может занять много времени в зависимости от количества настраиваемых пользователей.

Вы можете посмотреть на idprio (1) и / или процессор (1).

Например:

idprio 31 commandhere

ограничит commandhere в приоритет холостого хода. И

cpuset -l 0-3 commandhere

ограничил бы его только ядрами процессора 0-3. Чтобы объединить их:

cpuset -l 0 idprio 31 commandhere

(порядок можно переключить на idprio 31 cpuset -l 0-3 commandhere, Я не думаю, что это важно). Какая команда или комбинация аргументов команд (приоритет или список процессоров), конечно, зависит от вашей рабочей нагрузки, YMMV и т. Д.