Linux 系统性能评估
操作系统的性能是指操作系统完成任务的有效性、稳定性和相应速度。影响 Linux 系统性能的因素包括系统硬件资源、操作系统相关资源和应用程序软件资源。下面主要是一些评估系统硬件资源的方法。
CPU 性能评估
-
vmstat 命令
vmstat 是 Virtual Memory Statistics(虚拟内存统计)的缩写,可以用于显示关于系统各种资源之间相关性能的简要信息。
例如,
vmstat 3 5
表示每 3 秒钟更新一次输出信息,统计 5 次后停止输出。通过分析结果中的 procs 项和 cpu 项,可评估 CPU 的负载情况。 -
sar 命令
例如,
sar -u 3 5
可查看系统所有 CPU 的整体负载状况,每 3 秒统计一次,一共统计 5 次。如果需要对系统的每个 CPU 分开查询,可使用
-P
选项。比如说,sar -P 0 3 5
表示对系统的第 1 颗 CPU进行信息统计(sar 中对 CPU 的计数是从 0 开始的)。 -
iostat 命令
iostat 是 I/O statistics(输入/输出统计)的缩写,主要功能是对系统的磁盘 I/O 操作进行监控,但是也能查看 CPU 的使用信息。
iostat -c
可查看系统 CPU 的统计信息,其局限性是只能显示系统所有 CPU 的平均信息。 -
uptime 命令
uptime
是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况。需要注意load average
这个输出项,它的三个值一般不能大于系统 CPU 的个数。在任何瞬间,等待执行之进程的平均数,被称为(load average)。由于平均负载会一直变化,uptime 会输出三个平均时间的估算值,分别为过去的 1 分钟、5 分钟和 15 分钟的估算值。当平均负载持续地超过可用的 CPU 承载时,表示系统已经超出了它所能负荷的了,此时响应可能会陷入停滞不前的状态。
-
top 命令和 ps 命令
通过以上的命令只能查看 CPU 是否繁忙,以及负载是否过大,但是无法知道原因。如果判断系统 CPU 出现问题,可通过
top
、ps
等命令进一步检查是哪些进程导致 CPU 负载过大的。
内存性能评估
-
free 命令
例如,
free -m
表示以 MB 为单位查看内存使用情况。当应用程序可用内存/系统物理内存 < 20%
时,表示系统内存紧缺,需要增加系统内存。 -
watch 命令与 free 命令结合
在 watch 命令后面跟上需要运行的命令,watch 就会自动重复运行这个命令,默认每 2 秒种执行一次,并把执行的结果更新在屏幕上。例如,
watch -n 3 -d free
可以持续检查内存使用情况,其中-n
指定重复执行的间隔时间,-d
表示高亮显示变动。 -
vmstat 命令
对于内存的监控,可以分析 vmstat 命令输出结果中的
memory
项和swap
项。 -
「sar -r」 命令组合
可以通过
sar -r
命令组合查看系统内存和交换空间的使用率,例如sar -r 3 5
。
磁盘 I/O 性能评估
-
「sar -d」 命令组合
通过
sar -d
命令组合,可以对系统的磁盘 I/O 做一个基本的统计,比如sar -d 2 3
。 -
「iostat -d」 命令组合
通过
iostat -d
命令组合也可以查看系统磁盘的使用情况,例如iostat -d 2 3
。另外,iostat -x
命令组合还提供了对每个磁盘的单独统计,例如iostat -x /dev/sda 2 3
。 -
「vmstat -d」 命令组合
通过
vmstat -d
命令组合也可以查看磁盘的统计数据,例如vmstat -d 2 3 | grep sda
可显示磁盘的 reads、writes 和 IO 的使用情况。
网络性能评估
-
ping 命令
如果发现网络反应缓慢,或者连接中断,可以通过
ping
来测试网络的连通情况。丢包率越小,表示网络的质量越高。 -
「netstat -i」 组合命令
netstat -i
组合命令提供了网络接口的详细信息。加上-e
选项可以输出用户友好的信息。 -
「netstat -r」 组合命令
在网络不通或者网络异常时,可通过
netstat -r
检查系统的路由表信息,其输出结果与route
命令的输出相同。 -
「sar -n」 组合命令
sar 提供多种不同的选项来显示网络统计信息,通过
-n
选项可以指定不同类型的开关,比如DEV
(网络接口信息)、EDEV
(关于网络错误的统计数据)、SOCK
(套接字信息)等。