gpt4 book ai didi

linux - "vmstat"和 "perf stat -a"显示上下文切换的不同数字

转载 作者:太空狗 更新时间:2023-10-29 11:48:29 25 4
gpt4 key购买 nike

我试图了解我的系统(在 AWS EC2 上运行)的上下文切换率,以及切换的来源。只是得到数字已经令人困惑,因为我知道可以输出这样一个指标的两个工具给我不同的结果。这是 vmstat 的输出:

$ vmstat -w 2
procs -------------------memory------------------ ---swap-- -----io---- --system-- -----cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st
8 0 0 443888 492304 8632452 0 0 0 1 0 0 14 2 84 0 0
37 0 0 444820 492304 8632456 0 0 0 20 131602 155911 43 5 52 0 0
8 0 0 445040 492304 8632460 0 0 0 42 131117 147812 46 4 50 0 0
13 0 0 446572 492304 8632464 0 0 0 34 129154 142260 49 4 46 0 0

这个数字是 ~140k-160k/秒。

但是 perf 告诉了其他事情:

$ sudo perf stat -a
Performance counter stats for 'system wide':

2980794.013800 cpu-clock (msec) # 35.997 CPUs utilized
12,335,935 context-switches # 0.004 M/sec
2,086,162 cpu-migrations # 0.700 K/sec
11,617 page-faults # 0.004 K/sec
...

0.004 M/sec 显然是 4k/sec。

为什么这两种工具之间存在差异?我是否误解了他们中的任何一个,或者他们的 CS 指标是否有所不同?

FWIW,我试过在运行不同工作负载的机器上做同样的事情,那里的差异甚至大两倍。

环境:

  • AWS EC2 c5.9xlarge 实例
  • Amazon Linux,内核 4.14.94-73.73.amzn1.x86_64
  • 该服务在 Docker 18.06.1-ce 上运行

最佳答案

一些最新版本的 perfa unit-scaling bug在打印代码中。手动执行 12.3M/wall-time,看看是否正常。 (剧透警告:根据 OP 的评论。)

https://lore.kernel.org/patchwork/patch/1025968/

提交 0aa802a79469(“性能统计:摆脱额外的时钟显示function") 在主线 Linux 4.19-rc1 左右引入了该错误。

Thus, perf_stat__update_shadow_stats() now saves scaled values of clock events in msecs, instead of original nsecs. But while calculating values of shadow stats we still consider clock event values in nsecs. This results in a wrong shadow stat values.

2018 年 12 月 17 日星期一的提交 57ddf09173c1 在 5.0-rc1 中修复了它,最终与 perf 上游版本 5.0 一起发布。


cherry-pick 提交稳定内核的供应商内核树可能有错误或较早地修复错误。

关于linux - "vmstat"和 "perf stat -a"显示上下文切换的不同数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com