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

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

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

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

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

虛擬運(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,也就說(shuō)時(shí)鐘中斷以4ms為周期【tips:每發(fā)生一次時(shí)鐘中斷,jiffies的數(shù)值就加上1】,每一個(gè)進(jìn)程的虛擬時(shí)間在時(shí)鐘中斷里面被維護(hù),每次時(shí)鐘中斷都要更新當(dāng)前進(jìn)程的虛擬時(shí)間。更新調(diào)用的主要函數(shù)如下:

static void update_curr(struct cfs_rq *cfs_rq)
{
 struct sched_entity *curr = cfs_rq- >curr;
 u64 now = rq_clock_task(rq_of(cfs_rq));
 u64 delta_exec;

 if (unlikely(!curr))
  return;

 delta_exec = now - curr- >exec_start;
 if (unlikely((s64)delta_exec <= 0))
  return;

 curr- >exec_start = now;

 schedstat_set(curr- >statistics.exec_max,
        max(delta_exec, curr- >statistics.exec_max));

 curr- >sum_exec_runtime += delta_exec;
 schedstat_add(cfs_rq- >exec_clock, delta_exec);

 curr- >vruntime += calc_delta_fair(delta_exec, curr);
 update_min_vruntime(cfs_rq);

 if (entity_is_task(curr)) {
  struct task_struct *curtask = task_of(curr);

  trace_sched_stat_runtime(curtask, delta_exec, curr- >vruntime);
  cgroup_account_cputime(curtask, delta_exec);
  account_group_exec_runtime(curtask, delta_exec);
 }

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

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208468
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1701

    瀏覽量

    131183
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何縮短Vivado的運(yùn)行時(shí)間

    在Vivado Implementation階段,有時(shí)是有必要分析一下什么原因?qū)е?b class='flag-5'>運(yùn)行時(shí)間(runtime)過(guò)長(zhǎng),從而找到一些方法來(lái)縮短運(yùn)行時(shí)間。
    的頭像 發(fā)表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運(yùn)行時(shí)間</b>

    如何檢查Linux服務(wù)器的運(yùn)行時(shí)間

    Linux 中的 uptime 用于查看系統(tǒng)啟動(dòng)后的運(yùn)行時(shí)間。它是一個(gè)比較簡(jiǎn)單的 Linux 命令,可以不帶參數(shù)直接運(yùn)行。
    發(fā)表于 11-25 15:25 ?1.5w次閱讀
    如何檢查<b class='flag-5'>Linux</b>服務(wù)器的<b class='flag-5'>運(yùn)行時(shí)間</b>

    labview中計(jì)算程序的運(yùn)行時(shí)間

    可能這個(gè)對(duì)大家來(lái)說(shuō)不是什么大問(wèn)題,也有很多人有很多方法來(lái)實(shí)現(xiàn)程序的運(yùn)行時(shí)間計(jì)算,要么兩個(gè)計(jì)時(shí)器,要么用到事件結(jié)構(gòu)。我這里用移位寄存器實(shí)現(xiàn)。 希望大家不要吐槽,如果大家有更好的,希望共享啊。
    發(fā)表于 05-23 21:52

    freertos的任務(wù)運(yùn)行時(shí)間怎么設(shè)置

    對(duì)于相同優(yōu)先級(jí)的任務(wù)采用時(shí)間片輪詢的方式運(yùn)行,那比如說(shuō)有兩個(gè)優(yōu)先級(jí)都為5的任務(wù),那這兩個(gè)任務(wù)的運(yùn)行時(shí)間如何設(shè)置呢?在rt-thread中創(chuàng)建任務(wù)時(shí)就可以設(shè)置任務(wù)的運(yùn)行時(shí)間,在freer
    發(fā)表于 07-19 08:03

    C語(yǔ)言教程之顯示程序運(yùn)行時(shí)間

    C語(yǔ)言教程之顯示程序運(yùn)行時(shí)間,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-25 16:09 ?0次下載

    電機(jī)運(yùn)行時(shí)間進(jìn)行排列 是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的

    前幾天有個(gè)學(xué)員咨詢一個(gè)程序設(shè)計(jì)的問(wèn)題,程序的控制要求如下:需要控制5臺(tái)電機(jī)的運(yùn)行,每臺(tái)電機(jī)運(yùn)行時(shí)需要記錄運(yùn)行時(shí)間,電機(jī)啟動(dòng)運(yùn)行時(shí),根據(jù)記錄的運(yùn)行時(shí)間
    的頭像 發(fā)表于 07-19 08:57 ?6969次閱讀
    電機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>進(jìn)行排列 是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的

    高效的雙向主動(dòng)平衡器可延長(zhǎng)電池運(yùn)行時(shí)間

    高效的雙向主動(dòng)平衡器可延長(zhǎng)電池運(yùn)行時(shí)間
    發(fā)表于 03-19 09:06 ?3次下載
    高效的雙向主動(dòng)平衡器可延長(zhǎng)電池<b class='flag-5'>運(yùn)行時(shí)間</b>

    最大化延長(zhǎng)即使具有老化電池的汽車電池組運(yùn)行時(shí)間

    最大化延長(zhǎng)即使具有老化電池的汽車電池組運(yùn)行時(shí)間
    發(fā)表于 03-20 12:44 ?9次下載
    最大化延長(zhǎng)即使具有老化電池的汽車電池組<b class='flag-5'>運(yùn)行時(shí)間</b>

    如何高效測(cè)量ECU的運(yùn)行時(shí)間

    ,最終可能會(huì)引起運(yùn)行時(shí)間方面的問(wèn)題。這在項(xiàng)目后期需要大量的時(shí)間和金錢來(lái)解決。如果不能掌握系統(tǒng)的運(yùn)行狀態(tài),則很難發(fā)現(xiàn)系統(tǒng)內(nèi)缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測(cè)量標(biāo)定硬件相結(jié)合,可同步分析 ECU內(nèi)部
    的頭像 發(fā)表于 10-28 11:05 ?2128次閱讀

    淺析STM32代碼運(yùn)行時(shí)間的技巧

    前言 ????測(cè)試代碼的運(yùn)行時(shí)間的兩種方法: 使用單片機(jī)內(nèi)部定時(shí)器,在待測(cè)程序段的開(kāi)始啟動(dòng)定時(shí)器,在待測(cè)程序段的結(jié)尾關(guān)閉定時(shí)器。為了測(cè)量的準(zhǔn)確性,要進(jìn)行多次測(cè)量,并進(jìn)行平均取值。 借助示波器的方法
    的頭像 發(fā)表于 11-09 09:52 ?3752次閱讀
    淺析STM32代碼<b class='flag-5'>運(yùn)行時(shí)間</b>的技巧

    Linux CFS虛擬時(shí)間

    **CFS調(diào)度算法:**摒棄固定時(shí)間片,采用進(jìn)程權(quán)重值的比重來(lái)量化計(jì)算實(shí)際運(yùn)行時(shí)間,并引入虛擬時(shí)間和真實(shí)
    的頭像 發(fā)表于 07-31 11:11 ?600次閱讀
    <b class='flag-5'>Linux</b> CFS<b class='flag-5'>虛擬</b><b class='flag-5'>時(shí)間</b>

    ch32v307記錄程序運(yùn)行時(shí)間

    ch32v307記錄程序運(yùn)行時(shí)間 在程序開(kāi)發(fā)中,很重要的一項(xiàng)任務(wù)就是對(duì)程序的運(yùn)行時(shí)間進(jìn)行評(píng)估。對(duì)于大型的程序系統(tǒng)來(lái)說(shuō),它們通常需要處理大量的數(shù)據(jù)或進(jìn)行復(fù)雜的計(jì)算操作。因此,如果程序的運(yùn)行時(shí)間
    的頭像 發(fā)表于 08-22 15:53 ?798次閱讀

    西門子SCL編程50臺(tái)電機(jī)運(yùn)行時(shí)間累計(jì)方法

    當(dāng)RUN信號(hào)為TRUE時(shí),開(kāi)始計(jì)時(shí),為FALSE時(shí)停止計(jì)時(shí),單次運(yùn)行時(shí)間清零,長(zhǎng)按RESET為5秒時(shí),單次和總運(yùn)行時(shí)間都清零。
    發(fā)表于 11-27 09:59 ?1673次閱讀
    西門子SCL編程50臺(tái)電機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>累計(jì)方法

    jvm運(yùn)行時(shí)內(nèi)存區(qū)域劃分

    JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,它是Java編程語(yǔ)言的運(yùn)行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機(jī)器代碼,并且在運(yùn)行時(shí)管理Java程序的內(nèi)存。JVM
    的頭像 發(fā)表于 12-05 14:08 ?471次閱讀

    三菱plc累計(jì)運(yùn)行時(shí)間怎么編程

    具有重要意義。本文將詳細(xì)介紹如何使用三菱PLC編程實(shí)現(xiàn)累計(jì)運(yùn)行時(shí)間的統(tǒng)計(jì)功能。 一、概述 累計(jì)運(yùn)行時(shí)間是指設(shè)備或系統(tǒng)在一定時(shí)間內(nèi)的總運(yùn)行時(shí)間。在工業(yè)生產(chǎn)中,對(duì)設(shè)備的累計(jì)
    的頭像 發(fā)表于 06-20 11:31 ?1771次閱讀