监控cgroups

时间:2017-11-24 13:04:34

标签: linux perf

我目前正在尝试监控系统的一些硬件事件(6个硬件计数器和24个CPU)以及它的cgroup。我在这里以LLC load和cpu-cycles事件为例。

为此,我使用perf命令。

但是,当考虑空闲cgroup(实际上对应于仅运行bash的docker容器)并为cgroups或系统范围监视运行perf时,我似乎得到了大约相同数量的cpu-cycles在这两种情况下:

$ sudo perf stat  -e LLC-loads,cpu-cycles -a sleep 60
$ sudo perf stat -e instructions,cpu-cycles   --cgroup=docker/b1cd988201789e55128393cff5ffbf37b0d6efec0fc70e1b716163b4b1f91f1f -a sleep 60

我期待cgroup的cpu周期数量减少。 (提供--cpu=0-23-a选项时会得到相同的结果。)

我在这里错过了什么吗?

我想知道--cgroup选项是如何工作的。最后,它是否仅针对某些事件进行了配置?

提前感谢您的时间!

1 个答案:

答案 0 :(得分:3)

好的,我在文档中找到了答案,但不清楚:

  

-G name, - cgroup name monitor仅在名为“name”的容器(cgroup)中。此选项仅在per-cpu模式下可用。 cgroup   必须安装filesystem。属于容器“名称”的所有线程   在受监控的CPU上运行时会受到监控。多个cgroup   可以提供。每个cgroup都应用于相应的事件,   即,第一个cgroup到第一个事件,第二个cgroup到第二个事件和   等等。可以提供一个空的cgroup(监视所有的   时间)使用例如-G foo ,, bar。 Cgroup必须有相应的   事件,即它们总是指前面定义的事件   命令行。

实际上,这意味着为了从同一个perf命令中的1个cgroup中获取多个事件,我应该将该cgroup的名称列为事件数量的多次。

EDIT示例(必须使用长容器ID,但为了清楚起见,我在这里使用短ID):

sudo perf stat -e instructions,cpu-cycles,LLC-loads   --cgroup=docker/b1cd,docker/b1cd,docker/b1cd -a sleep 60