Linux 性能分析
在日常使用 Linux 开发或者运维服务器的过程中,你可能会遇到程序运行缓慢、CPU 飙升、内存泄漏、磁盘读写瓶颈等性能问题。为了定位和解决这些问题,你需要学会一项非常关键的技能 —— 性能分析。
这篇教程会带你了解:
什么是性能分析?
性能分析(Performance Analysis),就是对系统或程序的运行状况进行监控、统计和分析,以找出影响性能的瓶颈点。
在 Linux 中,性能问题主要涉及以下几个方面:
- CPU 占用率:程序是不是计算密集型?是否存在死循环?
- 内存使用情况:是否内存泄漏?是否频繁触发换页?
- 磁盘 I/O:是否因为读写磁盘太慢导致性能下降?
- 网络延迟或带宽瓶颈:网络请求是否阻塞?
- 系统调用频率与效率:程序是否频繁调用高开销的系统调用?
你需要根据问题的症状,结合工具来定位。
CPU 相关分析
top
和 htop
top
是最常用的实时系统监控工具,默认显示 CPU、内存、负载等信息。- 你可以观察
%CPU
高的进程,找出是否是单个进程过度占用。
top
mpstat
(来自 sysstat
包)
它可以显示所有 CPU 核心的使用率,适用于多核服务器。
mpstat -P ALL 1
perf
(强大的分析工具)
它可以分析程序在 CPU 上运行的性能热点(如函数耗时)。
perf record ./your_program
perf report
你会看到哪些函数占用 CPU 最多,适合优化。
内存相关分析
free
可以查看当前系统的内存使用情况(总内存、已用、剩余、缓存等):
free -m
vmstat
显示内存、CPU、I/O、进程切换等综合信息:
vmstat 1
其中 si/so
表示交换分区使用,bi/bo
表示磁 盘读写,适合发现内存压力和系统负载问题。
valgrind
(内存泄漏检测)
可用于分析 C/C++ 程序的内存问题:
valgrind --leak-check=full ./your_program