动态追踪
文章平均质量分 95
香烟头
这个作者很懒,什么都没留下…
展开
-
Linux动态追踪
目录动态追踪历史 追踪机制说明 常用追踪工具 线上实践指南 总结 参考动态追踪历史严格来讲 Linux 中的动态追踪技术其实是一种高级的调试技术, 可以在内核态和用户态进行深入的分析, 方便开发者或系统管理者便捷快速的定位和处理问题. Linux 在过去十多年的发展中, 演化了很多追踪技术, 不过一直没有一款可以媲美Solaris/FreeBSD系统中的DTrace追踪工具, 直到Linux 4.1+版本eBPF机制的出现, 这种情况才得到了极大的改善. 不过eBPF...转载 2022-03-01 13:40:58 · 594 阅读 · 0 评论 -
uprobe
项目上需要分析用户态程序的性能,开发人员一般的方式是在程序内部实现打点函数,记录当程序运行到该点的时间戳,通过比较两点之间的时间间隔来估计两点之间的时间消耗。这样一方面增加了开发的工作量,另外这些打点也会给业务带来额外性能消耗,是否有另外的方式来解决该问题呢?前段时间在研究ftrace,发现其还有个uprobe特性,故名思意就是用户态的探针工具,今天尝试了下uprobe的使用,小结如下:1.编写小测试程序如下:#include <stdlib.h>#include <s.转载 2020-10-15 15:44:22 · 765 阅读 · 0 评论 -
内存泄露
本文由西邮陈莉君教授研一学生戴君毅、梁金荣、马明慧等翻译,宋宝华老师指导和审核。译者戴君毅、梁金荣、马明慧等同学热爱开源,践行开放、自由和分享。原文地址:http://www.brendangregg.com/FlameGraphs/memoryflamegraphs.html正文当你的应用程序占用的内存不断地提升时,你不得不立即修复它。造成这种情况的原因可能是因为错误配置而导致的内存增长,也可能是因为软件bug引起的内存泄露。无论哪一种,由于垃圾回收机制开始积极响应(消耗CPU),一些应用的性转载 2020-09-23 10:54:36 · 382 阅读 · 0 评论 -
system 错误记录
在一次采集off cpu时,脚本老报错,too many pending(error),加上MAXERRORS这个宏也不管用,然后加上参数 --vp00002发现打印出了probe overhead exceeded threshold,这是脚本开销太大了,超过了正常的负载,通过查看代码可以用STP_NO_OVERLOAD来解除这个限制...原创 2019-03-22 14:13:56 · 966 阅读 · 0 评论 -
Iowait的成因、对系统影响及对策
什么是iowait?顾名思义,就是系统因为io导致的进程wait。再深一点讲就是:这时候系统在做io,导致没有进程在干活,cpu在执行idle进程空转,所以说iowait的产生要满足两个条件,一是进程在等io,二是等io时没有进程可运行。Iowait是如何计算的?先说说用户如何看到iowait吧我们通常用vmstat就能看到iowat,图中的wa就是(标红)这个转载 2017-09-03 14:51:50 · 17443 阅读 · 0 评论 -
ERROR: module version mismatch
systemtap 进阶执行hello word命令出错:stap -e 'probe begin { log("hello world") exit() }'从错误来看,只是比较时间上有差异,而且差别不大,如果能不比较该时间,或许问题就解决了(其实我们前面犯过一个不大不小的错误)通过stap -v 选项 (可以多些几个v的,v越多信息越详细),如下转载 2017-08-31 09:12:45 · 3776 阅读 · 0 评论 -
systemtap ERROR: Build-id mismatch: "kernel" vs. "vmlinux" byte 0
ERROR: Build-id mismatch: "kernel" vs. "vmlinux" byte 0 (0x42 vs 0xe0) address 0xffffffff814e5b80 rc 0Pass 5: run failed. Try again with another '--vp 00001' option.原创 2014-10-28 14:08:42 · 1617 阅读 · 0 评论 -
systemtap基本用法
systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工具,后续将会有系列文章介绍systemtap的用法。什么是systemtap假如现在有这么一个需求:需要获取正在运行的 Linux 系统的信息,如我想知道系统什么时候发生系统调用,发生的是什么系统调用等这些信息,有什么解决方案呢?最原始的方法是,找到内核系统调用的代码,加上我们需要获得信息的代码、重新编转载 2014-10-28 10:39:26 · 1278 阅读 · 0 评论 -
systemtap 生成火焰图
用systemtap生成火焰图转载 2016-03-04 14:51:21 · 2031 阅读 · 0 评论 -
perf 生成火焰图
1.perf record -p **** -g(offCPU:perf record -C 4 -g -e sched:sched_switch -e sched:sched_stat_sleep -e sched:sched_process_exit -o perf.data sleep 10)2.perf script |stackcollapse-perf.pl > pe...原创 2016-03-04 14:53:04 · 1095 阅读 · 0 评论 -
磁盘IO性能监控指标
在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘 I/O 性能监控的指标主要包括:指标 1:每秒 I/O 数(IOPS 或 tps)对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。指标 2:吞吐量(转载 2016-03-21 14:17:29 · 2447 阅读 · 0 评论 -
Iowait的成因、对系统影响及对策
什么是iowait?顾名思义,就是系统因为io导致的进程wait。再深一点讲就是:这时候系统在做io,导致没有进程在干活,cpu在执行idle进程空转,所以说iowait的产生要满足两个条件,一是进程在等io,二是等io时没有进程可运行。Iowait是如何计算的?先说说用户如何看到iowait吧我们通常用vmstat就能看到iowat,图中的wa就是(标红)这个数据是v转载 2016-06-17 11:18:38 · 11932 阅读 · 1 评论 -
linux 编译glibc
一、简介glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。本文介绍Glibc升级方法 二、升级步骤如下:wget http://ftp.gnu.org/gnu/glibc/转载 2016-11-15 14:51:18 · 14284 阅读 · 0 评论 -
gcc 编译升级
自己在用systemtap查找内存泄漏的时候,发现libstdc++.so.6.0.13没有debuginfo,无法跟中到堆栈,就选择自己编译gcc,版本和系统版本一致1.准备安装包gmp-4.3.2.tar.bz2mpfr-2.4.2.tar.bz2以上两个包为执行gcc包中的configure的时候所需要的,先安装gmp,在安装mpfrgcc-4.4.7.tar原创 2016-11-16 13:11:26 · 500 阅读 · 0 评论