Linux 系统性能评估

操作系统的性能是指操作系统完成任务的有效性、稳定性和相应速度。影响 Linux 系统性能的因素包括系统硬件资源、操作系统相关资源和应用程序软件资源。下面主要是一些评估系统硬件资源的方法。

CPU 性能评估

  1. vmstat 命令

    vmstat 是 Virtual Memory Statistics(虚拟内存统计)的缩写,可以用于显示关于系统各种资源之间相关性能的简要信息。

    例如,vmstat 3 5 表示每 3 秒钟更新一次输出信息,统计 5 次后停止输出。通过分析结果中的 procs 项和 cpu 项,可评估 CPU 的负载情况。

  2. sar 命令

    例如,sar -u 3 5 可查看系统所有 CPU 的整体负载状况,每 3 秒统计一次,一共统计 5 次。

    如果需要对系统的每个 CPU 分开查询,可使用 -P 选项。比如说,sar -P 0 3 5 表示对系统的第 1 颗 CPU进行信息统计(sar 中对 CPU 的计数是从 0 开始的)。

  3. iostat 命令

    iostat 是 I/O statistics(输入/输出统计)的缩写,主要功能是对系统的磁盘 I/O 操作进行监控,但是也能查看 CPU 的使用信息。

    iostat -c 可查看系统 CPU 的统计信息,其局限性是只能显示系统所有 CPU 的平均信息。

  4. uptime 命令

    uptime 是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况。需要注意 load average 这个输出项,它的三个值一般不能大于系统 CPU 的个数。

    在任何瞬间,等待执行之进程的平均数,被称为(load average)。由于平均负载会一直变化,uptime 会输出三个平均时间的估算值,分别为过去的 1 分钟、5 分钟和 15 分钟的估算值。当平均负载持续地超过可用的 CPU 承载时,表示系统已经超出了它所能负荷的了,此时响应可能会陷入停滞不前的状态。

  5. top 命令和 ps 命令

    通过以上的命令只能查看 CPU 是否繁忙,以及负载是否过大,但是无法知道原因。如果判断系统 CPU 出现问题,可通过 topps 等命令进一步检查是哪些进程导致 CPU 负载过大的。

内存性能评估

  1. free 命令

    例如,free -m 表示以 MB 为单位查看内存使用情况。当 应用程序可用内存/系统物理内存 < 20% 时,表示系统内存紧缺,需要增加系统内存。

  2. watch 命令与 free 命令结合

    在 watch 命令后面跟上需要运行的命令,watch 就会自动重复运行这个命令,默认每 2 秒种执行一次,并把执行的结果更新在屏幕上。例如,watch -n 3 -d free 可以持续检查内存使用情况,其中 -n 指定重复执行的间隔时间,-d 表示高亮显示变动。

  3. vmstat 命令

    对于内存的监控,可以分析 vmstat 命令输出结果中的 memory 项和 swap 项。

  4. 「sar -r」 命令组合

    可以通过 sar -r 命令组合查看系统内存和交换空间的使用率,例如 sar -r 3 5

磁盘 I/O 性能评估

  1. 「sar -d」 命令组合

    通过 sar -d 命令组合,可以对系统的磁盘 I/O 做一个基本的统计,比如 sar -d 2 3

  2. 「iostat -d」 命令组合

    通过 iostat -d 命令组合也可以查看系统磁盘的使用情况,例如 iostat -d 2 3。另外,iostat -x 命令组合还提供了对每个磁盘的单独统计,例如 iostat -x /dev/sda 2 3

  3. 「vmstat -d」 命令组合

    通过 vmstat -d 命令组合也可以查看磁盘的统计数据,例如 vmstat -d 2 3 | grep sda 可显示磁盘的 reads、writes 和 IO 的使用情况。

网络性能评估

  1. ping 命令

    如果发现网络反应缓慢,或者连接中断,可以通过 ping 来测试网络的连通情况。丢包率越小,表示网络的质量越高。

  2. 「netstat -i」 组合命令

    netstat -i 组合命令提供了网络接口的详细信息。加上 -e 选项可以输出用户友好的信息。

  3. 「netstat -r」 组合命令

    在网络不通或者网络异常时,可通过 netstat -r 检查系统的路由表信息,其输出结果与 route 命令的输出相同。

  4. 「sar -n」 组合命令

    sar 提供多种不同的选项来显示网络统计信息,通过 -n 选项可以指定不同类型的开关,比如 DEV(网络接口信息)、 EDEV(关于网络错误的统计数据)、 SOCK(套接字信息)等。

Updated: