虛擬運行時間的計算
關于tick:
tick是周期性的時鐘中斷,時鐘中斷驅動調度器runing,其周期間隔根據硬件頻率的設定相關(T=1/f),如下:
T=1/250 = 4ms,也就說時鐘中斷以4ms為周期【tips:每發生一次時鐘中斷,jiffies的數值就加上1】,每一個進程的虛擬時間在時鐘中斷里面被維護,每次時鐘中斷都要更新當前進程的虛擬時間。更新調用的主要函數如下:
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);
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Linux
+關注
關注
87文章
11232瀏覽量
208961 -
時鐘
+關注
關注
10文章
1721瀏覽量
131378
發布評論請先 登錄
相關推薦
如何檢查Linux服務器的運行時間
Linux 中的 uptime 用于查看系統啟動后的運行時間。它是一個比較簡單的 Linux 命令,可以不帶參數直接運行。
發表于 11-25 15:25
?1.5w次閱讀
labview中計算程序的運行時間
可能這個對大家來說不是什么大問題,也有很多人有很多方法來實現程序的運行時間的計算,要么兩個計時器,要么用到事件結構。我這里用移位寄存器實現。 希望大家不要吐槽,如果大家有更好的,希望共享啊。
發表于 05-23 21:52
freertos的任務運行時間怎么設置
對于相同優先級的任務采用時間片輪詢的方式運行,那比如說有兩個優先級都為5的任務,那這兩個任務的運行時間如何設置呢?在rt-thread中創建任務時就可以設置任務的運行時間,在freer
發表于 07-19 08:03
電機運行時間進行排列 是分為兩個部分來完成這個程序的設計的
前幾天有個學員咨詢一個程序設計的問題,程序的控制要求如下:需要控制5臺電機的運行,每臺電機運行時需要記錄運行時間,電機啟動運行時,根據記錄的運行時間
如何高效測量ECU的運行時間
,最終可能會引起運行時間方面的問題。這在項目后期需要大量的時間和金錢來解決。如果不能掌握系統的運行狀態,則很難發現系統內缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測量標定硬件相結合,可同步分析 ECU內部
淺析STM32代碼運行時間的技巧
前言 ????測試代碼的運行時間的兩種方法: 使用單片機內部定時器,在待測程序段的開始啟動定時器,在待測程序段的結尾關閉定時器。為了測量的準確性,要進行多次測量,并進行平均取值。 借助示波器的方法
ch32v307記錄程序運行時間
ch32v307記錄程序運行時間 在程序開發中,很重要的一項任務就是對程序的運行時間進行評估。對于大型的程序系統來說,它們通常需要處理大量的數據或進行復雜的計算操作。因此,如果程序的運行時間
西門子SCL編程50臺電機運行時間累計方法
當RUN信號為TRUE時,開始計時,為FALSE時停止計時,單次運行時間清零,長按RESET為5秒時,單次和總運行時間都清零。
發表于 11-27 09:59
?1768次閱讀
jvm運行時內存區域劃分
JVM是Java Virtual Machine(Java虛擬機)的縮寫,它是Java編程語言的運行環境。JVM的主要功能是將Java源代碼轉換為機器代碼,并且在運行時管理Java程序的內存。JVM
三菱plc累計運行時間怎么編程
具有重要意義。本文將詳細介紹如何使用三菱PLC編程實現累計運行時間的統計功能。 一、概述 累計運行時間是指設備或系統在一定時間內的總運行時間。在工業生產中,對設備的累計
評論