CPU 受限率(CPU throttling rate)解释和计算方式
什么是CPU受限率
CPU受限率用于衡量在特定时间段内,CPU 被限制运行的程度(即毛刺)。0%表示CPU没有受到限制,100%表示容器的CPU受限率达到100%。
CPU受限率相关指标
CPU 受限率可以通过计算在给定时间段内,CPU 被限制的时间与总时间的比值来获得。例如,如果在 100 毫秒的时间段内,CPU 被限制了 20 毫秒,那么 CPU 受限率为 20%。
CPU受限后,一般来说可能导致服务处理耗时增加。
在 Linux 系统中,可以通过分析 CFS(完全公平调度器)组调度器的统计信息来计算 CPU 受限率。这些信息可以在 /sys/fs/cgroup/cpu(或 /sys/fs/cgroup/cpuacct)目录下的 cpu.stat 文件中找到。cpu.stat 文件包含 nr_periods(控制周期数)和 nr_throttled(被限制次数)参数。
nr_periods:表示自从 CFS 组调度器启动以来,已经经过了多少个控制周期。一个控制周期是指 CFS 组调度器分配给组的固定时间窗口。在每个控制周期中,CFS 组调度器会根据组的权重分配 CPU 时间。
nr_throttled:表示自从 CFS 组调度器启动以来,该组被限制(throttled)的次数。当一个组在控制周期内已经消耗了其分配的 CPU 时间时,组会被限制,直到下一个控制周期开始。
如何计算cpu受限率
要计算 CPU 受限率,可以使用以下方法:
start time:
cat /sys/fs/cgroup/cpu/cpu.stat nr_periods 146232 nr_throttled 130 throttled_time 30197510213
nr_periods_1 = 146232
nr_throttled_1 = 130
10秒后
cat /sys/fs/cgroup/cpu/cpu.stat nr_periods 146332 nr_throttled 150 throttled_time 30197510213
nr_periods_2 = 146332
nr_throttled_2 = 150
则这10秒钟的cpu受限率 = (nr_throttled_2 - nr_throttled_1) / (nr_periods_2 - nr_periods_1) = (150-130) / (146332 - 146232) = 20%
参考资料
精准限制CPU:Cgroups https://zhuanlan.zhihu.com/p/551957994
CFS Bandwidth Control https://www.kernel.org/doc/html/v5.7/scheduler/sched-bwc.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
2021-12-12 CPU基础知识-CPU的组成 运算器、控制器、寄存器