linux 优先级必须为整数,进程友好性(优先级)设置对Linux没有影响
您看到的行為幾乎可以肯定是因為Linux 2.6.38(2010年)中添加了自動組功能.據推測,當您描述運行這兩個命令時,它們在不同的終端窗口中運行.如果你在同一個終端窗口中運行它們,那么你應該看到nice值有效.這個答案的其余部分詳細闡述了這個故事.
內核提供了一種稱為自動分組的功能,可以在多進程,cpu密集型工作負載(如構建具有大量并行構建過程的Linux內核(即make(1)-j標志)的情況下提高交互式桌面性能.
創建新會話時會創建新的自動組
通過setsid(2);例如,當啟動新的終端窗口時會發生這種情況. fork(2)創建的新進程繼承了它
父母的自動組成員資格.因此,一個過程中的所有過程
session是同一個autogroup的成員.
啟用自動分組時,自動組合的所有成員
被放置在相同的內核調度程序“任務組”中. Linux內核調度程序采用一種均衡分布的算法
cpu跨任務組循環.可以通過以下示例描述此對交互式桌面性能的好處.
假設有兩個自動組競爭同一個cpu
(即,假定單個cpu系統或使用任務集(1)
將所有進程限制在SMP系統上的同一cpu中).
第一組包含來自內核的十個cpu綁定進程
build以make -j10開頭.另一個包含一個
cpu綁定過程:視頻播放器.自動分組的效果是
這兩組將分別接收一半的cpu周期.那是,
視頻播放器將獲得50%的cpu周期,而不是
只有9%的周期,這可能會導致視頻質量下降
回放. SMP系統的情況比較復雜,但是
一般效果是相同的:調度程序分配cpu周期
跨任務組,以便包含大的自動組
cpu綁定進程的數量最終不會占用cpu周期
以犧牲系統上的其他工作為代價.
漂亮的價值和團隊安排
在調度非實時進程(例如,那些已調度的進程)時
在默認的SCHED_OTHER政策下),
調度程序采用稱為“組調度”的技術,在該技術下,線程被安排在“任務組”中.
任務組是在各種情況下形成的,相關案例在這里是自動分組.
如果啟用了自動分組,那么所有線程都是
(隱含地)放在一個自動組中(即同一個會話,如
由setsid(2)創建)形成一個任務組.每個新的自動組都是
因此是一個單獨的任務組.
在組調度下,線程的nice值會產生效果
調度決策僅相對于同一個中的其他線程
任務組.這有一些令人驚訝的后果
UNIX系統上很好的值的傳統語義.特別是,如果啟用了自動分組(這是各種Linux發行版中的默認設置),那么
在一個過程中使用nice(1)會產生影響
僅用于相對于在其中執行的其他進程的調度
相同的會話(通常:相同的終端窗口).
相反,對于(例如)鞋底的兩個過程
不同會話中的cpu綁定進程(例如,不同的終端
windows,每個作業都綁定到不同的autogroup),
在其中一個會話中修改進程的nice值
對調度程序相對于調度的決策沒有影響
在另一個會話中處理.這可能是您看到的情景,但您沒有明確提到使用兩個終端窗口.
如果要防止自動分組干擾此處所述的傳統良好行為,可以禁用該功能
echo 0 > /proc/sys/kernel/sched_autogroup_enabled
請注意,這也會導致禁用自動組功能旨在提供的桌面交互性的好處(參見上文).
自動組很好的價值
可以通過查看進程的自動組成員資格
文件/ proc / [pid] / autogroup:
$cat /proc/1/autogroup
/autogroup-1 nice 0
此文件還可用于修改分配的cpu帶寬
到一個自動組.這是通過在“好”中寫一個數字來完成的
范圍到文件以設置自動組的好值.允許的
范圍從19(低優先級)到-20(高優先級).
autogroup nice設置與進程具有相同的含義很好的價值,但適用于cpu周期的分配autogroup作為一個整體,基于其他的相對好的值autogroups.對于自動組內的進程,cpu會循環它接收將是自動組的良好價值的產物(比較到其他autogroup)和過程的好價值(與…相比)同一自動組中的其他進程).
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux 优先级必须为整数,进程友好性(优先级)设置对Linux没有影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东广告联盟android,京东APP联
- 下一篇: 启动失败代码2_菲斯曼燃气壁挂炉故障代码