任何人都可以举例说明使用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命令都将受到赞赏。谢谢!
答案 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