<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何解決Linux進程調度優先級數字混亂的問題?詳細實例分析

Linux閱碼場 ? 來源:未知 ? 作者:易水寒 ? 2018-10-03 10:24 ? 次閱讀

Linux進程的調度優先級數字會在好幾個地方出現:內核,用戶,top命令。他們各自都有自己的表示法。我們用一個實際的例子來說明,下面在Linux寫一個最簡單的程序:

編譯它運行,把調度策略設置為SCHED_FIFO,優先級設置為50:$ sudo chrt -f50./a.out這個時候我們在top命令里面觀察a.out:

我們看到a.out的PR(優先級是)-51,CPU利用率100%。但是從內核的視角上面來看,又會用99減去用戶在chrt里面設置的優先級:

上面的MAX_RT_PRIO的值為:

所以上述進程的優先級,在三個不同視角的值分別為:

用戶 內核 Top
50 49 -51

咋回事

Linux的RT調度策略和普通進程在調度算法上面有差異,RT的SCHED_FIFO和SCHED_RR采用的是一個bitmap:

每次從第0bit開始往后面搜索第一個有進程ready的bit,然后調度這個優先級上面的進程執行,所以在內核里面,prio數值越小,優先級越高。但是從用戶態的API里面,則是數值越大,優先級越高。下面的代碼,一個線程通過調用API把自己設置為SCHED_FIFO,優先級50

這個上面的50,對應內核的49。如果我們把優先級設置為51:

這個51,對應內核bitmap上面的48。所以,你會發現,從用戶的視角來看,數值變大,優先級變高。上面這2個視角,都不是top命令的視角。對于RT的進程而言,TOP的視角里面的PR= -1 -用戶視角譬如,下面用戶視角的88,

$ sudo chrt -f 88 ./a.out

對應內核視角的11,對應top視角的-89:

這實在讓人有一點暈??!這里還有一個特例,就是用戶視角的99(內核bitmap視角的0),顯示為top命令的RT:

這說明一點,只有最高優先級的RT進程,才在top里面顯示為rt。

普通的呢?

普通的講nice的人相對來說比較簡單,我們更關注它的nice值,-20~19之間,nice越低,優先級越高,權重越大,在CFS的紅黑樹左邊的機會大。

你發現.nice為5的進程,在top命令顯示PR是25。下面我們看nice是-5的:

它顯示的是PR=15。由此大家可以發現規律,對于普通的采用CFS策略的NORMAL進程,top里面的PR=20+NICE

在一起

總結一下,4個例子

用戶 內核 Top
RT 50 49 (99-50) -51 (-1-50)
RT 99 0 rt
NICE 5 25
NICE -5 15

由此發現,在top里面,RT策略的PR都顯示為負數;最高優先級的RT,顯示為rt。top命令里面也是,數字越小,優先級越高。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1314

    瀏覽量

    39932
  • Linux
    +關注

    關注

    87

    文章

    11025

    瀏覽量

    207144
  • 編譯
    +關注

    關注

    0

    文章

    626

    瀏覽量

    32467

原文標題:宋寶華: 關于Linux進程優先級數字混亂的徹底澄清

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式技術中如何定義進程優先級

    靜態優先級是所有相關優先級的計算的起點,要么繼承自父進程,要么用戶空間自行設定。一旦修改了靜態優先級,那么normal priority和動態優先級
    發表于 09-18 16:08 ?1428次閱讀
    嵌入式技術中如何定義<b class='flag-5'>進程</b><b class='flag-5'>優先級</b>

    基于優先級搶占系統的QNX調度算法

    調度算法,是基于優先級的。QNX的線程優先級,是一個0-255的數字,數字越大優先級越高。所以,
    發表于 10-31 09:17 ?600次閱讀

    Linux內核進程管理與調度:策略優化與實踐分析

    今天給大家上點硬貨,關于Linux進程管理和調度是學習和理解Linux的必學知識。為協調多個進程 "同時" 運行,現代操作系統通常使用
    發表于 05-08 09:42 ?655次閱讀
    <b class='flag-5'>Linux</b>內核<b class='flag-5'>進程</b>管理與<b class='flag-5'>調度</b>:策略優化與實踐<b class='flag-5'>分析</b>

    Linux系統調度是實現特性的關鍵部分

    每個調度類都有自身的優先級,Linux調度管理基礎代碼會遍歷在內核中注冊了的調度類,選擇高優先級
    發表于 07-05 07:05

    干貨分享:基于嵌入式Linux進程調度實現方法

    可運行隊列中。Linux進程調度采用了動態優先級 和權值調控的方法,既可實現上述三種調度策略,又能保證實時
    發表于 12-10 14:17

    鴻蒙內核源碼分析(調度隊列篇):進程和Task的就緒隊列對調度的作用

    OsTaskPriQueueTop查最高優先級任務OsDequeEmptySchedMap進程出列[td]OsGetTopTask獲取被調度選擇的task鴻蒙內核進程和線程各有32個就
    發表于 11-23 11:09

    Linux 2.6進程調度

    分析了與Linux 2.6 進程調度密切相關的一些重要數據結構,詳細描述了進程
    發表于 06-13 10:13 ?11次下載

    嵌入式系統優先級反轉問題的分析

    摘要: 本文介紹了嵌入式系統任務調度優先級反轉的一個實例。通過實例的討論對嵌入式系統優先級反轉有一個更深入的了解,有助于在編程
    發表于 03-11 12:18 ?874次閱讀
    嵌入式系統<b class='flag-5'>優先級</b>反轉問題的<b class='flag-5'>分析</b>

    如何更改 Linux 的 I/O 調度

    Linux 的 I/O 調度器是一個以塊式 I/O 訪問存儲卷的進程,有時也叫磁盤調度器。Linux I/O
    發表于 05-15 15:54 ?751次閱讀
    如何更改 <b class='flag-5'>Linux</b> 的 I/O <b class='flag-5'>調度</b>器

    Linux 進程調度淺析

    優先級,如果有多個進程同時處于可執行狀態,那么誰優先級高誰就去執行,沒有什么好糾結的了。那么,進程優先級該如何確定呢?有兩種方式:由用戶
    發表于 04-02 14:40 ?270次閱讀

    嵌入式Linux實時進程調度算法改進

    系統調度算法應綜合考慮進程的價值和截止兩個概念,以保證實時進程在截止期內盡可能多地完成,在這里提出新的調度算法,改進Linux的實時性。即:
    發表于 04-02 14:43 ?330次閱讀

    linux進程調度淺析

    。(下面會說到)linux內核將進程分成兩個級別:普通進程和實時進程。實時進程優先級都高于普通
    發表于 04-02 14:45 ?282次閱讀

    Linux閱碼場原創精華文章分享,你值得擁有

    技術的前世今生之前世 郭?。?b class='flag-5'>Linux進程調度技術的前世今生之今生 宋寶華:是誰關閉了Linux搶占,而搶占又關閉了誰? 論打通Linux
    的頭像 發表于 10-10 16:28 ?2564次閱讀

    鴻蒙內核源碼:32級優先級進程和線程調度

    先看四個宏定義,進程和線程(線程就是任務)最高和最低優先級定義,[0,31]區間,即32級,優先級用于調度,CPU根據這個來決定先運行哪個進程
    的頭像 發表于 04-24 11:18 ?1639次閱讀

    uC/OS-II學習筆記——優先級反轉與優先級繼承機制

    優先級反轉,是指某同步資源被較低優先級進程/線程所擁有,較高優先級進程/線程競爭該同步資源未獲得該資源,而使得較高
    發表于 02-09 10:33 ?2次下載
    uC/OS-II學習筆記——<b class='flag-5'>優先級</b>反轉與<b class='flag-5'>優先級</b>繼承機制
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>