使用BCC工具分析系统性能

系统管理员可以通过利用BCC(BPF Compiler Collection)库的工具来分析操作系统性能和获取操作系统信息。

BCC介绍

BCC工具全称BPF Compiler Collection (BCC),是一个很强大的库,强大的内核分析工具eBPF就是基于BCC开发的,利用这个库可以从底层获取操作系统性能信息,网络性能信息等许多与内核交互的信息。

在RHEL中开箱即用的bcc-tools工具封装了BCC,使得用户很容易使用它来分析系统性能

安装BCC工具

$ yum install bcc-tools

安装后的bcc工具包在/usr/share/bcc/tools目录下,可以通过doc文档了解全部的工具。

使用execsnoop工具分析系统进程

1.首先在终端1运行execsnop程序

$ /usr/share/bcc/tools/execsnoop

2.然后在新终端2中执行操作,如

$ ls /usr/share/bcc/tools/doc/

3.此时可以在终端1中可以看到终端2操作的信息

PCOMM    PID    PPID   RET ARGS
ls       8382   8287     0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/
sed     8385   8383     0 /usr/bin/sed s/^ \*\[0-9\]\\+ \*//
...

execsnoop程序会获取每个使用系统资源的新进程,包含进程名称,PID,PPID,返回值,参数等

使用opensnoop跟踪打开的文件句柄

1.在终端1中运行opensnoop程序

$ /usr/share/bcc/tools/opensnoop -n name

比如这个命令会跟踪uname命令打开的文件
2.在终端2中执行uname
3.在终端1中会显示uname执行过程中打开的文件列表

PID    COMM     FD ERR PATH
8596   uname     3  0   /etc/ld.so.cache
8596   uname     3  0   /lib64/libc.so.6
8596   uname     3  0   /usr/lib/locale/locale-archive
...

使用biotop分析磁盘I/O操作

1.在终端1中运行biotop程序

$ /usr/share/bcc/tools/biotop 30

上面的命令会监控30秒内磁盘IO最频繁的进程
2.在终端2中执行dd读写一下磁盘

$ dd if=/dev/vda of=/dev/zero

3.在终端1中可以看到IO最频繁的进程时dd

PID    COMM             D MAJ MIN DISK       I/O  Kbytes     AVGms
9568   dd               R 252 0   vda      16294 14440636.0  3.69
48     kswapd0          W 252 0   vda       1763 120696.0    1.65
7571   gnome-shell      R 252 0   vda        834 83612.0     0.33
1891   gnome-shell      R 252 0   vda       1379 19792.0     0.15
7515   Xorg             R 252 0   vda        280  9940.0     0.28

使用xfsslower分析导致系统变慢的操作

1.在终端1中运行xfsslower程序

$ /usr/share/bcc/tools/xfsslower 1

上面的命令会分析系统读写性能,会记录读写用时超过1ms的操作
2.在终端2中进行写文件操作

$ vim test

3.在终端1中显示vim操作

TIME     COMM           PID    T BYTES   OFF\_KB   LAT(ms) FILENAME
13:07:14 b'bash'        4754   R 256     0           7.11 b'vim'
13:07:14 b'vim'         4754   R 832     0           4.03 b'libgpm.so.2.1.0'
13:07:14 b'vim'         4754   R 32      20          1.04 b'libgpm.so.2.1.0'

在/usr/share/bcc/tools/doc/目录中有对每个工具的介绍和使用文档

在我们分析系统遇到困难时,利用bcc工具更深入的了解系统的运行过程有时很有帮助。

analyzing-system-performance-with-bpf-compiler_collection

Image placeholder
haobing
未设置
  88人点赞

没有讨论,发表一下自己的看法吧

推荐文章
工具分享:Linux tree 命令安装和使用

说明tree命令是一个比较实用文件系统查看工具,如下图,可以阶梯式地罗列某个目录下的所有子目录:如何安装?RHEL/CentOS下:#yuminstalltree-yDebian/Ubuntu, Mi

为什么mysql索引要使用B+树,而不是B树,红黑树

我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的操作,磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片

Oracle 之利用BBED修改数据块SCN—-没有备份数据文件的数据恢复

测试环境 OS:redhat6.6 oracle:12.1.0.2  BBED(OracleBlockBrowerandEDitorTool),用来直接查看和修改数据文件数据的一个工具,是Orac

leveldb源代码分析系列1:MemTable的实现

MemTable及其实现这是一个第零层的主题,预计扩展如下第一层主题:1.1comparator介绍1.2skiplist实现介绍1.3数据压缩相关介绍1.4Put流程1.5Get流程leveldb中

leveldb源代码分析系列1.1:memtable中comparator的实现

leveldb中memtable封装了一个skiplist用来存储真正的数据,跳跃列表的实现一定需要定义存储项的序关系,而在leveldb中这个序关系通过comparator相关类来实现。leveld

leveldb源代码分析系列1.2:skiplist实现

skiplist的实现介绍leveldb中的SkipList是一个模板类,其模板参数的类型分别是存储的Key类型和Comparator类型。虽然名字是Key类型,但其实存储了整个entry,只不过Co

TPC-C解析系列03_TPC-C基准测试之SQL优化

TPC-C是一个非常严苛的基准测试模型,考验的是一个完备的关系数据库系统全链路的能力。这也是为什么在TPC-C的榜单前列,出现的永远只是大家熟知的那几家在业界有着几十年积累、从关系数据库理论开始发展就

TPC-C解析系列05_TPC-C基准测试之存储优化

TPC-C规范要求被测数据库的性能(tpmC)与数据量成正比。TPC-C的基本数据单元是仓库(warehouse),每个仓库的数据量通常在70MB左右(与具体实现有关)。TPC-C规定每个仓库所获得的

Nebula 架构剖析系列(二)图数据库的查询引擎设计

摘要上文(存储篇)说到数据库重要的两部分为存储和计算,本篇内容为你解读图数据库Nebula在查询引擎QueryEngine方面的设计实践。在Nebula中,QueryEngine是用来处理Nebula

TPC-C解析系列01_TPC-C benchmark测试介绍

作者:阳振坤2019.10导语:自从蚂蚁金服自研数据库OceanBase获得TPC-C测试第一名后,引起了行业内外大量关注,我们衷心的感谢大家对OceanBase的支持与厚爱,也虚心听取外界的意见和建

TPC-C解析系列02_OceanBase如何做TPC-C测试

导语:蚂蚁金服自研数据库OceanBase登顶TPC-C引起业内广泛关注,为了更清楚的展示其中的技术细节,我们特意邀请OceanBase核心研发人员对本次测试进行技术解读,共包括五篇:1)TPC-C基

TPC-C解析系列04_TPC-C基准测试之数据库事务引擎的挑战

OceanBase这次TPC-C测试与榜单上Oracle和DB2等其他数据库在硬件使用上有非常大的不同,OceanBase的数据库服务器使用的是204+3台型号是ecs.i2.16xlarge阿里云E

jdbcTemplate batchUpdate 使用注意事项

问题通过jdbcTemplate批量插入数据voidbatchInsert(finalListdoList){ jdbcTemplate.batchUpdate(sql,newBatchPrepare

Xcode调试、性能优化基本工具使用简单整理

断点1.普通断点在行号那儿点一下就加上了,最常用的断点,略。2.条件断点很多时候问题代码是被高频调用直到特定条件下才出现问题的,这种时候可以使用条件断点。在任意断点右击选择EditBreakpoint

Golang 里的 AES、DES、3DES 加解密,支持 ECB、CBC 等多种模式组合

Opensslencryption:OpenSSL库的功能包装,用于对称和非对称加密和解密。 AES-ECB AES-CBC DES-ECB DES-CBC 3DES-ECB 3DES-CBC 安

重启大法失效?详述Oracle11g因JDBC bug引发异常Library Cache Lock等待处理事件

墨墨导读:在Oracle11g版本中可能出现由于JDBCbug导致sql绑定变量无法共享,过期游标过多的情况,此时如果发生大量并发业务,很有可能造成异常librarycachelock等待事件,造成数

JDBC高级应用笔记

properties文件里面的属性值不能加双引号,属性和属性值之间不能有空格

数据结构与算法分析——开篇以及复杂度分析

开篇 你也许已经发现了,工作了几年,原以为已经是一只老鸟。但看到刚参加工作的同事,你发现,原来自己一直在原地踏步。跟新人相比,你的唯一优势就是对业务更熟悉而已,别的就没有什么优势了。 怎样才能够让自己

数据结构与算法分析——开篇以及复杂度分析

开篇你也许已经发现了,工作了几年,原以为已经是一只老鸟。但看到刚参加工作的同事,你发现,原来自己一直在原地踏步。跟新人相比,你的唯一优势就是对业务更熟悉而已,别的就没有什么优势了。怎样才能够让自己更上

Python数据分析实战 | 爬遍拉勾网,带你看看数据分析师还吃香吗?

微信公众号:「Python读财」如有问题或建议,请公众号留言伴随着移动互联网的飞速发展,越来越多用户被互联网连接在一起,用户所积累下来的数据越来越多,市场对数据方面人才的需求也越来越大,由此也带火了如

慢查询分析调优工具~mysqldumpslow

在日常的业务开发中,MySQL出现慢查询是很常见的,要么说明你家产品的增长性很好,要么就是你的SQL写的太烂了。所以对慢查询SQL进行分析和优化很重要,其中mysqldumpslow是MySQL服务自

MySQL Batched Key Access (BKA)原理和设置使用方法举例

MySQL5.6版本开始增加了提高表join性能的算法:BatchedKeyAccess(BKA)的新特性。BKA算法原理:将外层循环的行/结果集存入joinbuffer,内存循环的每一行数据与整个b

如何设计缓存系统:缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则

关于分析IT系统宕机对业务影响的10个提示

在制定灾难恢复计划时,一个非常重要的任务就是,要确定并想方设法避免潜在的威胁,同时为最坏的情况做准备。业务影响分析(BIA)提供了解决突发事件所需的信息,前提是您要事先做好万全准备。遵循详尽的业务影响