那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

如何解決Linux進程調(diào)度優(yōu)先級數(shù)字混亂的問題?詳細實例分析

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

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

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

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

上面的MAX_RT_PRIO的值為:

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

用戶 內(nèi)核 Top
50 49 -51

咋回事

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

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

這個上面的50,對應內(nèi)核的49。如果我們把優(yōu)先級設置為51:

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

$ sudo chrt -f 88 ./a.out

對應內(nèi)核視角的11,對應top視角的-89:

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

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

普通的呢?

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

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

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

在一起

總結(jié)一下,4個例子

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

由此發(fā)現(xiàn),在top里面,RT策略的PR都顯示為負數(shù);最高優(yōu)先級的RT,顯示為rt。top命令里面也是,數(shù)字越小,優(yōu)先級越高。

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

    關(guān)注

    3

    文章

    1382

    瀏覽量

    40430
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

    210406
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    661

    瀏覽量

    33046

原文標題:宋寶華: 關(guān)于Linux進程優(yōu)先級數(shù)字混亂的徹底澄清

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

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式技術(shù)中如何定義進程優(yōu)先級

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

    基于優(yōu)先級搶占系統(tǒng)的QNX調(diào)度算法

    調(diào)度算法,是基于優(yōu)先級的。QNX的線程優(yōu)先級,是一個0-255的數(shù)字數(shù)字越大優(yōu)先級越高。所以,
    發(fā)表于 10-31 09:17 ?771次閱讀

    Linux進程優(yōu)先級和環(huán)境變量詳解

    cpu 資源分配的先后順序,就是指進程優(yōu)先權(quán)(priority) .優(yōu)先權(quán)高的進程優(yōu)先執(zhí)行權(quán)利。配置
    發(fā)表于 03-28 10:54 ?876次閱讀

    Linux內(nèi)核進程管理與調(diào)度:策略優(yōu)化與實踐分析

    今天給大家上點硬貨,關(guān)于Linux進程管理和調(diào)度是學習和理解Linux的必學知識。為協(xié)調(diào)多個進程 "同時" 運行,現(xiàn)代操作系統(tǒng)通常使用
    發(fā)表于 05-08 09:42 ?1172次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>進程</b>管理與<b class='flag-5'>調(diào)度</b>:策略優(yōu)化與實踐<b class='flag-5'>分析</b>

    干貨分享:基于嵌入式Linux進程調(diào)度實現(xiàn)方法

    可運行隊列中。Linux進程調(diào)度采用了動態(tài)優(yōu)先級 和權(quán)值調(diào)控的方法,既可實現(xiàn)上述三種調(diào)度策略,又能保證實時
    發(fā)表于 12-10 14:17

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

    OsTaskPriQueueTop查最高優(yōu)先級任務OsDequeEmptySchedMap進程出列[td]OsGetTopTask獲取被調(diào)度選擇的task鴻蒙內(nèi)核進程和線程各有32個就
    發(fā)表于 11-23 11:09

    Linux 2.6進程調(diào)度

    分析了與Linux 2.6 進程調(diào)度密切相關(guān)的一些重要數(shù)據(jù)結(jié)構(gòu),詳細描述了進程
    發(fā)表于 06-13 10:13 ?11次下載

    嵌入式系統(tǒng)優(yōu)先級反轉(zhuǎn)問題的分析

    摘要: 本文介紹了嵌入式系統(tǒng)任務調(diào)度優(yōu)先級反轉(zhuǎn)的一個實例。通過實例的討論對嵌入式系統(tǒng)優(yōu)先級反轉(zhuǎn)有一個更深入的了解,有助于在編程
    發(fā)表于 03-11 12:18 ?961次閱讀
    嵌入式系統(tǒng)<b class='flag-5'>優(yōu)先級</b>反轉(zhuǎn)問題的<b class='flag-5'>分析</b>

    Linux進程調(diào)度的原理解析

    、counter、rt_priority。這四項是選擇進程的依據(jù)。 其中,policy是進程調(diào)度策略,用來區(qū)分實時進程和普通進程,實時
    發(fā)表于 11-02 11:01 ?1次下載

    Linux 進程調(diào)度淺析

    優(yōu)先級,如果有多個進程同時處于可執(zhí)行狀態(tài),那么誰優(yōu)先級高誰就去執(zhí)行,沒有什么好糾結(jié)的了。那么,進程優(yōu)先級該如何確定呢?有兩種方式:由用戶
    發(fā)表于 04-02 14:40 ?365次閱讀

    嵌入式Linux實時進程調(diào)度算法改進

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

    linux進程調(diào)度淺析

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

    鴻蒙內(nèi)核源碼:32級優(yōu)先級進程和線程調(diào)度

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

    uC/OS-II學習筆記——優(yōu)先級反轉(zhuǎn)與優(yōu)先級繼承機制

    優(yōu)先級反轉(zhuǎn),是指某同步資源被較低優(yōu)先級進程/線程所擁有,較高優(yōu)先級進程/線程競爭該同步資源未獲得該資源,而使得較高
    發(fā)表于 02-09 10:33 ?2次下載
    uC/OS-II學習筆記——<b class='flag-5'>優(yōu)先級</b>反轉(zhuǎn)與<b class='flag-5'>優(yōu)先級</b>繼承機制

    深入Linux進程管理:提升效率與穩(wěn)定性的關(guān)鍵方法

    3.1Linux進程調(diào)度與多任務 3.2進程優(yōu)先級 3.3相對優(yōu)先級 3.4nice級別與權(quán)限
    的頭像 發(fā)表于 11-22 11:05 ?363次閱讀
    深入<b class='flag-5'>Linux</b><b class='flag-5'>進程</b>管理:提升效率與穩(wěn)定性的關(guān)鍵方法
    永利高百家乐官网现金网| 卢氏县| 百家乐是否能赢| 百家乐官网实战路| 新澳博百家乐官网的玩法技巧和规则| 永亨娱乐城| 威尼斯人娱乐城注册| 百家乐冯氏坐庄法| 粤港澳百家乐官网娱乐网| 太和县| 大发888bet亚洲lm0| 百家乐真人游戏网上投注| 网上百家乐官网赌博网| 百家乐官网长路投注法| 金都娱乐城真人娱乐| 百家乐破解秘| 百家乐轮盘桌| 海港城百家乐官网的玩法技巧和规则 | bet365官网bet365gwylc| 威斯汀百家乐的玩法技巧和规则| 申博太阳城娱乐城| 百家乐软件稳赚| 风水24个向的意思| 澳门百家乐官网赌技巧| 百家乐官网下注所有组合| 优博网| 大发888开户注册网站| 瑞士百家乐的玩法技巧和规则| 同乐城百家乐现金网| 励骏会百家乐官网的玩法技巧和规则 | 百家乐官网网上玩法| 百家乐官网经验博彩正网| 金鼎国际娱乐| 上海德州扑克比赛| 威尼斯人娱乐棋牌是真的吗| 百家乐赚钱方| 现场百家乐平台源码| 墓地附近做生意风水| 百家乐官网的出牌技巧| 百家乐官网剁手| 百家乐官网投注网址|