深入探究CPU调度器与系统延迟测量
1. 引言
在计算机系统中,没有一种万能的解决方案能满足所有需求。在CPU调度方面,Linux内核有多种配置选项,不同的内核配置在不同场景下有不同的表现。本文将聚焦于系统延迟的概念、测量方法,以及如何在树莓派设备上进行相关测试。
2. 系统延迟的定义
- 调度延迟 :指内核调度器唤醒用户空间线程(或进程)使其变为可运行状态,到该线程(或进程)实际在处理器上运行所花费的时间。不过,“调度延迟”在另一种语境下,也指每个可运行任务保证至少运行一次的时间间隔,在近期的x86_64 Linux系统中,该可调参数
/proc/sys/kernel/sched_latency_ns默认值为24 ms。 - 中断延迟 :从硬件中断(如网络中断)发生,到其处理程序实际处理该中断所经过的时间。
3. cyclictest工具介绍
cyclictest 是由Thomas Gleixner编写的用户空间程序,用于测量内核延迟,其输出值以微秒为单位。通常,我们关注的是平均和最大延迟值。若这些值在系统可接受范围内,则一切正常;反之,可能需要进行产品特定的重新设计、内核配置调整,或检查其他时间关键的代码路径(包括用户空间)等。
下面以 cyclictest 进程为例,详细说明调度延迟。 cyclictest 进程运行时,内部会调用 nanosleep(2)
超级会员免费看
订阅专栏 解锁全文
1552

被折叠的 条评论
为什么被折叠?



