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.10.1 Linux Perf Analysis in 60 Seconds ↩