当前位置: 首页 > news >正文

Prometheus node_exporter计算CPU利用率的标准公式应该是哪一个

有关CPU利用率计算的两个公式

使用PromQL计算CPU利用率,目前网上有两种说法。第一种(rate和irate均可,一个反映区间值,一个反映瞬时值,新版本指标名为node_cpu_seconds_total),计算单核:

1 - rate(node_cpu{mode="idle"}[5m])

计算节点,取各核平均值:

avg(1 - rate(node_cpu{mode="idle"}[5m])) by (instance)

第二种,计算单核:

1 - sum(increase(node_cpu{mode="idle"}[1m])) by (cpu,instance) / sum(increase(node_cpu[1m])) by (cpu,instance)

计算节点:

1 - sum(increase(node_cpu{mode="idle"}[1m])) by (instance) / sum(increase(node_cpu[1m])) by (instance)

为什么使用irate/rate计算CPU利用率结果是不准确/错误的

在实际使用中我们会发现,当节点的CPU实际利用率较低时,使用第一种公式计算出的CPU利用率与实际相差较大,这是因为该公式存在逻辑上的错误。以1 - rate(node_cpu{mode="idle"}[5m]),该公式计算逻辑为1 - 5分钟内CPU idle时间/CPU总运行时间5分钟,即假定CPU 5分钟内处于各状态的时间之和为5m。

我们使用一台4核空闲机器进行测试,top显示节点与单核CPU利用率约在1%左右,此时计算sum(increase(node_cpu[5m])) by (cpu),可见5分钟内各状态时间之和约为50-60s:
在这里插入图片描述
使用chaosd加压(chaosd attack stress cpu -l 50 -w 4),top显示节点与单核CPU利用率约在75-85%左右,此时计算sum(increase(node_cpu[5m])) by (cpu),可见5分钟内各状态时间之和约为180-190s:
在这里插入图片描述
继续加压(chaosd attack stress cpu -l 90 -w 4),top显示节点与单核CPU利用率约在92-93%左右,此时计算sum(increase(node_cpu[5m])) by (cpu),可见5分钟内各状态时间之和约为280-290s:
在这里插入图片描述
由此可见,只有在CPU利用率较高时,CPU各状态之和才近似等于节点运行时间。

结论

使用irate/rate计算CPU利用率是不准确的,且CPU利用率越低计算结果越不准确。

因此在使用node_exporter计算CPU利用率时,因采用第二种方法。

相关文章:

  • 如何与听力损失者沟通
  • kafka发送大消息
  • 【开源】基于JAVA的学校热点新闻推送系统
  • 时间和空间复杂度
  • 设计测试用例
  • 3分钟了解安全数据交换系统有什么用!
  • 360勒索病毒:了解最新变种.360,以及如何保护您的数据
  • 升压斩波电路的simulink建模与仿真
  • 外卖系统开发:构建高效、安全的外卖平台
  • Arduino/Android 蓝牙通信系统设计解决方案
  • 面试心得总结ing版
  • 模式识别与机器学习(十):梯度提升树
  • Iceberg: COW模式下的MERGE INTO的执行流程
  • 【小白攻略】php 小数转为百分比,保留两位小数的函数
  • FFmpeg常见命令行
  • 【知识点随笔分享 | 第九篇】常见的限流算法
  • Linux命令-查看内存、GC情况及jmap 用法
  • Linux可执行文件动态库依赖
  • MyBatis:Generator
  • EasyExcel使用: RGB字体,RGB背景颜色,fillForegroundColor颜色对照表
  • 第1现场 | 印巴冲突:印50多年来首次举行大规模民防演习
  • 两部上戏学生作品亮相俄罗斯“国际大学生戏剧节”
  • 金融监管总局:近五年民企贷款投放年平均增速比各项贷款平均增速高出1.1个百分点
  • “救护车”转运病人半路加价,从宝鸡到西安往返都要多收钱
  • 我国科研团队发布第四代量子计算测控系统
  • 五一假期上海接待游客1650万人次,全要素旅游交易总额超200亿元