使用perf进行容器范围分析的示例

时间:2017-12-02 01:33:58

标签: record perf cgroups

任何人都可以举例说明使用perf?

进行容器范围的分析

perf手册有以下说明:        -G name,..., - group name,...            仅监视名为" name"的容器(cgroup)。此选项仅在per-cpu模式下可用。必须安装cgroup文件系统。            属于容器的所有线程" name"在受监控的CPU上运行时会受到监控。可以提供多个cgroup。每个cgroup是            应用于相应的事件,即第一个cgroup到第一个事件,第二个cgroup到第二个事件,依此类推。有可能提供            空cgroup(一直监视)使用例如-G foo ,, bar。 Cgroup必须具有相应的事件,即它们总是引用事件            先前在命令行中定义。

但是如何获得cgroup名称?如果我的程序想要分析它所驻留的整个容器,如何获取其识别的主机cgroup的名称?

任何示例perf命令都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

perf使用perf_event层次结构中的cgroup来确定要跟踪的进程。 Docker在名为perf_event的cgroup中创建所有docker cgroup,并且容器由其完整的容器ID哈希标识。您可以通过主机上的docker ps --no-trunc或容器内的grep perf /proc/self/cgroup | cut -d : -f 3来获取此信息。

perf的论点是--cgroup=docker/container_id