杂谈

promsql内置函数irate 和 rate 的区别

irate()–最后两个样本数据的增长率

​​irate(v range-vector)​​

函数用于计算区间向量的增长率,其反应出的是瞬时增长率

irate 函数是通过区间向量中最后两个样本数据来计算区间向量的增长速率

先按你举的例子:

5 分钟 = 300 秒

一共 10 个样本

那么每个样本间隔 = 300 / 10 = 30 秒

但重点来了

irate 只用到 最后 2 个点!

不管你写:

  • [5m]
  • [10m]
  • [1h]

irate 都只看最新的两个点,前面的全部丢掉。

[5m] 包含:①~⑩ i

rate 只算:⑨ 和 ⑩

用这两个算:(⑩ − ⑨) / 30 秒 = 每秒速率

你写 [1m]、[2m]、[5m] 几乎没区别

只要区间能包含最后两个点就行。

———————————————————————————–

rate()–所有样本增长率的平均值

rate函数可以直接计算区间向量 v 在时间窗口内平均增长速率

rate会取指定时间范围内所有数据点,算出⼀组速率,然后取平均值作为结果,即:

(每两个样本的差值/30秒)算出多个rate,多个rate再计算平均值。

为什么这里rate==上面的irate??

因为看上图中五分钟内的采样数据,每两个样本的rate都是(2/30=0.066),所以rate==irate了。

所以irate适合快速变化的计数器(counter),⽽rate适合缓慢变化的计数器(counter)。

作用:看平均、趋势、平稳的速度
→ 曲线更平滑,适合看平均带宽、平均 PPS

总结(必背)

  • irate:瞬时速度(最后 2 个点)适合:实时、突发、峰值
  • rate:平均速度(整个时间段平均)适合:趋势、平均值、平稳曲线

Prev
No Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注