系统管理员能够经过利用BCC(BPF Compiler Collection)库的工具来分析操做系统性能和获取操做系统信息。
BCC工具全称BPF Compiler Collection (BCC),是一个很强大的库,强大的内核分析工具eBPF就是基于BCC开发的,利用这个库能够从底层获取操做系统性能信息,网络性能信息等许多与内核交互的信息。html
在RHEL中开箱即用的bcc-tools
工具封装了BCC,使得用户很容易使用它来分析系统性能linux
$ yum install bcc-tools
安装后的bcc工具包在/usr/share/bcc/tools目录下,能够经过doc文档了解所有的工具。shell
1.首先在终端1运行execsnop程序vim
$ /usr/share/bcc/tools/execsnoop
2.而后在新终端2中执行操做,如bash
$ 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,返回值,参数等ide
1.在终端1中运行opensnoop程序工具
$ /usr/share/bcc/tools/opensnoop -n name
好比这个命令会跟踪uname命令打开的文件
2.在终端2中执行uname
3.在终端1中会显示uname执行过程当中打开的文件列表oop
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 ...
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
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工具更深刻的了解系统的运行过程有时颇有帮助。