iis服务器助手广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统中如何进行systemtap和火焰图分析及安装
  • 204
分享到

Linux系统中如何进行systemtap和火焰图分析及安装

2023-06-28 16:06:24 204人浏览 薄情痞子
摘要

linux系统中如何进行systemtap和火焰图分析及安装,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SystemTap 是对 Linux 内核监控和跟踪的工具,它与DTr

linux系统中如何进行systemtap和火焰图分析及安装,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

SystemTap 是对 Linux 内核监控和跟踪的工具,它与DTrace 的老技术有有点相似,因为SystemTap 没有使用工具构建一个特殊的内核,所以当我们使用时允许我们动态地安装改工具。

1.1  环境检测

安装前我们需要检测一下操作系统版本,命令如下:

# uname -r

3.10.0-327.el7.x86_64

# cat /etc/RedHat-release

Centos Linux release 7.2.1511 (Core)

我这里使用的CentOS 7.2,下面的介绍的安装方法也是在CentOS 上的方法。

1.2 安装SystemTap

安装部署SystemTap需要以下两个包:

systemtap

systemtap-runtime

在root权限下,使用yum安装,命令如下:

yum install systemtap systemtap-runtime

在使用SystemTap前,需要安装内核信息包,一般情况下,运行如下命令安装:

stap-prep

运行命令后往往会失败,安装不成功,安装失败后可以手动安装内核信息包。

我的服务器报的错误如下:

 No package kernel-debuginfo-3.10.0-514.el7.x86_64 available. Error: Nothing to do Loaded plugins: fastestmirror, langpacks enabling epel-debuginfo Loading mirror speeds from cached hostfile Could not find debuginfo for main pkg: kernel-3.10.0-514.el7.x86_64 No debuginfo packages available to install package kernel-debuginfo-3.10.0-514.el7.x86_64 is not installed problem installing rpm(s) kernel-debuginfo-3.10.0-514.el7.x86_64
1.3 手动安装内核信息包

需要的安装包如下:

kernel-debuginfo

kernel-debuginfo-common

kernel-devel

需要安装与你内核版本一致的安装包,运行命令查看版本:

# uname -r

3.10.0-327.el7.x86_64

可以指定你的内核是 3.10.0-327.el7.x86_64,因此你需要的包如下:

kernel-debuginfo-3.10.0-514.el7.x86_64.rpm

kernel-debuginfo-common-x86_64-3.10.0-514.el7.x86_64.rpm

kernel-devel-3.10.0-514.el7.x86_64.rpm

重要!!!!注意:这三个包必须与你的内核版本匹配,否则会安装不成功。

下载这三个 rpm 包,到 Http://rpm.pbone.net 这个网站去下载。或者最简单的在 Google 搜索包名。

分别安装这三个包:

rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-514.el7.x86_64.rpm

rpm -ivh kernel-debuginfo-3.10.0-514.el7.x86_64.rpm

rmp -ivh kernel-devel-3.10.0-514.el7.x86_64.rpm

也可以尝试使用yum安装,这里就不再赘述。

1.4  测试

测试一下是否安装部署成功,如何测试呢?运行如下命令:

stap -v -e ‘probe vfs.read {printf(“read perfORMed\n”); exit()}’

部署失败提示如下:

 # stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' Pass 1: parsed user script and 119 library scripts using 220240virt/33264res/3272shr/30276data kb, in 320usr/20sys/717real ms. semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/linux/vfs.stp:882:18         source: probe vfs.read = kernel.function("vfs_read")                                  ^  semantic error: missing x86_64 kernel/module debuginfo [man warning::debuginfo] under '/lib/modules/3.10.0-514.el7.x86_64/build'  semantic error: while resolving probe point: identifier 'vfs' at:1:7         source: probe vfs.read {printf("read performed\n"); exit()}                       ^  semantic error: no match  Pass 2: analyzed script: 0 probes, 0 functions, 0 embeds, 0 globals using 234228virt/47084res/5204shr/42164data kb, in 110usr/190sys/899real ms. Missing separate debuginfos, use: debuginfo-install kernel-3.10.0-514.el7.x86_64 Pass 2: analysis failed.  [man error::pass2]

部署成功提示如下:

 # stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' Pass 1: parsed user script and 119 library scripts using 220244virt/33264res/3272shr/30280data kb, in 360usr/30sys/530real ms. Pass 2: analyzed script: 1 probe, 1 function, 4 embeds, 0 globals using 351120virt/165268res/4472shr/161156data kb, in 1700usr/440sys/3951real ms. Pass 3: translated to C into "/tmp/stapeOM1BT/stap_bbe80ab58c56cba7fc7b6efecaadacb6_1647_src.c" using 351120virt/165564res/4768shr/161156data kb, in 10usr/50sys/63real ms. Pass 4: compiled C into "stap_bbe80ab58c56cba7fc7b6efecaadacb6_1647.ko" in 1880usr/490sys/4598real ms. Pass 5: starting run. read performed Pass 5: run completed in 10usr/40sys/406real ms.
二、火焰图介绍及安装
2.1 介绍

官网:火焰图(FlameGraphs)

火焰图(Flame Graph)是由 Linux 性能优化大师 Brendan Gregg 发明的。它是定位疑难杂症的神器,比如 CPU 占用高、内存泄漏等问题。

纵向表示调用栈的深度,横向表示消耗的时间。因为调用栈在横向会按照字母排序,并且同样的调用栈会做合并,所以,一个格子的宽度越大越说明其可能是瓶颈。

综上所述,主要就是看那些比较宽大的火苗,特别留意那些类似平顶山的火苗。

火焰图例子:

Linux系统中如何进行systemtap和火焰图分析及安装

2.2 安装

火焰图的安装比较简单,只需要把脚本从GitHub上down下来即可,命令如下:

git clone https://github.com/brendangregg/FlameGraph

2.3 生成火焰图

生成火焰图一般需要以下几个步骤:

1)、抓取和捕获堆栈信息:使用 perf/systemtap/dtrace 等工具抓取程序的运行堆栈信息。

2)、折叠堆栈:使用FlameGraph 中的 stackcollapse 程序 把抓取的信息进行分析组合;trace 工具抓取的系统和程序运行每一时刻的堆栈信息, 需要对他们进行分析组合, 将重复的堆栈累计在一起, 从而体现出负载和关键路径

3)、生成火焰图:使用FlameGraph中的flamegraph.pl 分析 stackcollapse 输出的堆栈信息生成火焰图

stackcollapse分很多工具,用来分析不同trace工具抓取的内核信息,比如stackcollapse-stap.pl 是用来分析 SystemTap捕获的信息。

三、使用

以具体的例子来说明SystemTap和FlameGraph 是如何使用的。

3.1 sample_bt_vfs 工具

这个工具是openresty的作者春哥写的,这个工具是在虚拟文件系统(VFS)之上采样用户空间调用栈,以便渲染出文件 I/O 火焰图,这个火焰图可以准确的反映出在任意正在运行的用户进程中,文件 I/O 数据量或者文件 I/O 延迟在不同的用户空间代码路径的分布。

工具使用详细介绍: sample_bt_vfs

工具包下载地址:openresty-systemtap-toolkit

方法:git  clone https://github.com/openresty/openresty-systemtap-toolkit.git

工具放在openresty-systemtap-toolkit目录下

以查看Nginx为例:

1)、使用SystemTap进行内核数据采集:

运行:

 $ ./sample-bt-vfs -p 12345 -t 3 > a_vfs.log WARNING: Tracing 20636 (/opt/nginx/sbin/nginx)... WARNING: Time's up. Quitting now...(it may take a while) WARNING: Number of errors: 0, skipped probes: 2

参数:

-p: 代表程序的PID

-t:代表要采集数据的时间

a_vfs.log: 是采集数据要保存的文件名子。

2)、分析组合采集的数据

运行:

 $ ./FlameGraph/stackcollapse-stap.pl a_vfs.log > a_vfs.cbt

3)、生成火焰图

运行:

 $ ./FlameGraph/flamegraph.pl ./a_vfs.cbt > a_vfs.svg

这里有一个 “文件 I/O 火焰图” 的例子:

Linux系统中如何进行systemtap和火焰图分析及安装

a_vfs.svg就是生成的火焰图,使用浏览器打开,找到宽平的项,就是比较耗时的。

3.2 sample-bt 工具

这个脚本可以对你指定的 任意 用户进程进行调用栈的采样。调用栈可以是用户空间,可以是内核空间,或者是两者兼得。 它的输出是汇总后的调用栈(按照总数)。

工具详细介绍:sample-bt

例如:

./openresty-systemtap-toolkit/sample-bt-vfs -p 41046 -t 50 -ku > 17_on_cpu.log

参数:

-p:代表进程ID

-t:代表采样时间 单位是秒

-u 采集用户空间调用栈信息

-k 采集内核空间调用栈信息

剩下的火焰图的生成方式同3.1。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

看完上述内容,你们掌握Linux系统中如何进行systemtap和火焰图分析及安装的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网操作系统频道,感谢各位的阅读!

--结束END--

本文标题: Linux系统中如何进行systemtap和火焰图分析及安装

本文链接: https://www.lsjlt.com/news/320591.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统中如何进行systemtap和火焰图分析及安装
    Linux系统中如何进行systemtap和火焰图分析及安装,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SystemTap 是对 Linux 内核监控和跟踪的工具,它与DTr...
    99+
    2023-06-28
  • 如何进行Linux系统syslog分析
    如何进行Linux系统syslog分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、日志系统之syslogsyslog是Linux系统中默认的日志守护进程,RHEL5上...
    99+
    2023-06-28
  • linux系统如何进行gcc安装
    linux系统如何进行gcc安装,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。GCC简介:GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GN...
    99+
    2023-06-28
  • 如何分析Linux系统安全防火墙iptables
    本篇文章为大家展示了如何分析Linux系统安全防火墙iptables,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤...
    99+
    2023-06-28
  • 如何进行linux ubuntu系统下的安装及设置
    这篇文章将为大家详细讲解有关如何进行linux ubuntu系统下的安装及设置,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。debian下安装MySQL:1...
    99+
    2024-04-02
  • Linux系统如何进行Centos 7.6安装
    这篇文章给大家介绍Linux系统如何进行Centos 7.6安装,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。记录安装CentOS 7.6系统过程一、安装准备(安装实体机服务器需要):服务器在安装系统前需要将新服务器的...
    99+
    2023-06-05
  • 如何进行CentOS 6安装JDK及系统配置
    今天就跟大家聊聊有关如何进行CentOS 6安装JDK及系统配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一直对CentOS情有独钟,但因为很少用到,所以基本上不该忘的都忘了,该...
    99+
    2023-06-16
  • Ubuntu系统中如何进行软件安装
    本篇内容主要讲解“Ubuntu系统中如何进行软件安装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ubuntu系统中如何进行软件安装”吧!一般的安装程序有三种:.deb和.rpm这2中安装文件....
    99+
    2023-06-13
  • 如何进行dd命令备份Linux系统的分析
    本篇文章为大家展示了如何进行dd命令备份Linux系统的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。数据丢失带来的损失是相当昂贵的。关键数据的丢失会对各种规模的企业带来影响。有几种方法来备份L...
    99+
    2023-06-28
  • 如何在Java中安装和使用NumPy进行数据分析?
    在数据分析领域,NumPy是一个非常流行的Python库,它提供了高性能的多维数组对象以及许多用于操作这些数组的函数。然而,很多人不知道NumPy也可以在Java中使用。本文将介绍如何在Java中安装和使用NumPy进行数据分析。 一、安装...
    99+
    2023-10-28
    git npm numy
  • Linux系统中如何安装截图工具Shutter
    这篇文章主要介绍了Linux系统中如何安装截图工具Shutter,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 添加安装包软件源$ sudo add-apt-rep...
    99+
    2023-06-28
  • Linux系统中如何安装和使用Aria2
    这篇文章主要为大家展示了“Linux系统中如何安装和使用Aria2”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统中如何安装和使用Aria2”这篇文章吧。Aria2 是一个多平台轻量...
    99+
    2023-06-27
  • 如何进行Unix与Linux操作系统差异的分析
    这篇文章给大家介绍如何进行Unix与Linux操作系统差异的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Unix与Linux操作系统是同一个操作系统吗是,也不是。或许这个答案有自相矛盾的地方,但是却是一个比较合理...
    99+
    2023-06-17
  • Linux系统如何对文件进行分割和重组
    Linux系统如何对文件进行分割和重组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用 csplit 分割文件csplit 是这些有趣的小命令中的一个,它永远...
    99+
    2023-06-28
  • 如何在Linux中进行系统安全审计和漏洞扫描
    在Linux系统中进行系统安全审计和漏洞扫描通常需要使用一些专门的工具和技术。以下是一些常用的工具和方法: 1、安全审计: 使用L...
    99+
    2024-04-02
  • 在OpenBSD系统上如何进行网络流量分析和安全审计
    在OpenBSD系统上进行网络流量分析和安全审计,你可以使用一些工具和技术来实现。以下是一些常用的方法: 使用tcpdump:t...
    99+
    2024-04-02
  • 如何在Linux系统上安装Git并进行版本控制?
    作为一款开源的分布式版本控制系统,Git在软件开发行业中被广泛使用。Git的使用可以大大提高代码的可维护性和可扩展性,而且它在多人协作开发中也非常方便。在本篇文章中,我们将介绍如何在Linux系统上安装Git,并学习如何使用Git进行版本控...
    99+
    2023-11-01
    linux git spring
  • 如何在麒麟操作系统上进行双系统安装和切换
    在麒麟操作系统上进行双系统安装和切换,可以按照以下步骤进行操作:1. 创建分区:首先需要在硬盘上创建一个新的分区,用于安装第二个操作...
    99+
    2023-10-10
    麒麟操作系统
  • Linux系统中如何安装Nmap图形化前端Zenmap
    Linux系统中如何安装Nmap图形化前端Zenmap,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在Linux系统中要想执行端口跟踪可以使用Nmap工具,可可以评估计算机的安...
    99+
    2023-06-28
  • 如何在Linux系统中安装和配置Systemd和Crontab
    在Linux系统中安装和配置Systemd和Crontab的步骤如下:1. 安装Systemd:- 使用包管理器安装Systemd。...
    99+
    2023-10-09
    Linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作