
Я хотел бы настроить свою настольную систему Linux так, чтобы всякий раз, когда я начинаю запускать определенную программу (запускать процессы этой программы), соответствующему процессу назначался высокий приоритет. Как это сделать?
Я знаю, что могу сделать это индивидуально для каждого экземпляра запуска программы, т. е. для конкретных процессов. Но как настроить значение по умолчанию для программы (т. е. для всех будущих процессов)?
Версия ядра: 4.10.11-200.fc25.x86_64
решение1
Есть программа, которая называется "авто хороший демон", который делает это. Он работает в фоновом режиме, и когда в таблице процессов появляется процесс, соответствующий определенному шаблону, он автоматически устанавливает его приятность.
Вы можете использовать это — но вы можете быть немного разочарованы, потому что планировщик Linux должен многое сбалансировать, и увеличение приоритета не обязательно даст волшебное ускорение. Вы даже можете столкнуться с ситуациями, когда это делает вещихудший, поскольку ваш высокоприоритетный процесс может «заморить» низкоприоритетные процессы, от которых на самом деле может зависеть работа вашего приложения.
Так что вместо этого вы могли бы посмотреть на что-то вроденастроенный, который имеет профили производительности для различных рабочих нагрузок.Или, если вы любите приключения, вы можете посмотреть наCon Kolivas патчи для планировщика рабочего стола, которые направлены на оптимизацию рабочего стола. Это действительно трудно измерить и это довольно спорно — многие люди клянутся в этом, в то время как другие относятся к этому скептически. (Статья Linux Weekly News о последней итерации есть наПланировщик CPU MuQSS(В настоящее время доступ к нему платный, но 4 мая он станет бесплатным.)
решение2
вам захочется взглянуть нахорошийиРеницеУтилиты. Чтобы дать вашему процессу более высокий приоритет ЦП, вам необходимо иметь привилегии root/sudo. Вы можете либо использовать nice
для запуска процесса с более высоким приоритетом, либо renice
изменить его на более высокий приоритет позже.
(terminal1):~# nice -n -10 sleep 100
(terminal2):~# top -b -n1 | grep sleep
23580 root 10 -10 4508 1244 1156 S 0.000 0.008 0:00.00 sleep
(terminal1):~# sleep 100
(terminal2):~# top -b -n1 | grep sleep
23888 root 20 0 4508 1316 1228 S 0.000 0.008 0:00.00 sleep
(terminal2):~# renice -n -10 23888
23888 (process ID) old priority 0, new priority -10
(terminal2):~# top -b -n1 | grep sleep
23888 root 10 -10 4508 1356 1268 S 0.000 0.008 0:00.00 sleep