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

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

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

Linux CFS虛擬時(shí)間

麥辣雞腿堡 ? 來源:技術(shù)簡(jiǎn)說 ? 作者:董旭 ? 2023-07-31 11:11 ? 次閱讀

**CFS調(diào)度算法:**摒棄固定時(shí)間片,采用進(jìn)程權(quán)重值的比重來量化計(jì)算實(shí)際運(yùn)行時(shí)間,并引入虛擬時(shí)間和真實(shí)時(shí)間的概念,真實(shí)時(shí)間就是在物理時(shí)鐘下實(shí)際運(yùn)行的時(shí)間,虛擬時(shí)間是實(shí)際運(yùn)行時(shí)間與nice值為0對(duì)應(yīng)的權(quán)值的比值。

**虛擬時(shí)間片引入:**假設(shè)進(jìn)程不存在優(yōu)先級(jí)區(qū)分,那么只要保證每個(gè)進(jìn)程的實(shí)際運(yùn)行時(shí)間相同即可,能做到絕對(duì)公平。調(diào)度時(shí),調(diào)度器只需要記錄每個(gè)進(jìn)程的實(shí)際時(shí)間,每次調(diào)度時(shí)挑出【已經(jīng)運(yùn)行時(shí)間最短的進(jìn)程】。

然而事實(shí)上每個(gè)進(jìn)程會(huì)涉及不同的優(yōu)先級(jí),此時(shí)不同的進(jìn)程應(yīng)該由于優(yōu)先級(jí)的原因?qū)е隆菊鎸?shí)運(yùn)行時(shí)間的所占權(quán)重】不同才行,那么如何評(píng)估進(jìn)程運(yùn)行時(shí)間的長(zhǎng)短?如何選擇下一個(gè)進(jìn)程進(jìn)行調(diào)度?

由此引入虛擬運(yùn)行時(shí)間【希望不同的進(jìn)程根據(jù)優(yōu)先級(jí)在一個(gè)調(diào)度延遲【調(diào)度延遲就是保證每一個(gè)可運(yùn)行進(jìn)程都至少運(yùn)行一次的時(shí)間間隔】?jī)?nèi)分配的物理時(shí)間通過一個(gè)公式計(jì)算得到一個(gè)相同的值,稱這個(gè)值為虛擬時(shí)間】,當(dāng)選擇下一個(gè)進(jìn)程執(zhí)行的時(shí)候,找出虛擬時(shí)間最小的進(jìn)程即可。虛擬時(shí)間要保證優(yōu)先級(jí)高的進(jìn)程的虛擬時(shí)間過得慢一些,優(yōu)先級(jí)低的進(jìn)程的虛擬時(shí)間快一些。

引入虛擬運(yùn)行時(shí)間,CFS中就緒隊(duì)列使用一棵以虛擬時(shí)間為鍵的紅黑樹將調(diào)度實(shí)體組織起來,利用紅黑樹的特性,虛擬時(shí)間最短的進(jìn)程在紅黑樹的最左端,調(diào)度器每次選擇位于紅黑樹最左端的虛擬時(shí)間對(duì)應(yīng)的調(diào)度實(shí)體參與調(diào)度。

如下所示,通過cat/proc/$pid/sched查看某個(gè)進(jìn)程調(diào)度信息,第二行se.vruntime就是虛擬運(yùn)行時(shí)間:

圖片

由上面的展示也可以看出來調(diào)度相關(guān)的這些信息是存儲(chǔ)在調(diào)度實(shí)體se中,【每個(gè)進(jìn)程描述符中都有每種調(diào)度類對(duì)應(yīng)的調(diào)度實(shí)體,調(diào)度實(shí)體存放與該調(diào)度類相關(guān)的調(diào)度信息,并參與調(diào)度,CFS調(diào)度器對(duì)應(yīng)的調(diào)度實(shí)體為struct sched_entity se,例如實(shí)時(shí)調(diào)度器對(duì)應(yīng)的調(diào)度實(shí)體為struct sched_rt_entity rt】,CFS調(diào)度器的調(diào)度實(shí)體如下:

struct sched_entity
{
    struct load_weight      load;           /* for load-balancing負(fù)荷權(quán)重,這個(gè)決定了進(jìn)程在CPU上的運(yùn)行時(shí)間和被調(diào)度次數(shù) */
    struct rb_node          run_node;
    unsigned int            on_rq;          /*  是否在就緒隊(duì)列上  */

    u64                     exec_start;         /*  上次啟動(dòng)的時(shí)間*/

    u64                     sum_exec_runtime;
    u64                     vruntime;        /* 虛擬運(yùn)行時(shí)間*/
    u64                     prev_sum_exec_runtime;
    /* rq on which this entity is (to be) queued: */
    struct cfs_rq           *cfs_rq;
    ...
};
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209521
  • CFS
    CFS
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    9054
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式工程師必會(huì)的 Linux 進(jìn)程調(diào)度所有知識(shí)點(diǎn)

    vriture_runtime 最小的任務(wù)來調(diào)度。 為了能夠快速找到虛擬運(yùn)行時(shí)間最小的進(jìn)程,Linux 內(nèi)核使用紅黑樹來保存可運(yùn)行的進(jìn)程。CFS跟蹤調(diào)度實(shí)體sched_entity的
    發(fā)表于 08-01 07:00

    基于RFID技術(shù)CFS智能倉(cāng)庫(kù)系統(tǒng)的解決方案

    系統(tǒng)簡(jiǎn)介集裝箱貨運(yùn)站(簡(jiǎn)稱CFS)是以裝箱、拆箱和集拼、分撥為主要業(yè)務(wù)的運(yùn)輸服務(wù)機(jī)構(gòu),同時(shí)提供集裝箱公路運(yùn)輸、箱務(wù)管理、報(bào)關(guān)報(bào)驗(yàn)、洗箱修箱等其他集裝箱運(yùn)輸?shù)南嚓P(guān)服務(wù)?;赗FID的CFS智能倉(cāng)庫(kù)管理
    發(fā)表于 09-19 08:20

    基于Linux虛擬網(wǎng)卡的測(cè)試系統(tǒng)

    為了實(shí)現(xiàn)網(wǎng)絡(luò)通信算法能夠在單主機(jī)平臺(tái)獲得驗(yàn)證分析,提出基于Linux虛擬網(wǎng)卡的測(cè)試系統(tǒng)設(shè)計(jì)方案。并完成了系統(tǒng)軟件設(shè)計(jì).分析了Linux網(wǎng)絡(luò)驅(qū)動(dòng)框架原理,完成Linux
    發(fā)表于 11-13 11:23 ?2次下載
    基于<b class='flag-5'>Linux</b><b class='flag-5'>虛擬</b>網(wǎng)卡的測(cè)試系統(tǒng)

    Linux容器和虛擬機(jī)之間的區(qū)別差異分析

    自從Linux上的容器變得流行以來,了解Linux容器和虛擬機(jī)之間的區(qū)別變得更加棘手。本文將向您提供詳細(xì)信息,以了解Linux容器和虛擬機(jī)之
    的頭像 發(fā)表于 12-27 13:52 ?9047次閱讀

    Linux負(fù)載均衡算法的瑕疵將修復(fù)

    Linux 內(nèi)核開發(fā)者 Vincent Guittot 發(fā)現(xiàn)Linux 完全調(diào)度算法 CFS 存在瑕疵,修復(fù)之后將進(jìn)一步提升調(diào)度性能。
    的頭像 發(fā)表于 03-14 09:23 ?1920次閱讀

    linux虛擬機(jī)的聯(lián)網(wǎng)方法

    虛擬機(jī)安裝linux系統(tǒng)無法上網(wǎng)的解決方法。
    發(fā)表于 05-31 09:27 ?1528次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>虛擬</b>機(jī)的聯(lián)網(wǎng)方法

    linux虛擬機(jī)怎么聯(lián)網(wǎng)

    虛擬機(jī)安裝linux系統(tǒng)無法上網(wǎng)的解決方法。
    發(fā)表于 06-03 09:29 ?2385次閱讀

    虛擬機(jī):Linux如何測(cè)試 DBUS Daemon

    虛擬機(jī):Linux如何測(cè)試 DBUS Daemon
    的頭像 發(fā)表于 06-22 16:35 ?4339次閱讀
    <b class='flag-5'>虛擬</b>機(jī):<b class='flag-5'>Linux</b>如何測(cè)試 DBUS Daemon

    Linux虛擬網(wǎng)絡(luò)技術(shù)的資料講解

    Linux虛擬化技術(shù)中,網(wǎng)絡(luò)級(jí)別上最重要的三項(xiàng)技術(shù)是網(wǎng)絡(luò)名稱空間、線對(duì)和Veth橋接器或虛擬交換機(jī)技術(shù)。 今天,我們將指導(dǎo)您學(xué)習(xí)Linux網(wǎng)絡(luò)虛擬
    的頭像 發(fā)表于 06-27 09:35 ?3687次閱讀

    Linux虛擬內(nèi)存究竟是什么?

    前不久組內(nèi)又有一次我比較期待的分享:”Linux虛擬內(nèi)存”。
    的頭像 發(fā)表于 06-21 16:41 ?2009次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>虛擬</b>內(nèi)存究竟是什么?

    Linux虛擬運(yùn)行時(shí)間的計(jì)算

    虛擬運(yùn)行時(shí)間的計(jì)算 關(guān)于tick: tick是周期性的時(shí)鐘中斷,時(shí)鐘中斷驅(qū)動(dòng)調(diào)度器runing,其周期間隔根據(jù)硬件頻率的設(shè)定相關(guān)(T=1/f),如下: T=1/250 = 4ms,也就說時(shí)鐘中斷以
    的頭像 發(fā)表于 07-31 11:15 ?737次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>虛擬</b>運(yùn)行<b class='flag-5'>時(shí)間</b>的計(jì)算

    linux虛擬機(jī)使用教程

    引言:Linux虛擬機(jī)是一種方便且常用的技術(shù),它允許用戶在現(xiàn)有操作系統(tǒng)的基礎(chǔ)上創(chuàng)建和運(yùn)行另一個(gè)獨(dú)立的操作系統(tǒng)。在本篇文章中,我們將提供一份詳盡的教程,幫助你了解如何安裝、配置和使用Linux
    的頭像 發(fā)表于 11-17 10:06 ?1273次閱讀

    虛擬機(jī)linux怎么編寫程序

    虛擬機(jī)Linux上編寫程序是一項(xiàng)非常常見且有用的任務(wù)。無論是開發(fā)一個(gè)簡(jiǎn)單的腳本、一個(gè)Web應(yīng)用程序還是一個(gè)復(fù)雜的軟件項(xiàng)目,Linux提供了強(qiáng)大的工具和環(huán)境來幫助你進(jìn)行編程。本文將詳細(xì)介紹如何在
    的頭像 發(fā)表于 11-17 10:08 ?1806次閱讀

    linux虛擬機(jī)怎么運(yùn)行代碼

    運(yùn)行代碼是Linux虛擬機(jī)中的常見操作,本文將詳細(xì)介紹如何運(yùn)行代碼。 首先,要運(yùn)行代碼,你需要先安裝好Linux虛擬機(jī),并確保能夠順利運(yùn)行。接下來,你需要打開
    的頭像 發(fā)表于 11-17 10:12 ?5150次閱讀

    怎么安裝linux虛擬機(jī)

    在計(jì)算機(jī)領(lǐng)域,虛擬機(jī)是一種軟件程序,它允許在主操作系統(tǒng)上運(yùn)行多個(gè)虛擬操作系統(tǒng)。Linux虛擬機(jī)在開發(fā)、測(cè)試和學(xué)習(xí)等環(huán)境中得到廣泛應(yīng)用。本文將詳細(xì)介紹如何安裝
    的頭像 發(fā)表于 11-23 10:50 ?1109次閱讀