系统性能量化分析-7-性能分析工具

系统分析的层次

image-20231122152648114

工具总结

静态分析工具/命令

img

性能分析工具/命令

img

微基准

不同组件的压力测试

img

调优工具

调优、优化设置配置

img

基本分析工具/命令

  1. uptime
    统计1, 5 and 15 分钟的Load平均值。如果Load值大于Core的数量,意味 CPU饱和 (100% utilized
  2. ps
    进状态
  3. top
    系统状态
  4. htop
    top的进阶命令
  5. mpstat
    CPU 状态
  6. iostat:
    Disk I/O状态
  7. vmsat
    虚拟内存
  8. free
    内存使用
  9. ping
  10. nicstat
    查看网卡利用率和吞吐量
  11. dstat

进阶分析工具/命令

1
2
3
4
5
6
7
8
9
sar
netstat
pidstat
strace
tcpdump
blktrace
iotop
sysctl: 内核参数信息
/proc

1. sar

监控工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(base) [iprobe@node118 ~]$ sar -h
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports:
-b I/O and transfer rate statistics
-B Paging statistics
-d Block device statistics
-F [ MOUNT ]
Filesystems statistics
-H Hugepages utilization statistics
-I { <int> | SUM | ALL | XALL }
Interrupts statistics
-m { <keyword> [,...] | ALL }
Power management statistics
Keywords are:
CPU CPU instantaneous clock frequency
FAN Fans speed
FREQ CPU average clock frequency
IN Voltage inputs
TEMP Devices temperature
USB USB devices plugged into the system
-n { <keyword> [,...] | ALL }
Network statistics
Keywords are:
DEV Network interfaces
EDEV Network interfaces (errors)
NFS NFS client
NFSD NFS server
SOCK Sockets (v4)
IP IP traffic (v4)
EIP IP traffic (v4) (errors)
ICMP ICMP traffic (v4)
EICMP ICMP traffic (v4) (errors)
TCP TCP traffic (v4)
ETCP TCP traffic (v4) (errors)
UDP UDP traffic (v4)
SOCK6 Sockets (v6)
IP6 IP traffic (v6)
EIP6 IP traffic (v6) (errors)
ICMP6 ICMP traffic (v6)
EICMP6 ICMP traffic (v6) (errors)
UDP6 UDP traffic (v6)
-q Queue length and load average statistics
-r Memory utilization statistics
-R Memory statistics
-S Swap space utilization statistics
-u [ ALL ]
CPU utilization statistics
-v Kernel table statistics
-w Task creation and system switching statistics
-W Swapping statistics
-y TTY device statistics

-u

-u选项用于显示CPU使用情况的统计信息。下面是-u选项中各指标的具体含义:

  • %user:用户态CPU使用百分比,表示在用户进程中花费的CPU时间百分比。
  • %nice:NICE优先级用户态CPU使用百分比,表示在NICE优先级较高的用户进程中花费的CPU时间百分比。
  • %system:系统态CPU使用百分比,表示在内核进程中花费的CPU时间百分比。
  • %iowait:IO等待时间百分比,表示CPU因为等待I/O操作完成而空闲的时间百分比。
  • %steal:虚拟化环境中发生的处理器偷取时间百分比,表示由于其他虚拟机或主机线程需要而导致的CPU时间被偷取的百分比。
  • %idle:CPU空闲时间百分比,表示CPU处于空闲状态的时间百分比。

-b

-b选项用于显示磁盘I/O统计信息。下面是-b选项中各指标的具体含义:

  • tps:每秒传输的I/O请求数,表示每秒处理的独立I/O请求的数量。
  • rtps:每秒读取的块设备I/O请求数,表示每秒从块设备读取数据的请求数量。
  • wtps:每秒写入的块设备I/O请求数,表示每秒向块设备写入数据的请求数量。
  • bread/s:每秒读取的块设备数据量,表示每秒从块设备读取的字节数。
  • bwrtn/s:每秒写入的块设备数据量,表示每秒向块设备写入的字节数。

这些指标反映了磁盘I/O的使用情况,可以帮助我们了解系统的磁盘读写负载情况和性能瓶颈

-d

-d选项用于显示磁盘活动统计信息。下面是-d选项中各指标的具体含义:

  • tps:每秒传输的I/O请求数,表示每秒处理的独立I/O请求的数量。
  • rd_sec/s:每秒从磁盘读取的数据量,以字节为单位。
  • wr_sec/s:每秒写入磁盘的数据量,以字节为单位。
  • avgrq-sz:平均每次I/O请求的数据大小,以扇区为单位。
  • avgqu-sz:平均I/O队列长度,表示平均每个设备的I/O请求队列中的请求数。
  • await:平均I/O等待时间,表示I/O请求从提交到完成所花费的平均时间,以毫秒为单位。
  • svctm:平均I/O请求的服务时间,表示处理单个I/O请求所花费的平均时间,以毫秒为单位。
  • %util:磁盘利用率,表示在采样间隔内部分或全部时间内,设备处于活动状态的百分比。

这些指标反映了磁盘的读写活动情况,可以帮助我们了解系统的磁盘负载情况、性能瓶颈以及磁盘的利用率情况。

linux /proc

linux的 /proc文件系统

高级工具

  1. Perf
    Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展
  2. Dtrace
    DTrace(全称Dynamic Tracing),是由 Sun™ 开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具,可以对内核(kernel)和用户 应用程序(user application)动态跟踪
  3. Systemtap
    SystemTap 是监控和跟踪运行中的Linux 内核的操作

Perf

img

  1. perf top
  2. perf stat
  3. perf list
  4. perf flame

DTrace

Ext4延迟分析:DTrace

Sysstemtap

top-down 分析

Top-down分析是一种全面的、从整体到部分的分析策略,通常用于性能分析和调试代码。在计算机领域中,尤其是在性能分析领域,Top-down方法学由Intel提出,并已经成为服务器、桌面机领域进行软件性能分析的标准方法之一。

具体来说,我们可以通过使用perf、ebpf这样的工具来获取一些数据,比如了解这台机器上到底发生了多少次cache-miss。这种从整体到部分的分析方式可以帮助我们更好地理解代码的执行过程,进而优化代码的性能。

top-down 微软架构分析 TMA

reference

  1. https://www.brendangregg.com/linuxperf.html