85 0 0 0
[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
top命令可以看到总体的系统运行状态和cpu的使用率 。
注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%。
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命令输出分成六个部分:
r:在运行队列中等待的进程数 。
b:在等待io的进程数 。
swpd:现时可用的交换内存(单位KB)。
free:空闲的内存(单位KB)。
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
cs:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
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 ~]#
[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命令可以显示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的,也就是我们通常所说的虚拟内存。 当可用内存少于额定值的时候,就会进行交换
[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盘--或是移动硬盘)
硬盘与内存都是存储器,一个是内部,一个是外部。
硬盘与内存的区别是很大的,这里只谈最主要的三点:
内存与硬盘的联系也非常密切
硬盘上的信息永远是暂时不用的,要用请装入内存!
CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号指挥硬盘工作,硬盘上的信息只有在装入内存后才能被处理。
计算机的启动过程就是一个从硬盘上把最常用信息装入内存的过程。
硬盘则决定你的电脑可以装下多少东西,内存则决定你的电脑开机后一次最多可以运行多少程序(如手机运行内存)。