Linux系统调优时需要用到一些工具来查看和分析CPU/内存/磁盘/网络的情况,先根据四个方面对接的工具进行介绍。
vmstat(virtual memory statistics 虚拟内存统计)的缩写。
使用语法:
vmstat [-V] [-n] [delay [count]]
[root@master79100 ~]# vmstat 3 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 6 0 70256 20 272432 0 0 3611 34 665 771 3 3 34 60 0
0 9 0 64700 20 276284 0 0 18383 17 2727 3192 0 2 7 91 0
1 8 0 72560 20 266804 0 0 20960 31 3370 3398 8 3 15 74 0
0 9 0 64128 20 275784 0 0 15827 8 3785 4706 1 3 25 70 0
0 8 0 63440 20 274000 0 0 16412 251 3608 4437 1 3 27 69 0
重点注意:procs的r对应的值和CPU项us、sy和id值
[root@master79100 ~]# uptime
01:31:23 up 1:46, 2 users, load average: 0.81, 0.54, 0.94
依次表示:系统现在的时间,运行时间,系统多少用户登录,1min/5min/15min内的平均负载。
load average:三个值不能大于cpu的个数,长期大于CPU个数,说明cpu负载很高,会影响系统性能。
[root@master79100 ~]# mpstat 3 5
Linux 3.10.0-693.el7.x86_64 (master79100) 05/03/2021 _x86_64_ (4 CPU)
01:35:29 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
01:35:32 AM all 0.69 0.09 1.72 0.17 0.00 0.34 0.00 0.00 0.00 96.98
01:35:35 AM all 1.22 0.00 1.75 0.09 0.00 0.35 0.00 0.00 0.00 96.60
01:35:38 AM all 0.96 0.00 1.31 0.00 0.00 0.26 0.00 0.00 0.00 97.47
01:35:41 AM all 0.86 0.00 1.55 0.09 0.00 0.26 0.00 0.00 0.00 97.24
01:35:44 AM all 1.30 0.09 1.38 0.26 0.00 0.17 0.00 0.00 0.00 96.80
Average: all 1.01 0.03 1.54 0.12 0.00 0.28 0.00 0.00 0.00 97.02
内存分析常用的工具:free、smem
[root@master79100 ~]# free -g
total used free shared buff/cache available
Mem: 0 0 0 0 0 0
Swap: 0 0 0
[root@master79100 ~]# free
total used free shared buff/cache available
Mem: 999720 589904 63688 13496 346128 140328
Swap: 0 0 0
[root@master79100 ~]#
free 命令输出中显示了系统的各种内存状态,具体包括物理内存和swap。
物理内存分为已使用内存(used)、空闲内存(free)、共享内存(shared)、系统缓存(buff/cache)、目前可用内存(available)
total=used+free+buff/cache
smem是一款命令行下的内存使用情况报告工具,能够给用户提供linux系统下内存使用的多种报告。
RSS(Resident Set Size):用top命令可用查询到,是最常用的内存指标,表示进程占用的物理内存大小。但将各个进程的RSS值相加,通常会超出整个系统的内存消耗,因为RSS中包含了各个进程间的共享内存。
PSS(Proportional Set Size):所有使用某共享库的程序均分该共享库占用的内存,显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存大小进行平均后,再分摊到各进程上去。
USS(Unique Set Size):进程独自占用的内存,它只计算了进程占用的内存大小,不包含任何共享部分。
smem -k -s uss
-k参数用来显示内存单位
-s表示排序
uss表示对USS进行排序
[root@master79100 ~]# smem -k -s uss
PID User Command Swap USS PSS RSS
1789 root /pause 0 40.0K 44.0K 68.0K
1802 root /pause 0 40.0K 44.0K 68.0K
1785 root /pause 0 44.0K 48.0K 72.0K
1788 root /pause 0 44.0K 48.0K 72.0K
2063 root /pause 0 60.0K 64.0K 88.0K
904 root /sbin/rngd -f 0 132.0K 135.0K 240.0K
[root@master79100 ~]# smem -p -s uss
PID User Command Swap USS PSS RSS
1789 root /pause N/A 0.00% 0.00% 0.01%
1802 root /pause N/A 0.00% 0.00% 0.01%
[root@master79100 ~]# smem -k -P kube-controller-manager
PID User Command Swap USS PSS RSS
5759 root python /usr/bin/smem -k -P 0 5.2M 5.5M 6.3M
4472 root kube-controller-manager --a 0 42.0M 42.0M 42.0M
磁盘性能评估的常用工具:iotop、iotop等
iotop类型与top的命令。
iotop跟一些选项,用来定制输出结果,常用选项:
-p:指定进程
-u:指定用户名
-P:只显示进程,默认显示所有的进程
-k:以千字节显示
-t:表示在每一行前添加一个当前时间。
iostat是I/O statistics(输入/输出统计)的缩写,主要的功能是对系统的I/O操作进行监视,输出主要显示磁盘读写操作的统计信息。
[root@master79100 ~]# iostat -d
Linux 3.10.0-693.el7.x86_64 (master79100) 05/03/2021 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 120.58 5090.86 51.62 59319155 601460
dm-0 122.60 5090.29 51.62 59312600 601426
dm-1 0.01 0.18 0.00 2096 0
[root@master79100 ~]# iostat -d 3 5
Linux 3.10.0-693.el7.x86_64 (master79100) 05/03/2021 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 120.69 5093.88 51.60 59387083 601576
dm-0 122.69 5093.11 51.60 59378152 601542
dm-1 0.01 0.18 0.00 2096 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 281.67 7858.67 2.67 23576 8
dm-0 285.33 7848.00 2.67 23544 8
dm-1 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 246.00 2925.33 8.00 8776 24
dm-0 246.33 2928.00 8.00 8784 24
dm-1 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 311.00 12264.00 4.00 36792 12
dm-0 324.67 12304.00 4.00 36912 12
dm-1 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 411.33 11496.00 38.00 34488 114
dm-0 411.67 11466.67 38.00 34400 114
dm-1 0.00 0.00 0.00 0 0
网络性能评估的常用工具:ping、traceroute、mtr
Loss% 丢包率信息
Snt 已发送数据包的数量
Last 最后一个包的延时
Avg 发生ping包的平均延时
Best 显示ping的最低延时
Wrst 显示ping的最差延时
StDev 显示标准差,一致度量数据分布的分散程度标准,标准差越小,网络的稳定性越好。
traceroute IP
CentOS提供了一个更加强大的工具htop,在linux系统下执行htop即可展现htop的界面,类似于iotop和top的工具。
PID:进程标识号
USER:进程所有者的用户名
PRI:进程的优先级
NI:进程的优先级别数
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程占用的共享内存值
S:进程状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值时负数。
CPU%:该进程占用的CPU使用率
MEM%:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总CPU时间
Commad:进程启动的命令名称