目录:
[TOC]
使用 top 命令
top
是一个强大的实时系统性能监控工具,它提供了对系统资源的实时动态监测。通过 top
命令,你可以查看 CPU、内存、进程等系统资源的使用情况,以及各个进程的详细信息。
在终端中输入以下命令启动 top
:
top
这将会显示一个实时更新的系统状态面板,其中包含 CPU 使用率、内存使用率、任务队列信息等。
实时监控 CPU 使用率
在 top
的默认显示中,CPU 使用率是最显眼的一部分。它显示在顶部的第三行,如下所示:
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
这一行提供了 CPU 使用率的详细信息,包括用户空间使用率(us)、系统空间使用率(sy)、空闲率(id)等。在这个例子中,99.6% 的时间 CPU 处于空闲状态。
top
的输出可能会包含大量信息,因此理解如何解读这些信息是非常重要的。以下是一些关键的信息点:
- PID(进程ID):每个运行中的进程都有一个唯一的PID。
- USER:进程属于哪个用户。
- %CPU:进程使用的 CPU 百分比。
- TIME+:进程占用 CPU 的累计时间。
- VIRT、RES、SHR:进程使用的虚拟内存、物理内存、共享内存。
查看系统整体情况
启动 top
后,你将看到一个实时更新的系统状态面板。按键盘上的 q
键可以退出 top
。
top
根据 CPU 使用率排序进程
按键盘上的 P
键,top
将按照 CPU 使用率高低排序进程。
top -o %CPU
定时刷新显示
使用 -d
选项可以设置 top
的刷新间隔,例如每3秒刷新一次。
top -d 3
查看特定用户的进程
通过 -u
选项,你可以查看特定用户的进程,例如 user1
。
top -u user1
使用 vmstat 命令
vmstat
是 Virtual Memory Statistics(虚拟内存统计)的缩写,它用于显示虚拟内存、进程、CPU等方面的统计信息。通过 vmstat
,你可以查看系统的整体性能以及各个方面的详细数据。
在终端中输入以下命令启动 vmstat
:
vmstat
这将显示系统的虚拟内存、CPU、进程等信息,并实时更新。
vmstat
的输出包含多个字段,主要包括:
- procs:显示进程统计信息。
- memory:显示内存使用统计信息。
- swap:显示交换空间使用统计信息。
- io:显示 I/O 统计信息。
- system:显示系统运行时间及一般性统计信息。
- cpu:显示 CPU 使用统计信息。
查看系统整体情况
启动 vmstat
后,你将看到一个实时更新的系统状态面板。按键盘上的 q
键可以退出 vmstat
。
vmstat
设置刷新间隔
使用 -n
选项可以设置 vmstat
的刷新间隔,例如每3秒刷新一次。
vmstat -n 3
查看 CPU 使用率
vmstat
的输出中,cpu
行提供了 CPU 使用率的详细信息。例如,下面的输出表示 CPU 空闲率为96.3%:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 123456 78901 23456 0 0 0 0 12 34 1 2 96 0 0
查看 CPU 上下文切换和中断
在 vmstat
输出中,in
行表示每秒的上下文切换次数,cs
行表示每秒的中断次数。
vmstat -w
查看磁盘 I/O 统计
io
行提供了磁盘 I/O 的统计信息,包括每秒的读写次数。
vmstat -d
使用 sar 命令
sar
是 System Activity Reporter(系统活动报告)的缩写,它是 sysstat 工具包的一部分,用于收集和报告系统的性能数据,包括 CPU 使用率、内存使用率、磁盘 I/O 等。
在终端中输入以下命令启动 sar
:
sar
这将显示系统的平均负载、CPU 使用率等信息。
设置时间间隔和次数
使用 -u
选项可以指定 sar
报告 CPU 使用率,而 -n
选项可以设置报告的时间间隔和次数。例如,每隔2秒报告一次,共报告5次:
sar -u 2 5
查看 CPU 使用率历史数据
使用 sar
命令可以查看系统的 CPU 使用率历史数据。下面的命令将报告过去24小时内每隔10分钟的 CPU 使用率:
sar -u -s 00:00:00 -e 23:59:59 -i 600
输出到文件
你也可以将 sar
的输出保存到文件中,以便后续分析。例如,将 CPU 使用率报告保存到文件 cpu_usage.log
:
sar -u 2 5 > cpu_usage.log
使用 sar
的数据,你可以利用其他工具如 ksar
或 sar2html
等,将性能数据图形化展示,更直观地观察趋势。
sar
收集的历史数据可以帮助你更深入地了解系统的性能特征,进行趋势分析和性能优化。
通过分析历史的 CPU 使用率数据,你可以识别高峰期、低谷期,并采取相应的措施进行性能优化。
sar
也可以报告磁盘 I/O 的性能数据,通过分析这些数据,你可以识别潜在的磁盘瓶颈。
使用 mpstat 命令
mpstat
是在多核 CPU 系统上运行的 sar
的一个前端工具,它提供了更详细的 CPU 使用率信息,包括每个 CPU 核心的利用率。
在终端中输入以下命令启动 mpstat
:
mpstat
这将显示每个 CPU 核心的使用率、上下文切换、中断等信息。
查看指定 CPU 核心
使用 -P
选项可以指定查看某个 CPU 核心的使用率。例如,查看第二个 CPU 核心的使用率:
mpstat -P 2
查看所有 CPU 核心的使用率
默认情况下,mpstat
将显示所有 CPU 核心的使用率。下面的命令将每隔2秒报告一次所有 CPU 核心的使用率:
mpstat 2
查看多个时间点的 CPU 使用率
使用 -I
选项可以设置报告的时间间隔和次数。例如,每隔5秒报告一次,共报告3次:
mpstat -I 5 3
结合 top
进行监控
mpstat
可以与 top
结合使用,实现对多核 CPU 的更全面监控。例如,使用以下命令:
mpstat -P ALL 2 | top
与前面的工具一样,mpstat
的输出也可以通过图形化工具进行更直观的展示和分析。
使用 perf 命令
perf
是 Linux 系统上的性能分析工具,它可以收集性能数据,并生成详细的报告,帮助你找到系统中的性能瓶颈。
在终端中输入以下命令启动 perf
:
perf
这将进入 perf
的交互式命令行界面。你可以通过输入不同的命令来执行各种性能分析任务。
收集性能数据
使用 perf record
命令可以开始收集性能数据。例如,收集一个命令的性能数据:
perf record command
生成报告
使用 perf report
命令可以生成性能报告,显示各种性能事件的统计信息。
perf report
收集 CPU 使用率数据
使用 perf
可以收集 CPU 使用率的详细数据,包括函数调用图、指令和缓存的分析等。
perf record -g -a sleep 10
查看调用图
使用 perf
查看函数调用图,以便深入了解代码执行路径。
perf report -g graph
使用 perf script
perf script
可以输出性能数据的脚本,以便进一步分析。
perf script
使用 perf annotate
perf annotate
可以在源代码中显示性能数据,帮助你找到瓶颈。
perf annotate -d /path/to/binary
使用 strace 命令
strace
是一个用于跟踪进程系统调用和信号的命令行工具。通过在程序执行期间截获和记录系统调用的信息,可以帮助你了解程序的运行情况,尤其是在寻找性能问题时非常有用。
在终端中输入以下命令启动 strace
:
strace command
这将输出程序的系统调用信息,并可帮助你分析程序的执行过程。
输出到文件
使用 -o
选项可以将 strace
的输出保存到文件中:
strace -o output.txt command
输出详细信息
使用 -v
选项可以输出更详细的信息,包括寄存器和内存的内容:
strace -v command
输出调用次数
使用 -c
选项可以统计系统调用的次数:
strace -c command
跟踪特定系统调用
使用 -e
选项可以指定要跟踪的系统调用:
strace -e trace=open,read command
跟踪子进程
使用 -f
选项可以跟踪子进程的系统调用:
strace -f command
结合 top
进行监控
strace
可以与 top
结合使用,实现对程序的更全面监控。
strace -c -p PID
结合 perf
进行性能分析
与前面的工具一样,strace
的输出也可以通过 perf
进行更深入的性能分析。
perf record -e syscalls:sys_enter_openat -g -p PID
总结
- 实时监控: 使用
top
来实时查看系统资源的使用情况,特别是 CPU 和内存的使用率。 - 历史数据分析: 使用
sar
定期收集系统性能数据,以便后续分析历史性能趋势。 - 多核 CPU 监控: 使用
mpstat
来监控多核 CPU 的使用率,了解每个核心的性能状况。 - 性能分析: 使用
perf
进行更深入的性能分析,包括函数调用图、指令和缓存的分析等。 - 系统调用跟踪: 使用
strace
跟踪系统调用,解决程序执行中的异常情况。
建议的使用场景:
- 系统监控: 使用
top
、vmstat
和sar
进行实时和历史性能监控,以便了解系统整体的健康状况。 - CPU 瓶颈分析: 使用
mpstat
、perf
和strace
进行更深入的 CPU 使用率分析,找出潜在的性能瓶颈。 - 性能优化: 结合
perf
进行性能分析,找到性能瓶颈并进行优化,以提高系统性能。 - 程序异常分析: 使用
strace
跟踪系统调用,解决程序执行过程中的异常问题,如卡顿、死锁等。