虛擬運行時間的計算
關(guān)于tick:
tick是周期性的時鐘中斷,時鐘中斷驅(qū)動調(diào)度器runing,其周期間隔根據(jù)硬件頻率的設(shè)定相關(guān)(T=1/f),如下:
T=1/250 = 4ms,也就說時鐘中斷以4ms為周期【tips:每發(fā)生一次時鐘中斷,jiffies的數(shù)值就加上1】,每一個進程的虛擬時間在時鐘中斷里面被維護,每次時鐘中斷都要更新當(dāng)前進程的虛擬時間。更新調(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);
}
-
Linux
+關(guān)注
關(guān)注
87文章
11430瀏覽量
212435 -
時鐘
+關(guān)注
關(guān)注
11文章
1859瀏覽量
132694
發(fā)布評論請先 登錄
如何縮短Vivado的運行時間

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

labview中計算程序的運行時間
如何用SysTick實現(xiàn)測量程序運行時間

電機運行時間進行排列 是分為兩個部分來完成這個程序的設(shè)計的

如何高效測量ECU的運行時間
淺析STM32代碼運行時間的技巧

ch32v307記錄程序運行時間
西門子SCL編程50臺電機運行時間累計方法

評論