目录
一、系统整体性能监测工具
1.top
功能:实时显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存占用、进程状态等。还能显示系统的整体负载、运行时间、用户数量等信息。
使用场景:快速了解系统的整体性能状况,查看哪些进程占用了大量资源,以便及时发现性能瓶颈和异常进程。
如果想要排序展示:P(按照cpu排序)、M(按照MEM排序)
注解:
第一行:系统信息
top - 09:00:42 up 3 days, 15:30, 1 user, load average: 0.00, 0.01, 0.05
时间信息:09:00:42 表示当前系统时间。
系统运行时长:up 3 day, 15:30 说明系统已经连续运行了 13天 15 小时 30 分钟。
登录用户数:1 users 表示当前系统有 1 个用户登录。
系统负载平均值:load average: 0.00, 0.01, 0.05 分别代表系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载。一般来说,若平均负载值接近或超过 CPU 核心数,表明系统可能存在负载过高的情况。第二行:任务信息
Tasks: 172 total, 2 running, 170 sleeping, 0 stopped, 0 zombie
总进程数:172 total 表示系统当前总共运行着 172 个进程。
运行状态进程数:
2 running 表示有 2个进程正在 CPU 上运行。
170 sleeping 表示有 170 个进程处于睡眠状态,即它们在等待某些事件(如 I/O 操作完成)。
0 stopped 表示没有进程处于停止状态(通常是被暂停执行的进程)。
0 zombie 表示没有僵尸进程(僵尸进程是指已经结束但其父进程尚未回收其资源的进程)。第三行:CPU 信息
%Cpu(s): 0.2 us, 0.5 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU 时间占比:
0.2 us 表示用户空间进程使用 CPU 的时间占比为 0.2%。
0.5 sy 表示系统空间(内核)进程使用 CPU 的时间占比为 0.5%。
0.0 ni 表示被调整过优先级的进程使用 CPU 的时间占比为 0.0%。
99.3 id 表示 CPU 空闲时间占比为 99.3%,这表明当前 CPU 大部分时间处于空闲状态。
0.0 wa 表示 CPU 等待 I/O 操作完成的时间占比为 0.0%。
0.0 hi 表示处理硬件中断的时间占比为 0.0%。
0.0 si 表示处理软件中断的时间占比为 0.0%。
0.0 st 表示被虚拟机偷走的 CPU 时间占比为 0.0%(在虚拟机环境中才有意义)。第四行:内存信息
KiB Mem : 4045384 total, 3291996 free, 298704 used, 454684 buff/cache
内存总量:4045384 total 表示系统的物理内存总量为 4045384 KiB。
空闲内存:3291996 free 表示当前空闲的物理内存为 3291996 KiB。
已使用内存:298704 used 表示已经被进程使用的物理内存为 298704 KiB。
缓存和缓冲区内存:454684 buff/cache 表示用于磁盘缓存和缓冲区的内存为 454684 KiB,这部分内存可以在需要时被释放给进程使用。第五行:交换空间信息
KiB Swap: 4063228 total, 4063228 free, 0 used. 3483440 avail Mem
交换空间总量:4063228 total 表示系统的交换空间(虚拟内存)总量为 4063228 KiB。
空闲交换空间:4063228 free 表示当前空闲的交换空间为 4063228 KiB。
已使用交换空间:0 used 表示已经被使用的交换空间为0 KiB。
可用内存:3483440 avail Mem 表示系统当前实际可用的内存,包括空闲内存和可回收的缓存内存等。进程列表部分
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程的 ID 号,用于唯一标识系统中的每个进程。
USER:运行该进程的用户。
PR:进程的优先级,数值越小表示优先级越高。
NI:进程的 nice 值,用于调整进程的优先级,范围是 -20 到 19,负值表示提高优先级,正值表示降低优先级。
VIRT:进程使用的虚拟内存总量,包括进程代码、数据、共享库以及已分配但未使用的内存等。
RES:进程实际占用的物理内存大小。
SHR:进程共享的内存大小。
S:进程的状态,常见的状态有 R(运行)、S(睡眠)、D(不可中断睡眠)、T(停止)、Z(僵尸)等。
%CPU:进程占用 CPU 的百分比。
%MEM:进程占用物理内存的百分比。
TIME+:进程累计使用 CPU 的时间。
COMMAND:进程对应的命令名称。
2.htop
功能:是top的增强版,界面更美观,交互性更强。支持鼠标操作,能更方便地对进程进行排序、筛选等操作,还能显示进程树,更直观地展示进程之间的关系。
使用场景:适用于需要更便捷地操作和更直观地查看进程信息的场景,尤其在处理复杂的进程关系时,htop 能提供更好的体验。
3.vmstat
功能:主要用于监控系统的虚拟内存使用情况,同时也能提供 CPU、磁盘I/O、进程等方面的统计信息。它可以显示内存的分配、交换空间的使用、进程的上下文切换等数据。
使用场景:分析系统内存管理和进程调度方面的性能问题,例如判断系统是否存在内存不足导致的频繁交换等情况。
[root@centos7-171 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3292072 2108 452620 0 0 1 0 23 30 0 0 100 0 0
注解:
procs 部分
r:表示运行队列(run queue)中的进程数。即正在运行和等待 CPU 时间片的进程数量。这个值如果长期大于系统的 CPU 核心数,说明系统的 CPU 资源比较紧张,可能存在性能问题。
b:表示处于不可中断睡眠状态的进程数,通常是在等待 I/O 操作完成,如等待磁盘 I/O、网络 I/O 等。如果这个值过高,可能表示系统存在 I/O 瓶颈。
memory 部分
swpd:表示已使用的交换空间(swap memory)大小,单位是 KB。如果这个值不断增加,说明系统可能正在将内存中的数据交换到磁盘的交换空间上,这可能是因为物理内存不足。
free:表示空闲的物理内存大小,单位是 KB。这是系统中尚未被使用的内存空间,可用于分配给新的进程或用于缓存等。
buff:表示用于块设备 I/O 的缓冲区(buffer)大小,单位是 KB。缓冲区主要用于临时存储从磁盘读取或写入磁盘的数据,以提高 I/O 性能。
cache:表示页面缓存(page cache)的大小,单位是 KB。页面缓存用于缓存文件系统中的数据,以加快文件的读取速度。
swap 部分
si:表示从磁盘交换到内存(swap in)的数据量,单位是 KB/s。如果这个值持续较高,说明系统频繁地从交换空间读取数据到内存,可能内存不足。
so:表示从内存交换到磁盘(swap out)的数据量,单位是 KB/s。同样,如果这个值持续较高,也可能是内存紧张,系统在将内存数据交换到磁盘。
io 部分
bi:表示从块设备读取的数据量,单位是块 / 秒。这里的块设备通常指磁盘等存储设备,这个值可以反映系统从磁盘读取数据的速度。
bo:表示向块设备写入的数据量,单位是块 / 秒。用于衡量系统向磁盘写入数据的速度。
system 部分
in:表示系统每秒接收的中断数,包括硬件中断和软件中断。如果这个值过高,可能表示系统中有大量的设备在进行 I/O 操作或有频繁的进程调度等活动。
cs:表示每秒上下文切换的次数。上下文切换是指 CPU 从一个进程或线程切换到另一个进程或线程时需要进行的一系列操作,包括保存和恢复寄存器状态、切换内存映射等。较高的上下文切换次数可能意味着系统中有大量的进程在竞争 CPU 资源,或者存在频繁的线程切换。
cpu 部分
us:表示用户态(user space)CPU 时间百分比。即 CPU 用于执行用户进程代码的时间占总 CPU 时间的比例。如果这个值过高,说明用户进程消耗了大量的 CPU 资源。
sy:表示内核态(system space)CPU 时间百分比。是 CPU 用于执行内核代码,如系统调用、中断处理等的时间占比。过高的sy值可能表示系统存在过多的 I/O 操作或内核线程的开销较大。
id:表示 CPU 空闲时间百分比。即 CPU 处于空闲状态,没有执行任何任务的时间占总时间的比例。
wa:表示 CPU 等待 I/O 完成的时间百分比。如果这个值较高,说明系统存在 I/O 瓶颈,CPU 花费了大量时间等待 I/O 操作完成。
st:表示被虚拟机偷走的时间(stolen time)百分比,仅在虚拟机环境中才有意义。如果这个值不为 0,说明虚拟机的 CPU 资源被其他虚拟机或宿主机抢占。
二、CPU性能监测工具
1.uptime
用于显示系统总共运行了多长时间和系统的平均负载。
[root@centos7-171 ~]# uptime
09:34:17 up 3 days, 16:04, 1 user, load average: 0.00, 0.01, 0.05
2.cat /proc/cpuinfo
查看CPU的配置信息
[root@centos7-171 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
stepping : 10
microcode : 0x7c
cpu MHz : 1800.000
cache size : 6144 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat
bogomips : 3600.00
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
stepping : 10
microcode : 0x7c
cpu MHz : 1800.000
cache size : 6144 KB
physical id : 2
siblings : 1
core id : 0
cpu cores : 1
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat
bogomips : 3600.00
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
3.mpstat
实时监控多处理器系统的CPU使用情况,包括各个CPU的使用率、上下文切换次数等。
[root@centos7-171 ~]# mpstat
Linux 3.10.0-1160.el7.x86_64 (centos7-171) 2025年02月14日 _x86_64_ (2 CPU)
09时35分26秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09时35分26秒 all 0.06 0.00 0.10 0.00 0.00 0.00 0.00 0.00 0.00 99.83
三、内存性能监测工具
1.cat /proc/meminfo
查看内存相关配置信息
[root@centos7-171 ~]# cat /proc/meminfo
MemTotal: 4045384 kB
MemFree: 3292684 kB
MemAvailable: 3483968 kB
Buffers: 2108 kB
Cached: 354140 kB
SwapCached: 0 kB
Active: 261972 kB
Inactive: 171616 kB
Active(anon): 77928 kB
Inactive(anon): 8500 kB
Active(file): 184044 kB
Inactive(file): 163116 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 4063228 kB
SwapFree: 4063228 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 77400 kB
Mapped: 27716 kB
Shmem: 9088 kB
Slab: 137404 kB
SReclaimable: 98480 kB
SUnreclaim: 38924 kB
KernelStack: 3104 kB
PageTables: 4980 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6085920 kB
Committed_AS: 354556 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 151432 kB
VmallocChunk: 34359341052 kB
Percpu: 528 kB
HardwareCorrupted: 0 kB
AnonHugePages: 10240 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 104320 kB
DirectMap2M: 3041280 kB
DirectMap1G: 3145728 kB
2.free -h
显示系统使用和空闲内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存命令。
[root@centos7-171 ~]# free -h
total used free shared buff/cache available
Mem: 3.9G 291M 3.1G 8.9M 444M 3.3G
Swap: 3.9G 0B 3.9G
四、磁盘I/O性能监测工具
1.df -h
列出文件系统的整体磁盘空间使用情况
[root@centos7-171 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos_centos7--171-root 46G 1.8G 44G 4% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 396M 0 396M 0% /run/user/0
2.iostat
用于监测系统的磁盘 I/O 性能,提供磁盘设备的读写速率、IOPS(每秒输入输出操作次数)、磁盘利用率等指标。
[root@centos7-171 ~]# iostat
Linux 3.10.0-1160.el7.x86_64 (centos7-171) 2025年02月14日 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.06 0.00 0.10 0.00 0.00 99.83
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.10 1.08 0.65 341943 205273
scd0 0.00 0.00 0.00 1028 0
dm-0 0.10 1.04 0.64 329991 203165
dm-1 0.00 0.01 0.00 2204 0
3.iotop
用于实时显示各个进程的磁盘 I/O 使用情况,能直观地看到哪些进程在大量占用磁盘 I/O 资源。
五、网络性能监测工具
1.nload
实时监控网络接口的带宽使用情况,以图形化的方式显示上传和下载的速率。
注解:
Curr:当前实时的流量速率。
Avg:流量的平均速率,统计的是从 nload 启动到当前时刻的平均流量速度。
Min:在 nload 运行期间记录到的流量的最小速率。
Max:在 nload 运行期间记录到的流量的最大速率。
Ttl:从 nload 启动到当前时刻的流量总量。
2.iftop
实时显示网络连接的工具,能够显示各个端口的收发包情况、网络速度等。
六、进程性能监测工具
1.ps
ps -aux(a:当前所有的进程号包括其他用户的进程号;u:当前用户为主;x:显示所有的进程)
ps -ef
2.ss -ntlp
-n:以数字形式显示地址和端口号。
-t:仅显示 TCP 连接。
-l:只显示处于监听状态的套接字。
-p:显示与每个连接关联的进程名称和进程 ID(PID)
3.lsof
列出打开的文件,包括文件的名称、类型、大小等信息,同时能够查看特定进程打开的所有文件。
lsof -p pid(查看某个进程打开的文件)
lsof /path/to/file(查看某个文件被哪些进程打开)
lsof -i :port(查看某个端口被哪个进程占用)
七、一次性查看 CPU 、内存和磁盘的信息
echo -e "\n==== CPU 信息 ===="; lscpu | grep -E 'CPU\(s\)|Socket|Core|Thread|Model name'; echo -e "\n==== 内存信息 ===="; free -h; echo -e "\n==== 磁盘信息 ===="; lsblk