Linux 系统 CPU 调度与内核同步技术解析
1. CPU 调度相关内容
在 Linux 系统中,CPU 调度是一个复杂且关键的领域。RTL 内核虽然在最大延迟特性方面表现出色,但可能会导致整体吞吐量下降。这是因为 RTL 的优先级策略较为激进,可能会使用户空间的 CPU 资源减少。
可以使用现代 BPF 工具来测量调度器延迟,以下是一些常用的 BPF 工具及其功能:
| BPF 工具 | 测量内容 |
| — | — |
| runqlat - bpfcc | 任务在运行队列中等待轮到其在处理器上运行所花费的时间 |
| runqslower - bpfcc | 任务在运行队列中等待轮到其在处理器上运行所花费的时间,仅显示超过给定阈值(默认 10 ms,可通过传递时间阈值作为参数调整,单位为微秒)的线程,能让你了解哪些任务面临(相对)较长的调度延迟 |
| runqlen - bpfcc | 显示调度器运行队列的长度和占用情况(当前排队等待运行的线程数量) |
这些工具需要以 root 权限运行,输出以直方图形式呈现(默认时间单位为微秒),还可以按任务、系统中的每个进程甚至按 PID 命名空间提供指标。此外,还有更多与调度相关的 [e]BPF 前端工具,如 cpudist - bpfcc、cpuunclaimed - bpfcc、offcputime - bpfcc、wakeuptime - bpfcc 等。
还有一些内核空间的小例程可用于检查实时任务:
- rt_prio() :以优先级作为参数,返回一个布尔值,指示是否为实时任务。
- r
超级会员免费看
订阅专栏 解锁全文
4507

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



