0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux虚拟运行时间的计算

麦辣鸡腿堡 来源:技术简说 作者:董旭 2023-07-31 11:15 次阅读

虚拟运行时间的计算

关于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

    文章

    11303

    浏览量

    209436
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131474
收藏 人收藏

    评论

    相关推荐

    如何缩短Vivado的运行时间

    在Vivado Implementation阶段,有时是有必要分析一下什么原因导致运行时间(runtime)过长,从而找到一些方法来缩短运行时间
    的头像 发表于 05-29 14:37 1.4w次阅读
    如何缩短Vivado的<b class='flag-5'>运行时间</b>

    如何检查Linux服务器的运行时间

    Linux 中的 uptime 用于查看系统启动后的运行时间。它是一个比较简单的 Linux 命令,可以不带参数直接运行
    发表于 11-25 15:25 1.5w次阅读
    如何检查<b class='flag-5'>Linux</b>服务器的<b class='flag-5'>运行时间</b>

    labview中计算程序的运行时间

    可能这个对大家来说不是什么大问题,也有很多人有很多方法来实现程序的运行时间计算,要么两个计时器,要么用到事件结构。我这里用移位寄存器实现。 希望大家不要吐槽,如果大家有更好的,希望共享啊。
    发表于 05-23 21:52

    freertos的任务运行时间怎么设置

    对于相同优先级的任务采用时间片轮询的方式运行,那比如说有两个优先级都为5的任务,那这两个任务的运行时间如何设置呢?在rt-thread中创建任务时就可以设置任务的运行时间,在freer
    发表于 07-19 08:03

    C语言教程之显示程序运行时间

    C语言教程之显示程序运行时间,很好的C语言资料,快来学习吧。
    发表于 04-25 16:09 0次下载

    如何用SysTick实现测量程序运行时间

    在实际的项目开发过程中,常常遇到需要得到一段代码的运行时间,通常的方法是用示波器来测量,这篇博文将用 SysTick 来实现 精确测量 程序运行时间。 STM32F4 的内核定时器SysTick是一个24位的定时器,需要注
    的头像 发表于 05-09 14:07 6056次阅读
    如何用SysTick实现测量程序<b class='flag-5'>运行时间</b>

    电机运行时间进行排列 是分为两个部分来完成这个程序的设计的

    前几天有个学员咨询一个程序设计的问题,程序的控制要求如下:需要控制5台电机的运行,每台电机运行时需要记录运行时间,电机启动运行时,根据记录的运行时间
    的头像 发表于 07-19 08:57 7199次阅读
    电机<b class='flag-5'>运行时间</b>进行排列 是分为两个部分来完成这个程序的设计的

    最大化延长即使具有老化电池的汽车电池组运行时间

    最大化延长即使具有老化电池的汽车电池组运行时间
    发表于 03-20 12:44 9次下载
    最大化延长即使具有老化电池的汽车电池组<b class='flag-5'>运行时间</b>

    如何高效测量ECU的运行时间

    ,最终可能会引起运行时间方面的问题。这在项目后期需要大量的时间和金钱来解决。如果不能掌握系统的运行状态,则很难发现系统内缺陷的根源。 解决方案 将TA软件工具套件与VX1000测量标定硬件相结合,可同步分析 ECU内部
    的头像 发表于 10-28 11:05 2223次阅读

    浅析STM32代码运行时间的技巧

    前言     测试代码的运行时间的两种方法: 使用单片机内部定时器,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。为了测量的准确性,要进行多次测量,并进行平均取值。 借助示波器的方法
    的头像 发表于 11-09 09:52 3884次阅读
    浅析STM32代码<b class='flag-5'>运行时间</b>的技巧

    Linux CFS虚拟时间

    **CFS调度算法:**摒弃固定时间片,采用进程权重值的比重来量化计算实际运行时间,并引入虚拟时间和真实
    的头像 发表于 07-31 11:11 717次阅读
    <b class='flag-5'>Linux</b> CFS<b class='flag-5'>虚拟</b><b class='flag-5'>时间</b>

    ch32v307记录程序运行时间

    ch32v307记录程序运行时间 在程序开发中,很重要的一项任务就是对程序的运行时间进行评估。对于大型的程序系统来说,它们通常需要处理大量的数据或进行复杂的计算操作。因此,如果程序的运行时间
    的头像 发表于 08-22 15:53 905次阅读

    西门子SCL编程50台电机运行时间累计方法

    当RUN信号为TRUE时,开始计时,为FALSE时停止计时,单次运行时间清零,长按RESET为5秒时,单次和总运行时间都清零。
    发表于 11-27 09:59 1890次阅读
    西门子SCL编程50台电机<b class='flag-5'>运行时间</b>累计方法

    jvm运行时内存区域划分

    JVM是Java Virtual Machine(Java虚拟机)的缩写,它是Java编程语言的运行环境。JVM的主要功能是将Java源代码转换为机器代码,并且在运行时管理Java程序的内存。JVM
    的头像 发表于 12-05 14:08 536次阅读

    三菱plc累计运行时间怎么编程

    具有重要意义。本文将详细介绍如何使用三菱PLC编程实现累计运行时间的统计功能。 一、概述 累计运行时间是指设备或系统在一定时间内的总运行时间。在工业生产中,对设备的累计
    的头像 发表于 06-20 11:31 2300次阅读