理解谷歌 SRE 书中的一个例子

K B*_*Ben 3 monitoring

我目前正在阅读谷歌的 SRE 书,这是一本非常有趣的书。

在第 6 章 - 监控分布式系统中,有一节解释了如何选择合适的度量。

我不明白作者在解释测量粒度很重要时给出的例子。我们可以阅读:

收集 CPU 负载的每秒测量值可能会产生有趣的数据,但收集、存储和分析这种频繁的测量值可能非常昂贵。如果您的监控目标要求高分辨率但不需要极低的延迟,您可以通过在服务器上执行内部采样来降低这些成本,然后配置一个外部系统以随时间或跨服务器收集和聚合该分布。

你可能:

  1. 每秒记录当前的 CPU 利用率。
  2. 使用 5% 粒度的存储桶,每秒增加适当的 CPU 利用率存储桶。
  3. 每分钟汇总这些值。此策略允许您观察短暂的 CPU 热点,而不会因收集和保留而产生非常高的成本。

有人可以解释“5% 粒度”部分吗?

kas*_*erd 7

5% 粒度部分意味着您有 20 个不同的计数器。

每一秒您都会查看内核使用的 CPU 秒数的累积。如果使用率在 0% 到 5% 之间,您将增加第一个计数器。在 5 到 10 之间是第二个计数器。等等。在 95% 到 100% 之间,您会增加最后一个计数器。

例如,如果内核说 810.91 CPU 秒已被使用,而一秒前它说 810.83。您会知道过去一秒的使用率为 8%,这将是 5% 到 10% 的桶。

这是一个示例,具体细节当然取决于实际要求,如果您想在多 CPU 系统上执行类似的操作,则必须决定是需要每个 CPU 测量还是系统范围测量。