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

Изменение приоритетов фоновых и передних процессов?

Команды 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 сообщение по той же проблеме.