注:
- 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.