答案是使用top、free -m、vmstat等命令可查看Linux系统内存和CPU使用情况;top显示实时进程与资源占用,free -m查看内存总量及使用情况,vmstat监控系统整体性能,结合iostat分析I/O瓶颈,有助于快速诊断系统问题。

想知道Linux系统里内存和CPU的使用情况?其实方法很多,而且都很简单直接。
解决方案
最常用的就是
top命令了,直接在终端输入
top回车,就能看到一个动态刷新的列表,里面有CPU、内存占用率、进程信息等等。
当然,如果你只想看CPU的信息,
mpstat命令也是个不错的选择。它能更详细地展示每个CPU核心的使用情况。
至于内存,
free -m命令就足够了,
-m参数表示以MB为单位显示,看起来更直观。
如何理解 top
命令的输出?
top命令的信息量很大,第一次看可能会有点懵。
- 第一行:显示系统运行时间、当前用户数、平均负载等信息。平均负载是过去1分钟、5分钟、15分钟的系统平均负载,数值越高,说明系统压力越大。
- 第二行:Tasks,显示进程总数、运行中、睡眠中、停止中、僵尸进程的数量。
-
第三行:CPU(s),显示CPU的总体使用率,以及用户态、系统态、空闲、等待I/O等的百分比。
%us
是用户态CPU使用率,%sy
是系统态CPU使用率,%id
是空闲CPU使用率,%wa
是等待I/O的CPU使用率。如果%wa
很高,说明系统I/O瓶颈比较严重。 - 第四行:Mem,显示物理内存的总量、已使用量、空闲量、缓存量。
- 第五行:Swap,显示交换空间的总量、已使用量、空闲量、可用量。
-
进程列表:按照CPU或内存占用率排序的进程列表。
PID
是进程ID,USER
是进程所属用户,%CPU
是CPU占用率,%MEM
是内存占用率,COMMAND
是进程名。
vmstat
命令有什么用?
vmstat命令可以更全面地监控系统的性能,包括CPU、内存、I/O等。
例如,输入
vmstat 1 5,表示每隔1秒采样一次,总共采样5次。
vmstat的输出也比较复杂,但关键的几列需要关注:
- r:等待运行的进程数,数值越高,说明CPU压力越大。
- b:处于不可中断睡眠状态的进程数,通常表示进程在等待I/O。
- swpd:使用的虚拟内存大小,单位KB。
- free:空闲的物理内存大小,单位KB。
- buff:用作缓冲区的内存大小,单位KB。
- cache:用作缓存的内存大小,单位KB。
- si:每秒从磁盘写入swap的数据量,单位KB。
-
so:每秒从swap读取到磁盘的数据量,单位KB。如果
si
和so
的数值很高,说明系统频繁使用swap,性能会受到严重影响。 - bi:每秒从块设备读取的数据量,单位块。
- bo:每秒写入到块设备的数据量,单位块。
- in:每秒中断数。
- cs:每秒上下文切换数。
- us:用户态CPU使用率。
- sy:系统态CPU使用率。
- id:空闲CPU使用率。
- wa:等待I/O的CPU使用率。
- st:被偷走的CPU使用率,通常发生在虚拟机环境中。
如何利用这些命令诊断性能问题?
当你发现系统运行缓慢时,可以使用这些命令来诊断问题。
-
CPU占用率过高:使用
top
或vmstat
找到占用CPU最高的进程,然后分析该进程的行为。可能是程序存在bug,或者算法效率低下。 -
内存不足:使用
free -m
查看内存使用情况,如果空闲内存很少,并且使用了swap,说明内存不足。可以考虑增加内存,或者优化程序,减少内存占用。 -
I/O瓶颈:使用
vmstat
查看wa
列,如果数值很高,说明I/O瓶颈比较严重。可以检查磁盘的读写速度,或者优化程序,减少I/O操作。
另外,还可以结合
iostat命令来监控磁盘I/O。
iostat可以显示每个磁盘的读写速度、IOPS等信息。例如,输入
iostat -x 1,表示每隔1秒显示一次详细的磁盘I/O信息。
总而言之,这些命令都是Linux系统管理员的必备工具,熟练掌握它们,可以帮助你更好地了解系统的运行状态,并及时发现和解决问题。










