/images/hugo/avatar.png

5.6 bcc

1. bcc 简介

BCC 软件包是使用 eBPF 开发的工具包。这些工具是提供的编写 eBPF 工具的参考示例,并且很实用。它们的使用场景如下图所示:

/images/linux_pf/bcc_tracing_tools_2016.png

不过需要注意的是很多 eBPF 的新特性,都需要比较新的内核版本(如下图所示)

5.3 ps

ps 命令

ps

ps [options]

  • 作用:ps 用于查看进程状态信息
  • 说明:ps 命令参数很乱,我们以常用命令的方式来说明其使用,下面只列出过滤参数
  • 过滤参数:
    • u user: 指定用户的所有进程
    • o [field1,field2…]: 指定显示的字段
    • k [-]field: 以指定字段排序
    • -h:去掉标题栏
    • -H: 显示线程详细信息
    • -f: 以树形结构显示进程间关系

pstree

1
2
3
4
5
6
7
# -t表示显示线程,-a表示显示命令行参数
$ pstree -t -a -p 27458
mysqld,27458 --log_bin=on --sync_binlog=1
...
  ├─{mysqld},27922
  ├─{mysqld},27923
  └─{mysqld},28014

ps aux f

ps aux f

5.4 pidstat

pidstat 命令

pidstat

pidstat options [ interval [ count ]]

  • 作用: 监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况
  • 内容参数:
    • -u:默认的参数,显示各个进程的cpu使用统计
    • -r:显示各个进程的内存使用统计
    • -d:显示各个进程的IO使用情况
    • -w:显示每个进程的上下文切换情况
    • -t:显示选择任务的线程的统计信息外的额外信息,显示线程统计信息时,必须使用
  • 过滤参数:
    • -l:显示命令名和所有参数
    • -p:指定进程号
    • -T { TASK | CHILD | ALL } 这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。 注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

pid -u

1
2
3
4
5
6
 pidstat -u 2 1
Linux 3.10.0-862.el7.x86_64 (ZS-ISP) 	03/10/2020 	_x86_64_	(1 CPU)

04:34:07 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
04:34:09 PM     0       926    0.51    0.00    0.00    0.51     0  python
04:34:09 PM     0      1100    0.51    0.00    0.00    0.51     0  docker-containe

输出:

5.2 Sar

sar 命令

/images/linux_pf/linux_observability_sar.png

1. sar

sar [options] [-A] [-o file] t [n]

  • 作用:查看系统各种使用信息
  • 控制参数:
    • -o file:将命令结果以二进制格式存放在文件中
    • t:采样间隔
      • =0 :表示统计系统启动以来的平均值
      • t被设置,n未被设置,会按照时间间隔循环输出
    • n:采样次数,可选,默认值是1
  • 内容参数:
    • -A:等于 -bBdFHqSvwWy -I SUM -m ALL -n ALL -r ALL -u ALL -I ALL -P ALL 显示所以内容
    • CPU统计信息:
      • -u:CPU利用率
      • -q: 查看系统平均负载
      • -w: 统计任务创建和上下文切换
    • 内存统计信息:
      • -B:换页的统计信息
      • -H: 大页面统计信息
      • -r:内存使用率
      • -R: 内存分配和释放速率统计信息
      • -S: 交换空间统计信息
      • -W:swap分区交换速率统计信息
    • 磁盘统计信息
      • -b:磁盘 IO 传送速率
      • -d:块使用信息
      • -I:中断统计信息
    • 网络统计信息:
      • -n: 统计网络使用情况

2. CPU 统计信息

2.1 sar -u

sar -u -P { cpu_list | ALL }