全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux虚拟运行时间的计算

时间:2023-07-31 11:15

人气:

作者:admin

标签: 时钟 

导读:...

虚拟运行时间的计算

关于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);
}
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信