注:
- Oracle 提供的免费实验室环境中提供了本教程。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室后,请使用特定于您的云环境的这些值替换这些值。
监视 Oracle Linux 上的系统资源
简介
在本教程中,您将结合 Oracle Linux vmstat、mpstat 和 top 来监视系统资源使用情况。监视系统资源使用情况对于检测可能会对系统性能产生不利影响的问题非常有用。
背景信息
Oracle Linux 提供了用于监视和分析系统资源使用情况的工具,以及用于诊断多个进程和相关线程中的性能问题的跟踪工具。
目标
- 浏览
vmstat命令 - 浏览
mpstat命令 - 浏览
top命令 - 使用
vmstat和mpstat以及top - 检查
vmstat、mpstat和top中的命令输出
需要做哪些准备?
安装了 Oracle Linux 8 或更高版本的客户机系统。
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用情况说明。
浏览和使用 vmstat 命令选项
vmstat 显示有多少虚拟内存以及多少是空闲内存。该命令还显示分页活动。可以在系统中出现页面输入和页面输出时对其进行观察。
您可以考虑使用任务栏中的隐藏步骤和全屏控件最大化查看区域,如图中所示。

请观看下面的视频,了解有关 vmstat 的概述。
-
运行不带任何选项的
vmstat命令。vmstat该命令生成单个报告。输出分为六个部分:
procs、memory、swap、io、system和cpu。-
前两列提供有关进程的信息:
-
r是处于等待状态的进程数。这些进程处于空闲状态,正在等待运行。 -
b是处于休眠模式并且自上次更新以来被中断的进程数。
-
-
接下来的四列提供了有关内存的信息:
-
swpd是已用虚拟内存量。 -
free是空闲内存量。 -
buff是用作缓冲区的内存量。 -
cache是用作高速缓存的内存量。
-
-
接下来的两列提供有关交换的信息:
-
si是从磁盘交换的内存量(每秒)。 -
so是交换到磁盘的内存量(每秒)。非零
si和so数字表示没有足够的物理内存,这会导致内核将内存交换到磁盘。
-
-
接下来的两列报告输入 / 输出:
-
bi是每秒从块设备接收的块数。 -
bo是每秒发送到块设备的块数。
-
-
接下来的两列提供以下系统信息:
-
in是每秒的中断数,包括时钟。 -
cs是每秒的上下文切换数。
-
-
最后五个列提供 CPU 总时间的百分比:
-
us是用户进程上花费的 CPU 周期的百分比。 -
sy是在系统(内核)进程上花费的 CPU 周期的百分比。 -
id是闲置的 CPU 周期的百分比。 -
wa是等待 I/O 所用 CPU 周期的百分比。 -
st是从虚拟机窃取的 CPU 周期的百分比。
-
-
-
运行命令
vmstat 1(数字 1,而不是小写字母l)可查看每秒的连续报告。vmstat 1- 要终止,请按 Ctrl+C。
-
运行
vmstat 7 4命令以在 7 秒之外运行四份报告。vmstat 7 4计数选项告知
vmstat要运行的报告数 (4),延迟选项 (7) 是每个报告之间的时间间隔。 -
运行命令
vmstat -s以显示包含各种事件计数器和内存统计信息的表。vmstat -s -
运行命令
vmstat -a以显示活动内存和非活动内存。vmstat -a-a选项在输出的memory部分中显示active和非活动 (inact) 内存量。 -
运行
vmstat -f命令以显示自上次引导以来的派生数量。vmstat -f -
运行
vmstat -t命令以将时间戳添加到输出。vmstat -t -
运行命令
vmstat -d以显示系统的磁盘使用情况统计信息。vmstat -d -
运行命令
vmstat -p sda1以创建有关特定磁盘分区的报告。vmstat -p sda1输出显示分区的摘要,包括读取和写入的数量。
浏览和使用 mpstat 命令选项
mpstat 命令用于收集和显示系统中所有逻辑 CPU 的性能统计信息。进程占用 CPU 时,无法处理其他请求。这些其他进程必须等到 CPU 空闲为止。
请观看下面的视频,了解有关 mpstat 的概述。
-
运行不带任何选项的命令
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 请求的时间百分比。
-
-
运行命令
mpstat 2 5,每两秒查看一次 CPU 活动,所有 CPU 上共有五个报告。mpstat 2 5输出将一行信息输出总共五次,还会输出平均值。
-
运行命令
mpstat -P ALL以报告每个 CPU 的 CPU 使用情况。mpstat -P ALL此输出为所有 CPU 和每个 CPU 输出一行活动。注意:
mpstat还会输出指定期间的平均 CPU 占用率。 -
运行命令
mpstat -P ALL 2 5,每两秒在 CPU 上查看 CPU 活动。mpstat -P ALL 2 5此输出以 2 秒为间隔输出每个 CPU 的 CPU 占用率统计信息 5 次。注意:
mpstat还会输出指定期间的平均 CPU 占用率。 -
运行命令
mpstat -A可在同一命令输出中一起打印 CPU 利用率和中断统计信息。mpstat -A
浏览 top 命令
top 命令可实时查看处理器活动。top 显示系统中占用大量 CPU 的进程或任务的列表,并提供用于处理进程的有限交互接口。
请观看下面的视频,了解有关 top 的概述。
-
对 CPU 活动的时间点视图运行不带任何选项的
top命令。top默认情况下,输出每三秒刷新一次,分为两个主要部分。
上面部分显示一般信息,例如过去 1、5 和 15 分钟内的负载平均值、正在运行的任务和休眠任务数以及总体 CPU 和内存使用情况。
-
使用以下命令打开或关闭上半部分显示的输出:
-
输入小写字母
l(Not numerical1) 以切换平均负载和正常运行时间。 -
输入
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是用于启动任务的命令行或程序名称。
-
-
通过输入 Crtl+C 退出
top。
vmstat、mpstat 和 top 中的比较命令输出
在本练习中,您将运行各种 stress 测试来模拟实验室系统上的不同负载,然后使用 vmstat、mpstat 和 top 命令确定它们针对不同类型的负载报告的负载。
即使您将测试作为后台进程运行,也要考虑打开其他终端窗口以进行比较。
每个附加窗口都需要使用 ssh 登录到 oracle@<IP_ADDRESS_OF_COMPUTE_INSTANCE> 的 lab 实例。其中,<IP_ADDRESS_OF_COMPUTE_INSTANCE> 是从 Oracle Cloud 控制台复制的 IP 地址。
- 登录后,使用
sudo -i命令切换到 root 用户。
-
安装
stress工具。-
使用
dnf repolist命令验证ol8_developer_EPEL系统信息库的状态。dnf repolist ol8_developer_EPEL-
如果状态为
enabled,则继续安装stress工具软件包;否则,继续“启用”系统信息库。 -
使用
dnf conifg-manager命令启用系统信息库(如果状态为disabled)。dnf config-manager --enable ol8_developer_EPEL
-
-
-
运行
dnf install命令以安装stress工具软件包。dnf install stress -y -
运行命令
stress --dry-run以查看命令语法示例。请花一些时间查看示例中的选项以及列出的其他命令选项。stress --dry-run -
运行
vmstat 4 4和mpstat 4 4命令以查看系统活动的基线。具体而言,请注意分配给用户和系统(内核)进程的 CPU 百分比。这些列应接近零0。另请注意空闲内存量。vmstat 4 4 mpstat 4 4 -
运行命令
stress --cpu模拟计算绑定程序,并在后台运行该命令。此命令生成八个计算密集型进程。stress --cpu 8 &-
按 return 返回到提示符。
-
运行
ps -ef命令以查看正在运行的stress进程。将输出传输到grep stress。ps -ef | grep stress
-
-
运行
vmstat 4 10命令,并记下与 CPU 利用率关联的列中报告的值。vmstat 4 10稍后,您应该会看到
us列下的百分比反映由stress生成的负载。 -
运行命令
mpstat 4 10以评估所有 CPU 的利用率。mpstat 4 10 -
运行
mpstat -P ALL 4 10命令以评估每个 CPU 的利用率。mpstat -P ALL 4 10 -
运行
top命令以检查stress进程的 CPU 利用率。top几分钟后,请注意
stress进程以最高优先级运行。通过输入 Ctrl+C 退出top。 -
运行
pkill命令以终止stress进程。pkill stress -
重新运行
vmstat 4 4和mpstat 4 4命令以查看系统活动的基线。 -
运行新的
stress命令并添加--vm和--vm-bytes选项以在系统上衍生内存活动。stress --cpu 8 --vm 8 --vm-bytes 512M & -
运行
vmstat 4 10、mpstat -P ALL 4 10和top以评估 CPU 和内存活动。vmstat 4 10 mpstat -P ALL 4 10 top- 通过输入 Crtl+C 退出
top。
- 通过输入 Crtl+C 退出
-
使用
pkill命令终止stress进程。pkill stress -
重新运行
vmstat 4 4和mpstat 4 4命令以查看系统活动的基线。 -
运行新的
stress命令并将--io选项添加到系统上衍生输入 / 输出活动。stress --cpu 8 --vm 8 --vm-bytes 512M --io 8 & -
运行
vmstat 4 10、mpstat -P ALL 4 10和top以评估 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 帮助中心。
Monitor system resources on Oracle Linux
F49871-04
May 2022
Copyright © 2021, Oracle and/or its affiliates.