Отключать ли автогруппировку процессов чтобы позволить приоритетам nice работать глобально?
Как то раз я сидел за старым ноутом с core2duo и ждал, пока в qemu установится винХР. Просто сидеть и пялиться на него разумеется скучно, поэтому я сёрфил. Но так как основная задача всё-таки виртуалка, я выдал ей [найс](https://habr.com/ru/articles/106381/) -20. Но процесс установки шёл весьма неспешно, я наблюдал за htop и заметил, что любое шевеление браузера отбирает у qemu CPU до 50%, а если открывать 2 вкладки, то до 20-33% ядра. Выставляя процессу максимальный приоритет, я ожидаю совершенно не этого.
Пришлось разбираться в вопросе, что с найсом. Перекраивать вручную всю структуру слайсов systemd — удовольствие ниже среднего, так что cgroups лучше сразу забыть или отключить.
Происходящее вполне хорошо объяснено в этом обсуждении. Если кратко: автогруппировка, появившаяся в ядре 2.6.38, изолирует практически каждый процесс в отдельную группу, а найс работает только внутри группы но не между ними. Теоретически это должно сохранять отзывчивость DE и мультимедийных задач под нагрузкой. Побочный эффект - выставление высокого или фонового приоритета фактически не работает, распределение процессорного времени равноправное.
Вернуть старое поведение можно через echo 0 > /proc/sys/kernel/sched_autogroup_enabled
Пересаживаюсь на RPi4 (4 ядра/ 4 потока) и начинаю тестировать на примере нескольких копий pbzip2 и браузера.
Дефолтное поведение с автогруппировкой, при наличии 4 потоков фоновой нагрузки nice 19: любая средне- и высоко- приоритетная нагрузка 2-6 потоков получает от 180 до 240% ядра, значение nice не играет роли, только число потоков. Сёрфинг в браузере упирается в 2 ядра, причём ситуация даже хуже чем просто 2 ядра - рваная нагрузка видимо плохо сказывается на борьбе браузера за процессор.
Отключение автогруппировки: фоновая нагрузка просто исчезает из уравнения. Браузер работает так, как будто её нет. Но вот высокоприоритетная нагрузка в 4 потока легко ставит систему раком, отбирая процессорное время у всего, в т.ч. DE, звука, Х11. Достаточная отзывчивость сохраняется если ограничить nice -20 всего 3-я потоками pbzip2, с учётом dd всему остальному остаётся 50-70% ядра. Также имеется странность: запуск mpv под фоновой нагрузкой стал долгим, и полноэкранная картинка (на аппаратном ускорении) появляется с задержкой. Опция ignore_nice_load в планировщике начинает не создавать помехи, а работать как надо.
Итог: отключение автогруппировки кажется выгодным по умолчанию, других косяков пока что не замечено.