Команды nice / renice не действуют между процессами, запущенными как процесс переднего плана, и процессами, запущенными как фоновые. Даже при максимальной аккуратности процессов на переднем плане им всегда уделяется больше внимания. Хотя это имеет смысл для процессов, в которых пользователь ожидает результата, это становится проблемой, если таким образом запускается длительный процесс. Я думал, что Linux следует отменить приоритеты (сделать медленнее) длительно выполняющиеся задачи, но, согласно приведенному ниже примеру, это не так: user_foo запустил все процессы как процессы переднего плана, теперь они выполняются в течение нескольких недель. Недавно запущенные фоновые задачи user_bar (они потенциально также могли бы использовать 100% ЦП, если бы могли) запланированы с более низким приоритетом, несмотря на то, что у них приятность -20.
top - 17:12:27 up 31 days, 8:29, 4 users, load average: 33.04, 32.60, 29.48
Tasks: 278 total, 26 running, 252 sleeping, 0 stopped, 0 zombie
Cpu(s): 91.6%us, 0.8%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 7.5%st
Mem: 16434608k total, 15893028k used, 541580k free, 1168920k buffers
Swap: 24673276k total, 18100k used, 24655176k free, 2255512k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2399 user_foo 39 19 4117m 246m 60m S 102 1.5 34915:56 heavytask
2234 user_foo 39 19 4052m 201m 59m S 101 1.3 39631:48 heavytask
3474 user_foo 39 19 4674m 1.1g 58m S 100 7.2 36057:58 heavytask
3782 user_foo 39 19 4447m 1.3g 58m S 100 8.5 36108:42 heavytask
3128 user_foo 39 19 3112m 182m 60m S 100 1.1 29983:33 heavytask
6644 user_foo 39 19 3637m 705m 59m S 100 4.4 26310:45 heavytask
2571 user_foo 39 19 5220m 1.8g 60m S 99 11.7 14908:44 heavytask
14607 user_bar 0 -20 52488 12m 5368 R 84 0.1 10:42.24 otherTASK
14755 user_bar 0 -20 52488 12m 5368 R 82 0.1 10:35.85 otherTASK
14758 user_bar 0 -20 52488 12m 5368 R 78 0.1 10:54.96 otherTASK
14795 user_bar 0 -20 52488 12m 5368 R 76 0.1 10:01.66 otherTASK
14783 user_bar 0 -20 52488 12m 5368 R 75 0.1 9:32.76 otherTASK
14596 user_bar 0 -20 52488 12m 5368 R 30 0.1 10:40.58 otherTASK
14728 user_bar 0 -20 52488 12m 5368 R 30 0.1 9:39.03 otherTASK
14583 user_bar 0 -20 52488 12m 5368 R 27 0.1 10:07.11 otherTASK
14706 user_bar 0 -20 52488 12m 5368 R 26 0.1 9:38.22 otherTASK
14501 user_bar 0 -20 52488 12m 5368 R 25 0.1 9:40.70 otherTASK
Что можно сделать, чтобы снизить приоритет этих конкретных процессов переднего плана? (или для повышения приоритета определенных фоновых процессов)?
(Система - Ubuntu 12.04 LTS с ядром 3.2.0-32)
Было необходимо отключить функцию автогруппировки в планировщике: сделать это один раз
sudo sysctl kernel.sched_autogroup_enabled=0
или добавить
kernel.sched_autogroup_enabled = 0
в /etc/sysctl.d/50-disable-autogroup.conf, чтобы он устанавливался при перезагрузке.
Смотрите также Хороший уровень не работает на Linux сообщение по той же проблеме.