Linux系统查看CPU使用率、内存使用率、磁盘使用率

85 0 0 0

查看CPU使用率

top 命令

[root@192 ~]# top
top - 16:52:41 up 316 days,  8:37,  1 user,  load average: 0.51, 0.73, 0.81
Tasks: 519 total,   2 running, 517 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  1.0 sy,  0.0 ni, 97.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 65754908 total, 24910656 free, 11033012 used, 29811240 buff/cache
KiB Swap: 32964604 total, 32568572 free,   396032 used. 50883244 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
 83013 polkitd   20   0   15.6g   7.0g    616 R  80.0 11.2   0:10.48 redis-server 
 76579 polkitd   20   0   15.6g   6.7g   3236 S  15.0 10.7  98203:28 redis-server
 83028 root      20   0  162528   2516   1532 R  10.0  0.0   0:00.06 top         
     1 root      20   0  194120   6444   4220 S   0.0  0.0 156:28.65 systemd     
     2 root      20   0       0      0      0 S   0.0  0.0   1:14.19 kthreadd    
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   3:12.23 ksoftirqd/0 
     7 root      rt   0       0      0      0 S   0.0  0.0   0:19.10 migration/0 
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh      
     9 root      20   0       0      0      0 S   0.0  0.0 801:15.97 rcu_sched   
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
    11 root      rt   0       0      0      0 S   0.0  0.0   1:43.84 watchdog/0   
    12 root      rt   0       0      0      0 S   0.0  0.0   1:42.88 watchdog/1   
    13 root      rt   0       0      0      0 S   0.0  0.0   0:15.36 migration/1  

image

top命令可以看到总体的系统运行状态和cpu的使用率 。

  • %us:表示用户空间程序的cpu使用率(没有通过nice调度)
  • %sy:表示系统空间的cpu使用率,主要是内核程序。
  • %ni:表示用户空间且通过nice调度过的程序的cpu使用率。
  • %id:空闲cpu
  • %wa:cpu运行时在等待io的时间
  • %hi:cpu处理硬中断的数量
  • %si:cpu处理软中断的数量
  • %st:被虚拟机偷走的cpu

注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%。

vmstat

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值 相比top,通过vmstat可以看到整个机器的 CPU,内存,IO的使用情况, 而不是单单看到各个进程的CPU使用率和内存使用率。

运行示例

一般vmstat工具的使用是通过两个数字参数来完成的

第一个参数: 采样的时间间隔数,单位是秒,

第二个参数: 采样的次数

[root@izuf633l0ge76tv5mzalpmz ~]# vmstat 2 12
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 835920  80296 642904    0    0     1     1   14   69  0  0 100  0  0
 0  0      0 835920  80296 642936    0    0     0     0  216  304  1  1 99  0  0
 0  0      0 835920  80296 642936    0    0     0     0  208  313  0  1 99  0  0
 0  0      0 835920  80300 642936    0    0     0     8  186  292  0  0 99  1  0
 0  0      0 835920  80300 642936    0    0     0     0  115  274  0  0 99  0  0
 0  0      0 835920  80300 642936    0    0     0     0  115  278  0  0 100  0  0
 0  0      0 835920  80300 642936    0    0     0     0  115  280  1  0 100  0  0
 0  0      0 835920  80300 642936    0    0     0     0  117  284  0  1 99  0  0
 0  0      0 835920  80300 642936    0    0     0     0  113  276  0  0 100  0  0
 0  0      0 835920  80300 642936    0    0     0     0  114  281  0  1 100  0  0
 0  0      0 835920  80300 642936    0    0     0     0  119  285  1  0 99  0  0
 0  0      0 835920  80300 642936    0    0     0     0  111  274  0  0 100  0  0
[root@izuf633l0ge76tv5mzalpmz ~]# 

参数详解

Linux 内存监控vmstat命令输出分成六个部分:

  1. 进程procs
    r:在运行队列中等待的进程数 。
    b:在等待io的进程数 。
  2. 内存memoy
    swpd:现时可用的交换内存(单位KB)。 
    free:空闲的内存(单位KB)。
    buff: 缓冲去中的内存数(单位:KB)。
    cache:被用来做为高速缓存的内存数(单位:KB)。
  3. swap交换页面
    si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
    so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
  4. io块设备:
    bi: 发送到块设备的块数,单位:块/秒。
    bo: 从块设备接收到的块数,单位:块/秒。
  5. system系统:
    in: 每秒的中断数,包括时钟中断。
    cs: 每秒的环境(上下文)转换次数。
  6. cpu中央处理器:
    cs:用户进程使用的时间 。以百分比表示。
    sy:系统进程使用的时间。 以百分比表示。
    id:中央处理器的空闲时间 。以百分比表示。

    常见诊断

  • 假如 r 经常大于4 ,且 id 经常小于40,表示中央处理器的负荷很重。
  • 假如 bi,bo 长期不等于0,表示物理内存容量太小。

sar

sar命令语法和vmstat一样。命令不存在时需要安装sysstat包,这个包很有用。

命令示例

例如每1秒采集一次CPU使用率,共采集5次。

[root@192 ~]# sar -u 1 5
Linux 3.10.0-1127.el7.x86_64 (192.168.5.243)     2022年03月16日     _x86_64_    (48 CPU)

17时03分04秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
17时03分05秒     all      0.13      0.00      0.36      0.04      0.00     99.48
17时03分06秒     all      0.15      0.00      0.29      0.02      0.00     99.54
17时03分07秒     all      0.15      0.00      0.31      0.04      0.00     99.50
17时03分08秒     all      0.08      0.00      0.15      0.04      0.00     99.73
17时03分09秒     all      0.17      0.00      0.25      0.06      0.00     99.52
平均时间:     all      0.13      0.00      0.27      0.04      0.00     99.55
[root@192 ~]# 

和top一样,可以看到所有cpu的使用情况。如果需要查看某颗cpu的使用可以用-P参数。例如指定显示0号cpu 的使用情况。

[root@192 ~]# sar -P 0 -u 1 5
Linux 3.10.0-1127.el7.x86_64 (192.168.5.243)     2022年03月16日     _x86_64_    (48 CPU)

17时04分10秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
17时04分11秒       0      0.00      0.00      0.00      0.00      0.00    100.00
17时04分12秒       0      0.00      0.00      0.00      0.00      0.00    100.00
17时04分13秒       0      0.00      0.00      0.00      0.00      0.00    100.00
17时04分14秒       0      0.00      0.00      0.00      0.00      0.00    100.00
17时04分15秒       0      0.00      0.00      0.00      0.00      0.00    100.00
平均时间:       0      0.00      0.00      0.00      0.00      0.00    100.00
[root@192 ~]# 

查看内存使用率

top

[root@192 ~]# top
top - 16:52:41 up 316 days,  8:37,  1 user,  load average: 0.51, 0.73, 0.81
Tasks: 519 total,   2 running, 517 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  1.0 sy,  0.0 ni, 97.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 65754908 total, 24910656 free, 11033012 used, 29811240 buff/cache
KiB Swap: 32964604 total, 32568572 free,   396032 used. 50883244 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
 83013 polkitd   20   0   15.6g   7.0g    616 R  80.0 11.2   0:10.48 redis-server 
 76579 polkitd   20   0   15.6g   6.7g   3236 S  15.0 10.7  98203:28 redis-server
 83028 root      20   0  162528   2516   1532 R  10.0  0.0   0:00.06 top         
     1 root      20   0  194120   6444   4220 S   0.0  0.0 156:28.65 systemd     
     2 root      20   0       0      0      0 S   0.0  0.0   1:14.19 kthreadd    
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   3:12.23 ksoftirqd/0 
     7 root      rt   0       0      0      0 S   0.0  0.0   0:19.10 migration/0 
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh      
     9 root      20   0       0      0      0 S   0.0  0.0 801:15.97 rcu_sched   
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
    11 root      rt   0       0      0      0 S   0.0  0.0   1:43.84 watchdog/0   
    12 root      rt   0       0      0      0 S   0.0  0.0   1:42.88 watchdog/1   
    13 root      rt   0       0      0      0 S   0.0  0.0   0:15.36 migration/1  

查看第四行: KiB Mem 内存使用率: used/ total

free

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

命令格式:

free [参数]

命令功能:

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

命令参数:

-b  以Byte为单位显示内存使用情况。 
-k  以KB为单位显示内存使用情况。 
-m  以MB为单位显示内存使用情况。
-g   以GB为单位显示内存使用情况。 
-o  不显示缓冲区调节列。 
-s<间隔秒数>  持续观察内存使用状况。 
-t  显示内存总和列。 
-V  显示版本信息。

命令示例:

free [-k] # 以 kb  为单位显示内存使用状况
free -g # 以 G 为单位显示内存使用状况
free -m # 以 M 为单位显示内存使用状况
free -t  # 以总和的形式显示内存的使用信息
free -s 1 # 每一秒显示内存使用情况

输出示例

[root@192 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            62G         10G         23G        3.2G         28G         48G
Swap:           31G        386M         31G
[root@192 ~]# 

输出解释

total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buff/cache:磁盘缓存的大小。

第三行是交换分区SWAP的,也就是我们通常所说的虚拟内存。 当可用内存少于额定值的时候,就会进行交换

查看磁盘使用率

df

[root@192 ~]# df
文件系统                     1K-块     已用       可用 已用% 挂载点
devtmpfs                  32860552        0   32860552    0% /dev
tmpfs                     32877452        0   32877452    0% /dev/shm
tmpfs                     32877452  3336580   29540872   11% /run
tmpfs                     32877452        0   32877452    0% /sys/fs/cgroup
/dev/mapper/centos-root   52403200 10658740   41744460   21% /
/dev/sda2                  1038336   188068     850268   19% /boot
/dev/mapper/centos-home 2841846008 58853520 2782992488    3% /home
tmpfs                      6575492       16    6575476    1% /run/user/42
tmpfs                      6575492        0    6575492    0% /run/user/0
overlay                 2841846008 58853520 2782992488    3% /home

磁盘使用率=(Used列数据之和)/(1k-blocks列数据之和)

磁盘和内存的区别与联系:

(磁盘--也叫硬盘--或是U盘--或是移动硬盘)

  1. 硬盘与内存都是存储器,一个是内部,一个是外部。

  2. 硬盘与内存的区别是很大的,这里只谈最主要的三点:

    • 内存是计算机的工作场所,硬盘用来存放暂时不用的信息;
    • 内存是半导体材料制作,硬盘是磁性材料制作;
    • 内存中的信息会随掉电而丢失,硬盘中的信息可以长久保存。
  3. 内存与硬盘的联系也非常密切

     硬盘上的信息永远是暂时不用的,要用请装入内存!
     CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号指挥硬盘工作,硬盘上的信息只有在装入内存后才能被处理。
  4. 计算机的启动过程就是一个从硬盘上把最常用信息装入内存的过程。

  5. 硬盘则决定你的电脑可以装下多少东西,内存则决定你的电脑开机后一次最多可以运行多少程序(如手机运行内存)。

目录