注:

监视 Oracle Linux 上的系统资源

简介

在本教程中,您将结合 Oracle Linux vmstatmpstattop 来监视系统资源使用情况。监视系统资源使用情况对于检测可能会对系统性能产生不利影响的问题非常有用。

背景信息

Oracle Linux 提供了用于监视和分析系统资源使用情况的工具,以及用于诊断多个进程和相关线程中的性能问题的跟踪工具。

目标

需要做哪些准备?

安装了 Oracle Linux 8 或更高版本的客户机系统。

注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用情况说明。

浏览和使用 vmstat 命令选项

vmstat 显示有多少虚拟内存以及多少是空闲内存。该命令还显示分页活动。可以在系统中出现页面输入和页面输出时对其进行观察。

您可以考虑使用任务栏中的隐藏步骤全屏控件最大化查看区域,如图中所示。

隐藏步骤 隐藏步骤

请观看下面的视频,了解有关 vmstat 的概述。

  1. 运行不带任何选项的 vmstat 命令。

    vmstat
    

    该命令生成单个报告。输出分为六个部分:procsmemoryswapiosystemcpu

    • 前两列提供有关进程的信息:

      • r 是处于等待状态的进程数。这些进程处于空闲状态,正在等待运行。

      • b 是处于休眠模式并且自上次更新以来被中断的进程数。

    • 接下来的四列提供了有关内存的信息:

      • swpd 是已用虚拟内存量。

      • free 是空闲内存量。

      • buff 是用作缓冲区的内存量。

      • cache 是用作高速缓存的内存量。

    • 接下来的两列提供有关交换的信息:

      • si 是从磁盘交换的内存量(每秒)。

      • so 是交换到磁盘的内存量(每秒)。

        非零 siso 数字表示没有足够的物理内存,这会导致内核将内存交换到磁盘。

    • 接下来的两列报告输入 / 输出:

      • bi 是每秒从块设备接收的块数。

      • bo 是每秒发送到块设备的块数。

    • 接下来的两列提供以下系统信息:

      • in 是每秒的中断数,包括时钟。

      • cs 是每秒的上下文切换数。

    • 最后五个列提供 CPU 总时间的百分比:

      • us 是用户进程上花费的 CPU 周期的百分比。

      • sy 是在系统(内核)进程上花费的 CPU 周期的百分比。

      • id 是闲置的 CPU 周期的百分比。

      • wa 是等待 I/O 所用 CPU 周期的百分比。

      • st 是从虚拟机窃取的 CPU 周期的百分比。

  2. 运行命令 vmstat 1(数字 1,而不是小写字母 l)可查看每秒的连续报告。

    vmstat 1
    
    • 要终止,请按 Ctrl+C。
  3. 运行 vmstat 7 4 命令以在 7 秒之外运行四份报告。

    vmstat 7 4
    

    计数选项告知 vmstat 要运行的报告数 (4),延迟选项 (7) 是每个报告之间的时间间隔。

  4. 运行命令 vmstat -s 以显示包含各种事件计数器和内存统计信息的表。

    vmstat -s
    
  5. 运行命令 vmstat -a 以显示活动内存和非活动内存。

    vmstat -a
    

    -a 选项在输出的 memory 部分中显示 active 和非活动 (inact) 内存量。

  6. 运行 vmstat -f 命令以显示自上次引导以来的派生数量。

    vmstat -f
    
  7. 运行 vmstat -t 命令以将时间戳添加到输出。

    vmstat -t
    
  8. 运行命令 vmstat -d 以显示系统的磁盘使用情况统计信息。

    vmstat -d
    
  9. 运行命令 vmstat -p sda1 以创建有关特定磁盘分区的报告。

    vmstat -p sda1
    

    输出显示分区的摘要,包括读取和写入的数量。

浏览和使用 mpstat 命令选项

mpstat 命令用于收集和显示系统中所有逻辑 CPU 的性能统计信息。进程占用 CPU 时,无法处理其他请求。这些其他进程必须等到 CPU 空闲为止。

请观看下面的视频,了解有关 mpstat 的概述。

  1. 运行不带任何选项的命令 mpstat

    mpstat
    

    第一行显示系统上的 Linux 内核版本、主机名、当前日期、体系结构和 CPU 数。

    下一行中的第一列提供时间戳,其余列定义如下:

    • CPU 是由从 0 开始的数字或关键字 all 指定的处理器,表示统计信息是在所有处理器之间计算的平均值的。

    • %user 是在用户级别执行应用程序时使用的 CPU 百分比。

    • %nice 是在用户级别执行时使用的 CPU 占优先级的百分比。

    • %sys 是在系统(内核)级别执行时使用的 CPU 的百分比。

      mpstat 命令不包括维修硬件和软件中断所花费的时间。

    • %iowait 是当系统具有未处理的磁盘 I/O 请求时 CPU 空闲的时间百分比。

    • %irq 是 CPU 用来维修硬件中断的时间百分比。

    • %soft 是 CPU 用来维修软件中断的时间百分比。

    • %steal 是虚拟 CPU 或 CPU 在虚拟机管理程序为其他虚拟处理器提供服务时非自愿等待所花费的时间百分比。

    • %guest 是 CPU 运行虚拟处理器所用的时间百分比。

    • %gnice 是 CPU 运行已注意到的来宾所花费的时间百分比。

    • %idle 是 CPU(或 CPU)空闲且系统没有未处理的磁盘 I/O 请求的时间百分比。

  2. 运行命令 mpstat 2 5,每两秒查看一次 CPU 活动,所有 CPU 上共有五个报告。

    mpstat 2 5
    

    输出将一行信息输出总共五次,还会输出平均值。

  3. 运行命令 mpstat -P ALL 以报告每个 CPU 的 CPU 使用情况。

    mpstat -P ALL
    

    此输出为所有 CPU 和每个 CPU 输出一行活动。注意:mpstat 还会输出指定期间的平均 CPU 占用率。

  4. 运行命令 mpstat -P ALL 2 5,每两秒在 CPU 上查看 CPU 活动。

    mpstat -P ALL 2 5
    

    此输出以 2 秒为间隔输出每个 CPU 的 CPU 占用率统计信息 5 次。注意:mpstat 还会输出指定期间的平均 CPU 占用率。

  5. 运行命令 mpstat -A 可在同一命令输出中一起打印 CPU 利用率和中断统计信息。

    mpstat -A
    

浏览 top 命令

top 命令可实时查看处理器活动。top 显示系统中占用大量 CPU 的进程或任务的列表,并提供用于处理进程的有限交互接口。

请观看下面的视频,了解有关 top 的概述。

  1. 对 CPU 活动的时间点视图运行不带任何选项的 top 命令。

    top
    

    默认情况下,输出每三秒刷新一次,分为两个主要部分。

    上面部分显示一般信息,例如过去 1、5 和 15 分钟内的负载平均值、正在运行的任务和休眠任务数以及总体 CPU 和内存使用情况。

    • 使用以下命令打开或关闭上半部分显示的输出:

      • 输入小写字母 l (Not numerical 1) 以切换平均负载和正常运行时间。

      • 输入 m 可关闭和打开内存和交换使用。

      • 输入 t 可关闭和打开内存和交换使用。

    下面的部分显示进程的排序列表,通常按 CPU 使用情况及其进程 ID 号 (process ID number, PID) 以及拥有该进程的用户。此外,输出还显示进程使用的运行时间和内存。

    下面介绍了下半部分中的列:

    • PID 是任务的唯一进程 ID。

    • USER 是任务所有者的有效用户名。

    • PR 是任务的实际优先级。

    • NI 是用户空间中任务的友好值。

      负值表示较高的优先级;正值表示较低的优先级。零值表示任务的优先级在执行时不会生效。

    • VIRT 是任务使用的虚拟内存总量。

      此值包括所有代码、数据和共享库,以及已换出的页面。

    • RES 是任务使用的未交换物理内存或驻留大小。

    • SHR 是任务正在使用的共享内存量。

      此内存可能与其他进程共享。

    • S 是任务的状态。有五种状态:

      • D 不间断休眠

      • R 正在运行

      • S 休眠

      • T 跟踪或停止

      • Z 僵尸

    • %CPU 是自上次屏幕更新以来任务占已用 CPU 时间或 CPU 使用量的份额,以 CPU 总时间的百分比表示。

    • %MEM 是任务当前使用的可用物理内存或内存使用份额。

    • TIME+ 是任务自启动以来使用的总 CPU 时间。

    • COMMAND 是用于启动任务的命令行或程序名称。

  2. 通过输入 Crtl+C 退出 top

vmstatmpstattop 中的比较命令输出

在本练习中,您将运行各种 stress 测试来模拟实验室系统上的不同负载,然后使用 vmstatmpstattop 命令确定它们针对不同类型的负载报告的负载。

即使您将测试作为后台进程运行,也要考虑打开其他终端窗口以进行比较。

每个附加窗口都需要使用 ssh 登录到 oracle@<IP_ADDRESS_OF_COMPUTE_INSTANCE> 的 lab 实例。其中,<IP_ADDRESS_OF_COMPUTE_INSTANCE> 是从 Oracle Cloud 控制台复制的 IP 地址。

  1. 安装 stress 工具。

    1. 使用 dnf repolist 命令验证 ol8_developer_EPEL 系统信息库的状态。

      dnf repolist ol8_developer_EPEL
      
      • 如果状态为 enabled,则继续安装 stress 工具软件包;否则,继续“启用”系统信息库。

      • 使用 dnf conifg-manager 命令启用系统信息库(如果状态为 disabled)。

        dnf config-manager --enable ol8_developer_EPEL
        
  2. 运行 dnf install 命令以安装 stress 工具软件包。

    dnf install stress -y
    
  3. 运行命令 stress --dry-run 以查看命令语法示例。请花一些时间查看示例中的选项以及列出的其他命令选项。

    stress --dry-run
    
  4. 运行 vmstat 4 4mpstat 4 4 命令以查看系统活动的基线。具体而言,请注意分配给用户和系统(内核)进程的 CPU 百分比。这些列应接近零 0。另请注意空闲内存量。

    vmstat 4 4
    mpstat 4 4
    
  5. 运行命令 stress --cpu 模拟计算绑定程序,并在后台运行该命令。此命令生成八个计算密集型进程。

    stress --cpu 8 &
    
    • return 返回到提示符。

    • 运行 ps -ef 命令以查看正在运行的 stress 进程。将输出传输到 grep stress

      ps -ef | grep stress
      
  6. 运行 vmstat 4 10 命令,并记下与 CPU 利用率关联的列中报告的值。

    vmstat 4 10
    

    稍后,您应该会看到 us 列下的百分比反映由 stress 生成的负载。

  7. 运行命令 mpstat 4 10 以评估所有 CPU 的利用率。

    mpstat 4 10
    
  8. 运行 mpstat -P ALL 4 10 命令以评估每个 CPU 的利用率。

    mpstat -P ALL 4 10
    
  9. 运行 top 命令以检查 stress 进程的 CPU 利用率。

    top
    

    几分钟后,请注意 stress 进程以最高优先级运行。通过输入 Ctrl+C 退出 top

  10. 运行 pkill 命令以终止 stress 进程。

    pkill stress
    
  11. 重新运行 vmstat 4 4mpstat 4 4 命令以查看系统活动的基线。

  12. 运行新的 stress 命令并添加 --vm--vm-bytes 选项以在系统上衍生内存活动。

    stress --cpu 8 --vm 8 --vm-bytes 512M &
    
  13. 运行 vmstat 4 10mpstat -P ALL 4 10top 以评估 CPU 和内存活动。

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • 通过输入 Crtl+C 退出 top
  14. 使用 pkill 命令终止 stress 进程。

    pkill stress 
    
  15. 重新运行 vmstat 4 4mpstat 4 4 命令以查看系统活动的基线。

  16. 运行新的 stress 命令并将 --io 选项添加到系统上衍生输入 / 输出活动。

    stress --cpu 8 --vm 8 --vm-bytes 512M --io 8 &
    
  17. 运行 vmstat 4 10mpstat -P ALL 4 10top 以评估 CPU、内存、输入 / 输出活动。

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • 通过输入 Crtl+C 退出 top

    • 使用 pkill 终止 stress

更多学习资源

docs.oracle.com/learn 上浏览其他实验室,或者在 Oracle Learning YouTube 渠道上访问更多免费学习内容。此外,访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心