Linux“ Perf”工具无法在docker映像中运行?

后For​​sum:

我知道“ perf”工具需要根据特定的Linux内核版本进行安装。而且我知道所有docker映像都使用相同的Linux内核版本运行,无论Linux发行版如何。

我在docker内部使用了ubuntu 16.04,并且已经安装了linux-tools-common,启动性能告诉我我仍然缺少一些软件包:

# perf
/usr/bin/perf: line 32: lsb_release: command not found
WARNING: perf not found for kernel 4.9.12

  You may need to install the following packages for this specific kernel:
    linux-tools-4.9.12-moby
    linux-cloud-tools-4.9.12-moby

  You may also want to install one of the following packages to keep up to date:
    linux-tools-moby
    linux-cloud-tools-moby

然后我尝试安装我错过的东西:

root@xxxxxx:/# apt-get install linux-tools-4.9.12-moby linux-cloud-tools-4.9.12-moby
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-tools-4.9.12-moby
E: Couldn't find any package by glob 'linux-tools-4.9.12-moby'
E: Couldn't find any package by regex 'linux-tools-4.9.12-moby'
E: Unable to locate package linux-cloud-tools-4.9.12-moby
E: Couldn't find any package by glob 'linux-cloud-tools-4.9.12-moby'
E: Couldn't find any package by regex 'linux-cloud-tools-4.9.12-moby'
root@b2543b6e985d:/# apt-get install linux-tools-moby linux-cloud-tools-moby
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-tools-moby
E: Unable to locate package linux-cloud-tools-moby

(1)很奇怪,但是如何解决这个安装问题呢?

(2)另外:我仍然感到困惑,如果在“ perf”和“ kernel”之间没有严格的匹配,“ perf”在Linux的docker中如何工作良好?

osgx:

我知道“ perf”工具需要根据特定的Linux内核版本进行安装。而且我知道所有docker映像都使用相同的Linux内核版本运行,无论Linux发行版如何。

仍然可以使用其他版本内核的Perf工具(perf_event子系统中的syscall 具有良好的设计并且与旧/新工具兼容)。因此,您可以在任何/usr/bin/perf地方找到任何perf二进制文件(而不是脚本),ldd ..path_to_perf/perf使用(检查其库,并在Docker中复制perf(并安装libs)。

docker中可能限制硬件事件,系统范围或内核配置文件的使用,因此请尝试

  • perf -e cycles:u ./program (仅用于用户空间的硬件计数器),
  • perf -e task-clock ./program (内核和用户空间的软件计时器),
  • perf -e task-clock:u ./program (仅用于用户空间的软件计时器),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Linux Docker容器中运行时无法读取证书-适用于Windows

在Docker容器中挂载Linux映像

如何在Windows Server 2016上运行Linux Docker映像?

如何在Docker容器内的Linux perf工具中使用调试符号?

Docker-尝试构建映像时出现“无法在该平台上使用映像操作系统“ linux”

无法使用springboot将映像保存到linux中的磁盘

如何找出Docker映像中安装了哪个Linux?

在Linux上的Azure Web App中运行dotnet核心docker映像时,找不到与命令“ dotnet-/ .. /。dll”相匹配的可执行文件

在基于Alpine Linux的Docker映像中安装pylint

在Linux和Azure存储库上运行的Docker映像中的IdentityServer4和身份验证问题

无法在Linux中安装Docker Compose

无法在Oracle Linux中启动Docker引擎

无法在docker linux中运行Asp.Net Core

在Docker Linux容器中运行的BackgroundService类无法正常关闭

无法运行Docker映像

无法在Linux SQL Server docker映像中绑定安装Windows文件夹

无法在QEMU上运行Linux内核映像

在Linux中创建UDF映像

我是否需要root(管理员)权限才能运行用户空间“性能”工具?(在Linux内核中启用了perf事件)

Linux Mint 18 Beta映像无法启动

无法在高山linux(docker)中运行nginx

为什么'perf'需要与运行中的Linux内核版本完全匹配?

无法在Docker Alpine Linux映像中安装openjdk8-jre

在带有Linux容器的Win 10中安装的Docker For Desktop无法运行hello-world映像

无法在Linux CentOS中运行Docker容器,如何解决?

Perf linux工具:函数名称未显示在符号列中

无法访问本地主机在 Windows 中运行 docker linux 容器

rustembedded/cross- 无法覆盖 linux 映像

Docker 映像无法运行