vmstat 和 cpustat 是两个非常有用的命令行工具,用于监控和分析Linux系统的性能。结合这两个工具,你可以获得关于CPU使用率、内存使用情况、进程状态以及磁盘I/O等方面的详细信息。以下是如何结合使用这两个工具来分析系统性能的步骤:
vmstat 监控系统整体性能vmstat 命令可以显示虚拟内存统计信息,以及CPU使用情况。基本语法如下:
vmstat [delay] [count]
delay 是采样间隔时间(以秒为单位)。count 是采样的次数。例如,要每5秒采样一次,共采样3次,可以使用以下命令:
vmstat 5 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 1638408 131072 2428480 0 0 1 0 65 55 3 2 95 0 0
0 0 0 1638408 131072 2428480 0 0 0 0 12 10 2 1 97 0 0
0 0 0 1638408 131072 2428480 0 0 0 0 10 8 1 1 98 0 0
cpustat 监控CPU详细性能cpustat 命令是 sysstat 包的一部分,用于显示CPU使用情况的详细统计信息。基本语法如下:
cpustat [delay] [count]
delay 是采样间隔时间(以秒为单位)。count 是采样的次数。例如,要每5秒采样一次,共采样3次,可以使用以下命令:
cpustat 5 3
输出示例:
Linux 5.4.0-42-generic (hostname) 05/01/2023 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.34 0.00 2.56 0.12 0.00 85.00
System: 0.00 0.00 0.00 0.00 0.00 99.99
cpu0: 12.56 0.00 2.78 0.12 0.00 84.54
cpu1: 12.12 0.00 2.34 0.10 0.00 85.44
cpu2: 12.00 0.00 2.50 0.15 0.00 85.35
cpu3: 12.22 0.00 2.44 0.11 0.00 85.23
通过结合 vmstat 和 cpustat 的输出,你可以获得更全面的系统性能视图:
cpustat 提供了详细的CPU使用率信息,包括用户态 (%user)、系统态 (%system)、空闲态 (%idle) 等。vmstat 的 %us 和 %sy 列也提供了类似的信息。vmstat 显示了内存的使用情况,包括交换空间 (swpd)、空闲内存 (free)、缓冲区 (buff) 和缓存 (cache)。这些信息可以帮助你了解系统的内存压力。vmstat 的 %iowait 列显示了CPU等待I/O操作完成的时间百分比。结合 cpustat 的I/O相关列(如 bi 和 bo),可以更详细地了解I/O性能。vmstat 的 procs 部分显示了运行 (r)、睡眠 (s) 和阻塞 (b) 的进程数量。这可以帮助你了解系统的负载情况。%user 或 %system 列的值很高,可能是某个进程或线程在大量使用CPU资源。可以使用 top 或 htop 命令进一步查看具体是哪些进程在消耗CPU资源。free 列的值很低,可能需要考虑增加物理内存或优化应用程序的内存使用。%iowait 列的值很高,可能是磁盘I/O瓶颈。可以使用 iostat 命令进一步查看磁盘I/O性能。通过结合 vmstat 和 cpustat 的输出,并结合其他工具进行深入分析,你可以更全面地了解系统的性能状况,并采取相应的优化措施。