Systems Performance Enterprise and the Cloud v2

CPU

Flame Graphs

Flame Graphs(火焰图)是一种展示 CPU 性能的 Profile 方法。可以帮助我们找到 CPU 性能瓶颈并进行优化。它展示的不仅仅是 CPU 问题,还能根据 CPU 的使用路径(footprints)找到隐藏在 CPU 之后的问题,如 锁争用(lock contention) 问题可以通过在旋转路径(spin path)中查找 CPU time、 内存问题 可以通找到内存分配函数(malloc())过度使用 CPU 时间进行分析,进而找到对应的导致问题的代码路径。

Linux Perf Analysis in 60 Seconds

下表列出了在检查性能问题的最初的 60s 内可以执行的检查,这些检查都是基于 Linux 上的基础工具 [1]

# Tool Check Refer
1 uptime 检查系统负载,确定系统负载变化(增加或者减少)
2 dmesg -T
journalctl -k
检查内核日志中的错误信息,如 OOM 等
3 vmstat -SM 1 系统级别的统计数据,包括 运行队列长度(run queue length),swapping,CPU 使用率等
4 mpstat -P ALL 1 每个 CPU 的负载情况
5 pidstat 1 每个任务(Per-process)的 CPU 使用率
6 iostat -sxz 1 硬盘 IO 统计: IOPS、吞吐量(Throughput)、Average Wait Time、Percent Busy
7 free -m 内存使用情况
8 sar -n DEV 1 网络设备 IO 统计
9 sar -n TCP,ETCP 1 TCP 统计: Connection Rates、Retransimits
10 top
htop
整体检查

参考链接

Systems Performance: Enterprise and the Cloud v2

脚注


  1. 1.#1.10.1 Linux Perf Analysis in 60 Seconds