写点什么

Perfkit - 性能分析与测量工具集

作者:ycwang
  • 2023-01-29
    广东
  • 本文字数:1736 字

    阅读完需:约 6 分钟

在我们进行软件、系统性能测量与优化的时候,经常会发现某个服务器或者虚拟机上,性能不正常了。想去抓取性能数据来分析定位的时候,因为很多工具默认是不安装的、而且有的时候也无法安装,没法及时抓取各种数据,然后就抓瞎了。


因此,实现了一个 Dockerfile,包括了常见的各种 Linux 性能工具,包括 perf、sar、vmstat、mpstat、iostat、top、htop、numastat、netstat、ss、ethtool、tcpdump 等等。


以及,自带了生成火焰图的工具 FlameGraph。


同时也包括了基于 eBPF 的工具集合BCC,通过 BCC 的工具集,可以更加精细、有针对性地来抓取数据。其中包括了:profile、offcputime、execsnoop、runqlat、runqlen、softirqs、hardirqs、opensnoop、filetop、cachestat、tcplife、tcptop、tcpretrans 等等。


这样,事先编译这个 Dockerfile:


$ cd perfkit$ docker build --tag perfkit .
复制代码


然后,把它导出成 perfkit.img 文件:


$ docker save -o perfkit.img perfkit:latest
复制代码


在需要分析测量的 Host 上面(需要安装了 Docker),导入之前的 perfkit.img 文件:


$ docker load < perfkit.img
复制代码


然后运行这个容器,就可以随时随地开始抓取所需的性能数据了:


$ docker run --privileged -v /lib/modules:/lib/modules:ro -v /usr/src:/usr/src:ro -v /sys/kernel/debug:/sys/kernel/debug:rw -v /etc/localtime:/etc/localtime:ro -it perfkit bash
复制代码


这个 Dockerfile 是基于 Ubuntu 22.04,也只在 Ubuntu 22.04 的 Host 上试过。


发现了什么问题、或者有什么建议,欢迎告诉我。


# perfkit# Run: docker run --privileged -v /lib/modules:/lib/modules:ro -v /usr/src:/usr/src:ro -v /sys/kernel/debug:/sys/kernel/debug:rw -v /etc/localtime:/etc/localtime:ro -it --pid=host perfkit bash
# Build IntermediateARG OS_IMAGE=ubuntuARG OS_VER=22.04ARG DEBIAN_FRONTEND=noninteractive FROM ${OS_IMAGE}:${OS_VER} as Intermediate
# Download, build and install bcc to intermediate imageRUN apt-get update && \ apt-get install -y python-is-python3 libclang-14-dev arping netperf iperf \ checkinstall bison build-essential cmake flex git libedit-dev libllvm14 \ llvm-14-dev zlib1g-dev libelf-dev libfl-dev python3-distutils wgetARG BCC_VER=v0.25.0ARG BCC_NAME=bcc-src-with-submodule.tar.gzRUN wget https://kgithub.com/iovisor/bcc/releases/download/${BCC_VER}/${BCC_NAME} && \ tar xf ${BCC_NAME} && \ cd bcc && \ mkdir build && \ cd build && \ cmake -DCMAKE_INSTALL_PREFIX=/usr -DPYTHON_CMD=python3 .. && \ make && \ make install

# Build final imageARG OS_IMAGE=ubuntuARG OS_VER=22.04FROM ${OS_IMAGE}:${OS_VER}LABEL Author="Yuchuan Wang, yuchuan.wang@gmail.com"
# Linux performance measurement and tuning tools: # perf, sar, vmstat, mpstat, pidstat, iostat, free, top, htop, # netstat, ethtool, ip, ss, nstat, nicstat, tcpdump, netperf, iperf, # turbostat, numactl, numastat, slabtopRUN apt-get -y update && \ apt-get install -y vim apt-utils pciutils psmisc linux-tools-common linux-tools-generic \ strace sysstat htop pstack numactl net-tools iproute2 nicstat ethtool tcpdump arping netperf \ iperf tcpreplay fatrace git python-is-python3 python3-distutils
# FlamegraphARG FLAME_REPO=https://github.com/brendangregg/FlameGraph.git# Github is blocked by China GFW ridiculously# so use this mirror instead in China for the case there is no ladder: ARG FLAME_REPO=https://kgithub.com/brendangregg/FlameGraph.gitRUN git clone --depth 1 ${FLAME_REPO}
# Copy files to final imageCOPY README.md /# Copy BCC tools to final imageCOPY --from=Intermediate /usr/share/bcc/ /usr/share/bcc/COPY --from=Intermediate /usr/lib/ /usr/lib/COPY --from=Intermediate /usr/include/bcc/ /usr/include/bcc/
# Add BCC tools to PATHENV PATH="${PATH}:/usr/share/bcc/tools/"
复制代码


用户头像

ycwang

关注

还未添加个人签名 2018-11-13 加入

还未添加个人简介

评论

发布
暂无评论
Perfkit - 性能分析与测量工具集_Linux_ycwang_InfoQ写作社区