Ubuntu
改變後台與前台程序的優先級?
推薦 nice/renice 在作為前台程序啟動的程序和作為後台程序啟動的程序之間沒有影響。即使對前台程序進行了最大程度的優化,它們也總是會得到更多的關注。雖然這對於使用者等待結果的程序很有意義,但如果以這種方式啟動長時間執行的程序,就會出現問題。我認為 Linux 應該取消優先級(使速度變慢)長時間執行的任務,但根據下面的範例,情況並非如此:user_foo 將所有程序作為前台程序啟動,它們現在執行了幾個星期。user_bar 最近啟動的後台任務(如果可以的話,它們也可能會使用 100% 的 CPU)以較低的優先級調度,儘管其 niceness 為 -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 中,以便在重新啟動時設置它。
另請參閱Nice level not working on linux報告同一問題。