В служебных файлах systemd можно установить следующие параметры, относящиеся к планированию (на systemd.exec
странице руководства исправьте меня, если я ошибаюсь):
Nice Устанавливает уровень Nice по умолчанию (приоритет планирования) для выполняемых процессов. Принимает целое число от -20 (самый высокий приоритет) до 19 (самый низкий приоритет). Смотрите setpriority (2) для деталей.
Какой знакомый хороший уровень. Кажется, что его эффект несколько «подорван» из-за функции «автогруппы» в последних ядрах Linux. Таким образом, параметры, приведенные ниже, могут быть тем, что я действительно хочу установить, чтобы процессы работали хорошо для моего рабочего стола.
CPUSchedulingPolicy Устанавливает политику планирования ЦП для выполняемых процессов. Принимает одно из другого, пакетное, простаивающее, fifo или рр. Смотрите sched_setscheduler (2) для подробностей.
CPUSchedulingPriority Устанавливает приоритет планирования ЦП для выполняемых процессов. Доступный диапазон приоритетов зависит от выбранной политики планирования ЦП (см. Выше). Для политик планирования в реальном времени может использоваться целое число от 1 (самый низкий приоритет) до 99 (самый высокий приоритет). Смотрите sched_setscheduler (2) для подробностей.
CPUSchedulingResetOnFork Принимает логический аргумент. Если это правда, повышенные приоритеты и политики планирования ЦП будут сброшены, когда выполненные процессы разветвляются, и, следовательно, не могут проникнуть в дочерние процессы. Смотрите sched_setscheduler (2) для подробностей. По умолчанию false.
Я понимаю последний вариант. Из объяснения первых двух я понял, что могу выбрать политику планирования, а затем, учитывая эту политику, приоритет. Мне не совсем ясно, что я должен выбрать для каких задач. Например, безопасно ли выбирать «простаивающий» для задач резервного копирования (относительно интенсивно использующий процессор, потому что дедупликация), или другой вариант лучше подходит?
В общем, я хочу получить понятный обзор каждой политики с каждым из ее приоритетов и пригодностью для конкретных целей. Также интересно взаимодействие с хорошим уровнем.
Рядом с планированием ЦП есть планирование ввода-вывода. Я думаю, это соответствует ionice
(поправьте меня, если я ошибаюсь).
IOSchedulingClass Устанавливает класс планирования ввода / вывода для выполняемых процессов. Принимает целое число от 0 до 3 или одну из строк none, в режиме реального времени, с максимальным усилием или в режиме ожидания. Смотрите ioprio_set (2) для подробностей.
IOSchedulingPriority Устанавливает приоритет планирования ввода-вывода для выполняемых процессов. Принимает целое число от 0 (самый высокий приоритет) до 7 (самый низкий приоритет). Доступные приоритеты зависят от выбранного класса планирования ввода / вывода (см. Выше). Смотрите ioprio_set (2) для подробностей.
Здесь мы видим ту же структуру, что и при планировании процессора. Я ищу такую же информацию.
Для всех опций «Планирование» упомянутые справочные страницы не достаточно ясны для меня, в основном при переводе вещей в несколько технически склонную точку зрения пользователя настольного компьютера.
nice
применяется значение).