开源中文网

您的位置: 首页 > IBM Aix > 正文

AIX5.3系统性能优化和监控(下)

来源:  作者:

性能工具概述

以下各部分将介绍最有用的性能工具。




回页首


vmstat 命令

vmstat 命令报告有关内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。

注意:从 AIX 5L V5.3 开始, vmstat 命令将报告微分区 (Micro-Partitioning™) 环境中已使用的物理处理器 (pc) 数量和已使用的授权值 (ec) 百分比。只有在微分区环境中才会显示这些指标。

vmstat 命令生成的报告可用于平衡系统负载活动。这些系统范围的统计信息(包括所有处理器)计算为用百分比表示的值的平均数,或者计算为总和。如果不带标志调用 vmstat 命令,则报告将包含自从系统启动以来的虚拟内存活动的摘要。

vmstat 命令的语法是:

vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ -w] [ -l ]

[ PhysicalVolume ...] [ Interval [ Count ] ]

表 1 提供了 vmstat 命令的主要标志。

表 1

标志 描述
-f 报告自从系统启动以来的 fork 数量。
-i 显示自从系统启动以来每个设备引发的中断数量。
-s 将 sum 结构的内容写到标准输出,此结构包含自从系统初始化以来的分页事件的绝对计数。-s 选项与其他 vmstat 命令选项是互斥的。

vmstat 命令的常用标志

PhysicalVolume 参数可用于指定一至四个名称。传输统计信息是按指定的顺序针对每个指定的驱动器给出的。此计数表示对物理设备的逻辑和物理请求。它并不意味着读取或写入的数据量。可以在一个物理请求中组合多个逻辑请求。

Interval 参数指定每个报告之间以秒为单位的时间量。第一个报告包含自从系统启动以来的时间统计信息。后续的报告将包含前一个报告以来的间隔期间收集到的统计信息。如果未指定 Interval 参数,则 vmstat 命令将生成单个报告,然后退出。

Count 参数只能与 Interval 参数一起指定。如果指定了 Count 参数,则其值将确定要生成的报告数量和每个报告之间相隔的秒数。如果指定了 Interval 参数而未指定 Count 参数,则会连续生成报告。Count 参数的值不允许为零 (0)。内核维护内核线程、分页和中断活动的统计信息,vmstat 命令将访问这些信息。磁盘输入/输出统计信息由设备驱动程序维护。对于磁盘,平均传输速度由活动时间和传输信息数量确定。百分比活动时间是从报告期间驱动器处于忙状态的时间量计算而来的。

vmstat 命令的报告输出

vmstat 命令生成的报告包含如表 2 所示的列标题。

表 2

描述
Kthr:内核线程状态。
r 采样间隔期间的平均可运行内核线程数量。可运行线程是指已准备就绪但是在等待运行的线程和已经在运行的线程。
b 在采样间隔期间放在 VMM 等待队列中(等待资源和等待输入/输出)的平均内核线程数量。
Memory:有关虚拟和实际内存使用的信息。已访问过的虚拟页面被看作是活动的。
avm 活动的虚拟页,即页空间中已分配的总页数。很高的值并不表示性能很差。
fre 空闲列表的大小。实际内存的很大部分被用作文件系统数据的缓存。空闲列表的大小保持很小并没有什么不正常。
Page:有关缺页和分页活动的信息。这些是间隔期间的平均值,并以每秒的单位数给出。
re 分页程序输入/输出列表。
pi 从分页空间调入的页数。
po 调出到分页空间的页数。
fr 释放的页数(页面替换)。
sr 按页面替换算法扫描的页数。
cy 页面替换算法使用的时钟周期。
Faults:采样间隔期间每秒的陷阱和中断速度平均值。
in 设备中断。
sy 系统调用。
cs 内核线程上下文切换。
CPU:百分比 CPU 使用时间的细分。
us 用户时间
sy 系统时间
id CPU 空闲时间
wa 在系统具有未完成的磁盘/NFS I/O 请求期间的 CPU 空闲时间。
pc 使用的物理处理器数量。仅当分区在使用共享处理器运行时才显示。(仅在微分区环境中显示)。
ec 有权使用的容量的已使用百分比。仅当分区在使用共享处理器运行时才显示。(仅在微分区环境中显示)。
Disk:提供在采样间隔期间每秒传输到指定物理卷的传输量。

vmstat 输出的列标题

下面的示例演示了 vmstat 命令的部分用法:

  • 要以 1 秒的间隔显示五个摘要,可以输入以下命令:
# vmstat 1 5                                                          
System configuration:lcpu=4 mem=3792MB                               

                                                                      

kthr    memory              page              faults        cpu       

----- ----------- ------------------------ ------------ -----------   

r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa   

 0  0 159012 649264   0   0   0   0    0   0   9 1266  82  0  0 99  0 

 0  0 159013 649263   0   0   0   0    0   0   6 1154  84  0  0 99  0 

 0  0 159013 649263   0   0   0   0    0   0   4 1152  82  0  0 99  0 

 0  0 159013 649263   0   0   0   0    0   0   6 1158  90  0  0 99  0 

 0  0 159013 649263   0   0   0   0    0   0   4 1160  85  0  1 99  0 

# 

  • 要显示各种事件的计数,可以输入以下命令:
# vmstat -s

367947 total address trans. faults

22409 page ins

4607 page outs

0 paging space page ins

0 paging space page outs

0 total reclaims

215640 zero filled pages faults

4540 executable filled pages faults

0 pages examined by clock

0 revolutions of the clock hand

0 pages freed by the clock

50503 backtracks

0 free frame waits

0 extend XPT waits

9018 pending I/O waits

27017 start I/Os

15751 iodones

69848 cpu context switches

15486 device interrupts

27013 software interrupts

90354 decrementer interrupts

400 mpc-sent interrupts

400 mpc-receive interrupts

234 phantom interrupts

0 traps

1163018 syscalls

#

  • 要以 2 秒的间隔显示 hdisk0 和 hdisk1 的五个摘要,可以输入以下命令;
# vmstat hdisk0 hdisk1 2 5                                                      

System configuration:lcpu=4 mem=3792MB drives=7                                

                                                                                

kthr    memory              page              faults        cpu      disk xfer  

----- ----------- ------------------------ ------------ ----------- ----------- 

r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa  1  2  3  4 

 0  0 139021 817059   0   0   0   0    0   0   4 1200  93  0  0 99  0 9277 1151 

 -  -                                                                           

 0  0 139022 817058   0   0   0   0    0   0   2 1142  82  0  0 99  0  0  0  -  

-                                                                               

 0  0 139022 817058   0   0   0   0    0   0   3 1148  78  0  0 99  0  0  0  -  

-                                                                               

 0  0 139022 817058   0   0   0   0    0   0   3 1143  81  0  0 99  0  0  0  -  

-                                                                               

 0  0 139022 817058   0   0   0   0    0   0   2 1142  78  0  0 99  0  0  0  -  

-                                                                               

# 

  • 要显示自从系统启动以来的 fork 数量,可以输入以下命令:
# vmstat -f                 

2792 forks 

启动一些进程,并在 fork 计数之后检查它们:

# for proc in 1 2 3 4 5     

> do                        

>    lsvg > /dev/null       

> done                      

# vmstat -f                 

2798 forks 

# 

与上一次执行之差为 6,一个针对 for 命令,五个针对 lsvg > /dev/null 命令。




回页首


sar 命令

sar 命令收集、报告或保存系统活动信息。

sar 命令的缺省报告(CPU 利用报告)可能是系统管理员开始系统活动检查所必须运行的最初功能之一,因为它监视主要的系统资源。

可以使用标志来选择有关特定系统活动的信息。不指定任何标志则仅选择系统单元活动。指定 –A 标志将选择所有活动。在开始打印统计信息之前,sar 命令将打印当前活动的 CPU 数量和磁盘数量。

注意:从 AIX 5L V5.3 开始, sar 命令将报告利用率指标 physc  %entc ,这些指标与微分区和同步多线程环境有关。只有在微分区和同步多线程环境中才会显示这些指标。 physc 指示物理处理器的数量。

sar 报告的输出

sar 命令生成的报告包含如表 3 所示的列标题。

表 3

描述
%idle: 报告在没有未完成的磁盘 I/O 请求情况下的 CPU 空闲时间百分比。
%sys 报告 CPU 在系统(或内核)级别执行所花的时间百分比。
%usr 报告 CPU 在用户(或应用程序)级别执行所花的时间百分比。
physc 报告已使用的物理处理器数量。仅当分区使用共享处理器运行或启用了同步多线程时,才会报告此信息。
%entc 报告有权使用的容量的已使用百分比。仅当分区使用共享处理器运行时,才会报告此信息。

sar 命令的列标题

如果 CPU 利用率接近 100%(%user 列 + %sys 列),则采样的工作负载是 CPU 受限的 (CPU-bound)。如果相当大的时间百分比花在 I/O 等待上,这意味着 CPU 的执行由于等待磁盘 I/O 而受到阻塞。该 I/O 可能是必需的文件访问,或者可能是由于缺乏足够内存而与分页相关联的 I/O。

注意:如果没有请求任何其他特定的内容选项,则 sar 命令将报告系统单元活动。如果使用了 –P 标志,并且分区在使用共享处理器运行,而且分区容量使用就是所分配的容量,则会报告一个带有 cpuid U  CPU 行,以显示系统范围的未使用容量。

如果分区在使用共享处理器以无上限 (uncapped) 模式运行,则 %entc 将在每个 CPU 行中报告已授予的有权使用的容量百分比,并在系统范围的 CPU 行中报告已分配的有权使用的容量百分比。

下面的示例演示了 sar 命令的部分用法:

  • 要报告在接下来的五秒中每两秒内的当前活动,可以输入以下命令:
# sar 2 5  
AIX server2 3 5 00C478DE4C00    12/02/05         
System configuration:lcpu=4                     

                                                 

16:26:29    %usr    %sys    %wio   %idle   physc 

16:26:31       0       0       0     100    2.00 

16:26:33       0       0       0     100    2.00 

16:26:35       0       0       0     100    2.00 

16:26:37       0       0       0     100    2.00 

16:26:39       0       0       0     100    2.00 

                                                 

Average        0       0       0     100    2.00 

# 

  • 要报告前两个处理器在接下来的五秒中每秒的活动,可以输入以下命令:
# sar -u  -P 0,1 1 5                                      

                                                          

AIX server2 3 5 00C478DE4C00    12/02/05                  

                                                          

System configuration:lcpu=4                              

                                                          

16:28:55 cpu    %usr    %sys    %wio   %idle   physc      

16:28:56  0        0       0       0     100    0.48      

          1        0       0       0     100    0.48      

16:28:57  0        0       0       0     100    0.53      

          1        0       0       0     100    0.48      

16:28:58  0        0       0       0     100    0.53      

          1        0       0       0     100    0.48      

16:28:59  0        0       0       0     100    0.53      

          1        0       0       0     100    0.48      

16:29:00  0        0       0       0     100    0.53      

          1        0       0       0     100    0.48      

                                                          

Average   0        0       0       0     100    0.52      

          1        0       0       0     100    0.48      

# 




回页首


topas 命令

topas 命令在字符终端上报告有关本地系统上的活动的至关重要的统计信息。topas 命令以缺省的两秒间隔从系统中提取并显示统计信息。topas 命令提供了以下替代屏幕:

  • 总体系统统计信息
  • 最忙的进程列表
  • WLM 统计信息

注意:必须在系统上安装 bos.perf.tools  perfagent.tools 文件集才能运行 topas 命令。

topas 监视器的总体系统统计信息屏幕

总体系统统计信息屏幕的输出包括一个固定部分和一个可变部分。输出屏幕左侧的顶部两行显示运行 topas 程序的系统名称、上次观察的日期和时间,以及监视间隔。

topas 显示屏幕的可变部分可以有一个、两个、三个、四个或五个子部分。如果显示了多个子部分,则始终按以下顺序显示它们:

    • CPU
    • Network Interfaces
    • Physical Disks
    • Workload Management Classes
    • Processes

CPU utilization

此子部分显示一个条形图,其中显示累积的 CPU 使用情况。如果存在多个 CPU,通过按两次 c 键可以显示 CPU 列表。仅按一次 c 键将关闭此子部分。两种格式都将显示下列字段:
 

User% 显示在用户模式下执行的程序所使用的 CPU 百分比。(缺省按 User% 排序)

Kern % 显示在内核模式下执行的程序所使用的 CPU 百分比。

Wait% 显示等待 IO 所花的时间百分比。

Idle% 显示 CPU 的空闲时间百分比。

Physg 授予该分区的物理处理器数量(如果是微分区)。

%Entg 授予某个分区的有权使用的容量百分比(如果是微分区)。

Network Interfaces

此子部分显示活动的网络接口列表。显示的最大接口数量是 –n 标志所指定的受监视活动接口的数量。如果还显示了其他子部分,则会显示一个较小的接口数量。按 n 键将关闭此子部分。再次按 n 键将显示所有网络接口活动的单行报告摘要。两种报告都会显示下列字段:

Interf 网络接口的名称。

KBPS 监视间隔期间每秒的总吞吐量(以 MB 为单位)。此字段是每秒接收和发送的 KB 数之和。

I-Pack 监视间隔期间每秒接收的数据包数量。

O-Pack 监视间隔期间每秒发送的数据包数量。

KB-In 监视间隔期间每秒接收到的 KB 数。

KB-Out 监视间隔期间每秒发送的 KB 数。

Physical Disks

此子部分显示活动的物理磁盘列表。显示的最大物理磁盘数量是用 –d 标志指定的受监视活动物理磁盘的数量。如果还显示了其他子部分,则会显示一个较小的物理磁盘数量。按 d 键将关闭此子部分。再次按 d 键将显示所有物理磁盘活动的单行报告摘要。两种报告都会显示下列字段:

Disk 物理磁盘的名称。

Busy% 指示物理磁盘的活动时间百分比(该驱动器的带宽利用率)。

KBPS 监视间隔期间每秒读取和写入的 KB 数。此字段是 KB-Read 和 KB-Writ 之和。

TPS 每秒向该物理磁盘发出的传输数量。传输是针对该物理磁盘的 I/O 请求。可以在针对该磁盘的单个 I/O 请求中组合多个逻辑请求。传输具有不确定的大小。

KB-Read 每秒从该物理磁盘读取的 KB 数。

KB-Writ 每秒写到该物理磁盘的 KB 数。

WLM classes

此子部分显示活动的工作负载管理 (WLM) 类的列表。显示的最大 WLM 类数量是用 –w 标志指定的受监视活动 WLM 类的数量。如果还显示了其他子部分,则会显示一个较小的类数量。按 w 键将关闭此子部分。将针对每个类显示下列字段:

% CPU Utilization 该 WLM 类在监视间隔期间的平均 CPU 利用率。

% Mem Utilization 该 WLM 类在监视间隔期间的平均内存利用率。

% Blk I/O 该 WLM 类在监视间隔期间的平均块 I/O 百分比。

Processes

此子部分显示活动进程的列表。显示的最大进程数量是用 –p 标志指定的受监视活动进程的数量。如果还显示了其他子部分,则会显示一个较小的进程数量。按 p 键将关闭此子部分。各进程按它们在监视间隔期间的 CPU 使用率进行排序。将针对每个进程显示下列字段:

Name 在该进程中执行的可执行程序的名称。此名称将剥离任何路径名称和参数信息,并将长度截断为 9 个字符。

Process ID 该进程的进程 ID。

% CPU Utilization 该进程在监视间隔期间的平均 CPU 利用率。在第一次显示某个进程时,此值是该进程在生存期中的平均 CPU 利用率。

Paging Space Used 分配给该进程的分页空间大小。可将这视为该进程的内存占用空间大小,但是不包括用于保存可执行程序及其依赖的任何共享库的内存。

Process Owner 拥有该进程的用户的用户名(如果关闭了 WLM 部分)。

WLM Class 该进程所属的工作负载管理类(如果打开了 WLM 部分)。

Events/queues

显示监视间隔期间每秒频率的选定系统全局事件,以及线程运行和等待队列的平均大小。

Cswitch 上下文切换的数量。

Syscalls 系统调用的总数。

Reads read 系统调用的数量。

Writes write 系统调用的数量。

Forks fork 系统调用的数量。

Execs exec 系统调用的数量。

Runqueue 已准备好运行但是在等待某个处理器可用的线程平均数。

Waitqueue 正在等待分页完成的平均线程数量。

File/TTY

显示每秒频率的选定文件和 TTY 统计信息。

Readch 在监视间隔期间每秒通过 read 系统调用读取的字节数。

Writech 在监视间隔期间每秒通过 write 系统调用写入的字节数。

Rawin 监视间隔期间每秒从 TTY 读取的原始字节数。

Ttyout 监视间隔期间每秒写到 TTY 的字节数。

Igets 在监视间隔期间每秒对索引节点查找例程的调用数量。

Namei 监视间隔期间每秒对路径名查找例程的调用数量。

Dirblk 监视间隔期间目录搜索例程每秒扫描的目录块数量。

Paging

显示每秒频率的分页统计信息。

Faults 监视间隔期间每秒发生的缺页数量。这包括没有导致分页活动的缺页。

Steals 监视间隔期间每秒由虚拟内存管理器替换的物理内存 4 K 帧数。

PgspIn 监视间隔期间每秒从分页空间读取的 4 K 页数。

PgspOut 监视间隔期间每秒写到分页空间的 4 K 页数。

PageIn 监视间隔期间每秒读取的 4 K 页数。这包括与从文件系统读取相关联的分页活动。将此值减去 PgspIn 将获得监视间隔期间每秒从文件系统读取的 4 K 页数。

PageOut 监视间隔期间每秒写入的 4 K 页数。这包括与写入到文件系统相关联的分页活动。将此值减去 PgspOut 将获得监视间隔期间每秒写到文件系统的 4 K 页数。

Sios 监视间隔期间每秒由虚拟内存管理器发出的 I/O 请求数量。

Memory

显示实际内存大小和使用中的内存分布。

Real,MB 以 MB 为单位的实际内存大小。

% Comp 当前分配给计算性页帧的实际内存百分比。计算性页帧一般是由分页空间支持的页帧。

% Noncomp 当前分配给非计算性页帧的实际内存百分比。非计算性页帧一般是由文件空间(无论是数据文件、可执行文件还是共享库文件)支持的页帧。

% Client 当前分配用于缓存远程安装的文件的实际内存百分比。

Paging space

显示分页空间的大小和利用率。

Size,MB 系统上所有分页空间的和(以 MB 为单位)。

% Used 当前已使用的总分页空间百分比。

% Free 当前空闲的总分页空间百分比。

NFS

显示每秒调用中的 NFS 统计信息。

    • 服务器 V2 调用数/秒
    • 客户机 V2 调用数/秒
    • 服务器 V3 调用数/秒
    • 客户机 V3 调用数/秒

图 1 显示了总体系统统计信息屏幕的示例输出。


图 1 总体系统统计信息屏幕
 

除了可变的 Processes 子部分以外,通过将光标移动到所需列的顶部,您可以按任何列对所有子部分排序。除了 Processes 子部分外,所有可变的子部分都具有下列视图:

    • 使用资源最多的用户列表
    • 表示活动之和的单行报告

例如,该单行报告视图可能仅显示总体磁盘或网络吞吐量。对于 CPU 子部分,您可以选择繁忙处理器的列表或全局 CPU 利用率,如前面的示例所示。

最忙的进程列表屏幕

要查看列出最忙进程的屏幕,可以使用 topas 命令的 –P 标志。此屏幕类似于总体系统统计信息屏幕的 Processes 子部分,但是带有附加的详细信息。通过将光标移动到所需列的顶部,您可以按任何列对此屏幕排序。

图 2 显示了最忙的进程屏幕的输出示例。


图 2 最忙的进程屏幕
 

磁盘指标屏幕

要查看列出磁盘指标的屏幕,可以使用 topas 命令的 –D 标志。此屏幕报告磁盘服务时间、磁盘队列指标和磁盘吞吐量。报告的指标如下:

AQD 等待发送到磁盘的平均请求数量。

AQW 每个请求的队列平均等待时间(以毫秒为单位)。

ART 指示从承载服务器收到已发送读请求的响应的平均时间。后缀指示时间单位。缺省时间单位为毫秒。

AWT 指示从承载服务器收到已发送写请求的响应的平均时间。后缀指示时间单位。缺省时间单位为毫秒。

MRT 指示从承载服务器收到已发送读请求的响应的最长时间。后缀指示时间单位。缺省时间单位为毫秒。

MWT 指示从承载服务器收到已发送写请求的响应的最长时间。后缀指示时间单位。缺省时间单位为毫秒。


图 3 显示了磁盘指标屏幕的输出示例
 

常规 topas 子命令

当 topas 命令在运行时,它可以接受一个字符的子命令。每当监视间隔结束,该程序就检查是否输入了表 4 所示的子命令之一,并响应要求的操作。

表 4 topas 命令的子命令

子命令 描述
a 显示所有接受监视的可变子部分(CPU、network、disk、WLM 和 process)。按 a 键始终会将 topas 命令返回到初始主屏幕。
c 关闭累积报告和最忙的 CPU 列表之间的 CPU 子部分。所显示的最忙 CPU 的数量取决于屏幕上可用的空间。
C 大写的 C 键将激活 Cross-Partition 面板,或者如果该面板当前是活动的,则将其复位以显示全局摘要、专用和共享部分。
d 关闭最忙的磁盘列表和系统总体磁盘活动报告之间的磁盘子部分。所显示的最忙磁盘的数量取决于屏幕上可用的空间。
D 大写的 D 键将当前屏幕替换为 Disk Metric 屏幕。此屏幕提供了有关磁盘访问时间和磁盘队列的附加信息。再次按 D 键将切换回缺省主屏幕。
f 将光标移到某个 WLM 类上面并按 f 键,将会在 WLM 屏幕底部显示该类中的进程列表。仅当 topas 处于全屏幕 WLM 显示模式(通过使用 W 键或 –W 标志来实现)时,此键才有效。
h 显示帮助屏幕。
H 显示本地面板的帮助屏幕(如果可用的话)。
L 大写的 L 键将当前屏幕替换为逻辑分区屏幕;并将显示与 lparstat 和 mpstat 提供的指标类似的LPAR、微分区和同步多线程指标。
n 关闭最忙的接口列表和系统总体网络活动报告之间的网络接口子部分。所显示的最忙接口的数量取决于屏幕上可用的空间。
p 打开和关闭活动进程子部分。所显示的最忙进程的数量取决于屏幕上可用的空间。
q 退出该程序。
r 刷新屏幕。
w 打开和关闭工作负载管理 (WLM) 类子部分。所显示的最忙 WLM 类的数量取决于屏幕上可用的空间。
W 大写的 W 键将缺省屏幕替换为全屏幕的 WLM 类屏幕。此屏幕提供了有关 WLM 类和分配到各个类的进程的更详细信息。再次按 W 键将切换回缺省主屏幕。
箭头和 Tab 键 主屏幕中的各个子部分,例如 CPU、Network、Disk、WLM Classes 以及全屏幕的 WLM 和 Process 屏幕等,可以按不同条件进行排序。将光标定位在某个列上面将激活对该列的排序。条目始终是从最高到最低值排序。使用 Tab 键或箭头键可以移动光标。排序仅对 128 个磁盘和 16 个网络适配器有效。


 



回页首


 

netstat 命令

当您遇到通信问题时,netstat 可能是帮助您确定问题的非常有用的工具。

接口可用性、地址和统计信息

首先,您应该使用 netstat –i 命令来验证所有已配置的接口的状态,如下面的示例所示。接口 en0 已启用,而接口 en1 则关闭了。缺省情况下,netstat 命令尝试将 IP 地址解析到某个主机。要显示 IP 地址,您可以另外使用 n 标志,这样就可以使用 netstat 命令同时查找接口的 MAC 地址和 IP 地址。

示例 使用 netstat -i 确定所有接口的状态

# netstat -i

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en0   1500  link#2      0.2.55.2f.a7.e    14322381     0 14957286 19956     0

en0   1500  9.3.5       server2.itsc.aust 14322381     0 14957286 19956     0

en1*  1500  link#3      0.2.55.2f.a7.f           0     0        1     1     0

en1*  1500  9.1.1       alm-bd-as.almaden        0     0        1     1     0

lo0   16896 link#1                           12017     0    12950     0     0

lo0   16896 127         localhost            12017     0    12950     0     0

lo0   16896 ::1                              12017     0    12950     0     0

# netstat -in

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en0   1500  link#2      0.2.55.2f.a7.e    14321816     0 14957179 19956     0

en0   1500  9.3.5       9.3.5.195         14321816     0 14957179 19956     0

en1*  1500  link#3      0.2.55.2f.a7.f           0     0        1     1     0

en1*  1500  9.1.1       9.1.1.1                  0     0        1     1     0

lo0   16896 link#1                           12009     0    12942     0     0

lo0   16896 127         127.0.0.1            12009     0    12942     0     0

lo0   16896 ::1                              12009     0    12942     0     0

 

如果 Ierrs 和 Oerrs 的值不为零,则检验网络接口和电缆或增加对应缓冲区的大小。在以太网上,冲突字段不受支持,并将始终显示 0(零)。

路由表

每次在系统上配置某个接口,都会将对应子网的路由添加到本地路由表中。如果希望系统与位于不是直接连接的网络上的远程系统通信,则必须在路由表中包括该子网的某个特定路由或包括某个缺省路由。确保您指定的网关是可用的并位于直接连接的网络上。可以使用 netstat –rn 命令显示系统中的路由表,如下面的示例所示。对于此示例,您可以看到网络 111.111.0.0 可通过网关 9.3.5.254 进行访问。对于所有其他远程路由,系统将使用缺省网关 9.3.5.41。

示例 显示路由表

# netstat -rn

Routing tables

Destination      Gateway           Flags   Refs     Use  If   Exp  Groups

Route Tree for Protocol Family 2 (Internet):

default          9.3.5.41          UG        4     64879 en0      -      -

9.1.1.0          9.1.1.1           UHSb      0         0 en1      -      -   =>

9.1.1/24         9.1.1.1           U         0         0 en1      -      -

9.1.1.1          127.0.0.1         UGHS      0         0 lo0      -      -

9.1.1.255        9.1.1.1           UHSb      0         0 en1      -      -

9.3.5.0          9.3.5.195         UHSb      0         0 en0      -      -   =>

9.3.5/24         9.3.5.195         U         4  14699083 en0      -      -

9.3.5.195        127.0.0.1         UGHS      6      1846 lo0      -      -

9.3.5.255        9.3.5.195         UHSb      0         1 en0      -      -

111.111/16       9.3.5.254         UG        0         0 en0      -      -

127/8            127.0.0.1         U         5     10313 lo0      -      -

Route Tree for Protocol Family 24 (Internet v6):

::1              ::1               UH        0         0 lo0      -      -

 

如果您有多个路由,每个路由具有到相同目标的不同成本,可以使用 netstat -C 命令显示路由成本。在下面的示例中,您可以看到系统有四个不同的路由,每个路由使用不同的网关并具有到达网络 111.111.0.0 的不同成本。

示例 使用 netstat -C 显示具有不同成本的路由

# netstat -Cn

Routing tables

Destination      Gateway           Flags     Wt  Policy  If   Cost Config_Cost

Route Tree for Protocol Family 2 (Internet):

default          9.3.5.41          UG         1    -    en0       0    0

9.1.1.0          9.1.1.1           UHSb       1    -    en1       0    0 =>

9.1.1/24         9.1.1.1           U          1    -    en1       0    0

9.1.1.1          127.0.0.1         UGHS       1    -    lo0       0    0

9.1.1.255        9.1.1.1           UHSb       1    -    en1       0    0

9.3.5.0          9.3.5.195         UHSb       1    -    en0       0    0 =>

9.3.5/24         9.3.5.195         U          1    -    en0       0    0

9.3.5.195        127.0.0.1         UGHS       1    -    lo0       0    0

9.3.5.255        9.3.5.195         UHSb       1    -    en0       0    0

111.111/16       9.3.5.254         UG         1    -    en0       0    0 =>

111.111/16       9.3.5.253         UG         1    -    en0       5    5 =>

111.111/16       9.3.5.252         UG         1    -    en0      10   10 =>

111.111/16       9.3.5.251         UG         1    -    en0      15   15

127/8            127.0.0.1         U          1    -    lo0       0    0

222.222.222/24   9.1.3.5           UG         1    -    en0       0    0

Route Tree for Protocol Family 24 (Internet v6):

::1              ::1               UH         1    -    lo0       0    0

 

MTU 大小

可通过网络发送的最大数据包大小称为“最大传输单元”(MTU)。相同物理或逻辑 (VLAN) 网络上的所有设备都应该使用相同的 MTU 大小。

可以使用 netstat –in 命令显示 MTU 大小。

内存缓冲区

内存管理例程为通信目的而保留了有关内核如何处理内存缓冲区 (mbuf) 的统计信息。每个处理器都有自己的 mbuf 池。

可以使用 netstat –m 命令显示这些统计信息,如下面的示例所示。

示例 使用 netstat -m 命令显示 mbuf 统计信息

Kernel malloc statistics:

******* CPU 0 *******

By size           inuse     calls failed   delayed    free   hiwat   freed

32                   32        45      0         0      96    4852       0

64                   49     56964      0         1     143    4852       0

128                 229     15220      0        13     347    2426       0

256                 191   8802219      0         9    2321    4852       0

512                3245  39247629      0      1706    4003    6065   18871

1024                127      1499      0        35      25    2426       0

2048               2056     20668      0      2765    2048    3639     714

4096                 68       125      0         4     953    1213     746

8192                520      7635      0       505     668     606    2274

16384               512      3057      0       412     303     303     630

32768                 0       144      0        24       1     151       0

65536                 1       349      0        65      20     151       0

131072                0         6      0         0      86     121       0

******* CPU 1 *******

By size           inuse     calls failed   delayed    free   hiwat   freed

64                    2     35430      0         0      62    4852       0

128                   1      3136      0         1      95    2426       0

.

.

.

(省略的行)

.

.

.

Streams mblk statistic failures:

0 high priority mblk failures

0 medium priority mblk failures

0 low priority mblk failures

 

如果失败数量不为零,您可以修改可调整的 thewall 或 maxmbuf。

设备驱动程序统计信息

可以使用 netstat –v 命令显示设备驱动程序信息,如下面的示例所示。数据将使用 netstat 命令来生成。

示例 使用 netstat -v 命令

# netstat -v ent0|more

-------------------------------------------------------------

ETHERNET STATISTICS (ent0) :

Device Type:2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)

Hardware Address:00:02:55:2f:a7:0e

Elapsed Time:2 days 3 hours 44 minutes 33 seconds

Transmit Statistics:Receive Statistics:

--------------------                          -------------------

Packets:14928988                             Packets: 14347559

Bytes:2150983710                             Bytes: 1895521071

Interrupts:0                                 Interrupts: 2691358

Transmit Errors:0                            Receive Errors: 0

Packets Dropped:10547                        Packets Dropped: 0

Bad Packets: 0

Max Packets on S/W Transmit Queue: 8656

S/W Transmit Queue Overflow: 43999

Current S/W+H/W Transmit Queue Length: 1

Broadcast Packets:939                        Broadcast Packets: 435771

Multicast Packets:0                          Multicast Packets: 34

No Carrier Sense:0                           CRC Errors: 0

DMA Underrun:0                               DMA Overrun: 0

Lost CTS Errors:0                            Alignment Errors: 0

Max Collision Errors:0                       No Resource Errors: 0

Late Collision Errors:0                      Receive Collision Errors: 0

Deferred:0                                   Packet Too Short Errors: 0

SQE Test:0                                   Packet Too Long Errors: 0

Timeout Errors:0                             Packets Discarded by Adapter: 0

Single Collision Count:0                     Receiver Start Count: 0

Multiple Collision Count: 0

Current HW Transmit Queue Length: 1

General Statistics:

-------------------

No mbuf Errors: 0

Adapter Reset Count: 0

Adapter Data Rate: 200

Driver Flags:Up Broadcast Running

Simplex 64BitSupport ChecksumOffload

PrivateSegment LargeSend DataRateSet

2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) Specific Statistics:

--------------------------------------------------------------------

Link Status :Up

Media Speed Selected:Auto negotiation

Media Speed Running:100 Mbps Full Duplex

PCI Mode:PCI-X (100-133)

PCI Bus Width:64-bit

Latency Timer: 144

Cache Line Size: 128

Jumbo Frames:Disabled

TCP Segmentation Offload:Enabled

TCP Segmentation Offload Packets Transmitted: 10649

TCP Segmentation Offload Packet Errors: 0

Transmit and Receive Flow Control Status:Disabled

Transmit and Receive Flow Control Threshold (High): 45056

Transmit and Receive Flow Control Threshold (Low): 24576

Transmit and Receive Storage Allocation (TX/RX): 16/48

 

此命令的输出将包括非常有用的消息,例如:

Device Type 适配器类型和可能的介质速度的描述。

Hardware Address 适配器的 MAC 地址。

Elapsed Time 自从重设统计信息以来所经过的时间。

Packets 成功传输的数据包数量。

Transmit Errors 输出错误的数量。这是由于硬件/网络错误导致的失败传输的计数器。

Packets Dropped 设备驱动程序已接受进行传输但是由于任何原因而未传输的数据包数量。

S/W Transmit Queue Overflow

已溢出软件传输队列的传出数据包总数。

No Carrier Sense 由于没有载波侦听错误而导致的失败传输数量。

Current HW Transmit Queue Length

硬件传输队列上当前存在的传出数据包数量。

No Resource Errors 由于适配器上没有接收缓冲区可用而被硬件丢弃的传入数据包数量。

No mbuf Errors mbufs 对设备驱动程序不可用的次数。

Adapter Reset Count

已重新初始化适配器的次数。

Link Status 接口的当前状态。

Media Speed Selected

适配器的已配置连接速度。

Media Speed Running

适配器的当前连接速度。

Jumbo Frames 指定是否启用 jumbo 帧。

协议统计信息

可以使用 netstat –s 命令显示所有协议的统计信息,或者使用 netstat –p 命令显示特定协议的统计信息,如下面的示例 所示。所显示的每部分数据与对应的协议相关。

示例 显示协议统计信息

# netstat -s

icmp:

5286 calls to icmp_error

0 errors not generated because old message was icmp

Output histogram:

echo reply: 161

destination unreachable: 5286

0 messages with bad code fields

0 messages < minimum length

0 bad checksums

0 messages with bad length

Input histogram:

echo reply: 13340245

destination unreachable: 5277

echo: 161

161 message responses generated

igmp:

34 messages received

0 messages received with too few bytes

0 messages received with bad checksum

0 membership queries received

0 membership queries received with invalid field(s)

34 membership reports received

0 membership reports received with invalid field(s)

34 membership reports received for groups to which we belong

4 membership reports sent

tcp:

83954 packets sent

75656 data packets (27181497 bytes)

558 data packets (945603 bytes) retransmitted

6237 ack-only packets (4732 delayed)

0 URG only packets

.

.

.

(省略的行)

.

.

.

udp:

178123 datagrams received

0 incomplete headers

0 bad data length fields

0 bad checksums

5287 dropped due to no socket

154419 broadcast/multicast datagrams dropped due to no socket

0 socket buffer overflows

18417 delivered

23689 datagrams output

ip:

14076261 total packets received

0 bad header checksums

0 with size smaller than minimum

0 with data size < data length

0 with header length < data size

0 with data length < header length

0 with bad options

0 with incorrect version number

644016 fragments received

.

.

.

(省略的行)

.

.

.

ipv6:

0 total packets received

0 with size smaller than minimum

0 with data size < data length

.

.

.

(省略的行)

.

.

.

icmpv6:

0 calls to icmp6_error

0 errors not generated because old message was icmpv6

Output histogram:

unreachable: 0

packets too big: 0

time exceeded: 0

.

.

.

(省略的行)

.

.

.

# netstat -p ip

ip:

14077033 total packets received

0 bad header checksums

0 with size smaller than minimum

0 with data size < data length

0 with header length < data size

0 with data length < header length

0 with bad options

0 with incorrect version number

644016 fragments received

0 fragments dropped (dup or out of space)

0 fragments dropped after timeout

181998 packets reassembled ok

13609226 packets for this host

.

.

.

(省略的行)

 

套接字

要显示有关系统上使用的套接字的信息,可以使用 netstat –a 命令,如下面的示例所示。

您可以查找有用的信息,例如使用的协议、IP 地址或套接字状态。

示例 使用 netstat -a 命令

活动的 Internet 连接(包括服务器)

Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)

tcp4       0      0  *.daytime              *.*                    LISTEN

tcp        0      0  *.ftp                  *.*                    LISTEN

tcp        0      0  *.telnet               *.*                    LISTEN

tcp4       0      0  *.smtp                 *.*                    LISTEN

tcp4       0      0  *.time                 *.*                    LISTEN

tcp4       0      0  *.sunrpc               *.*                    LISTEN

tcp4       0      0  *.smux                 *.*                    LISTEN

tcp        0      0  *.exec                 *.*                    LISTEN

tcp        0      0  *.login                *.*                    LISTEN

tcp        0      0  *.shell                *.*                    LISTEN

tcp4       0      0  *.printer              *.*                    LISTEN

tcp4       0      0  *.rmc                  *.*                    LISTEN

tcp4       0      0  *.sco_prin             *.*                    LISTEN

tcp4       0      0  *.sco_s5_p             *.*                    LISTEN

tcp4       0      0  *.filenet-             *.*                    LISTEN

tcp4       0      0  *.filenet-             *.*                    LISTEN

tcp4       0      0  *.filenet-             *.*                    LISTEN

tcp4       0      0  *.wsmserve             *.*                    LISTEN

tcp4       0      0  server2.itsc.aus.33060 kcyb72b.x11            ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  server2.itsc.aus.filen server2.itsc.aus.filen ESTABLISHED

tcp4       0      0  localhost.smux         localhost.filenet-     ESTABLISHED

tcp4       0      0  localhost.filenet-     localhost.smux         ESTABLISHED

tcp4       0      0  server2.itsc.aus.telne tlm06.itsc.austi.carda ESTABLISHED

tcp4       0     17  server2.itsc.aus.telne tlm06.itsc.austi.mini- ESTABLISHED

tcp4       0      0  server2.itsc.aus.telne kcyb72b.discp-cl       ESTABLISHED

tcp4       0      0  server2.itsc.aus.telne kcyb72b.smart-di       ESTABLISHED

tcp4       0      0  server2.itsc.aus.telne esmsrv.itsc.aust.ms-cl ESTABLISHED

udp4       0      0  *.daytime              *.*

udp4       0      0  *.time                 *.*

udp4       0      0  *.sunrpc               *.*

udp4       0      0  *.snmp                 *.*

udp4       0      0  *.syslog               *.*

udp4       0      0  *.ntalk                *.*

udp4       0      0  *.rmc                  *.*

udp4       0      0  *.xmquery              *.*

udp4       0      0  *.filenet-             *.*

udp4       0      0  *.32798                *.*

udp4       0      0  *.32801                *.*

Active UNIX domain sockets
SADR/PCB         Type   Recv-Q Send-Q      Inode            Conn             Refs           Nextref      Addr
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
f1000d0001d77400 stream      0      0                0 f1000d000198be80                0                0
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
f1000d0002021b00
f1000d00002dc000 dgram       0      0 f1000c00211673f8                0                0                0 /dev/.SRC-unix/SRCvFql7a
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
f1000d0000476980

 

要显示有关系统上打开的套接字的详细信息,可以使用 netstat –an 命令。

 



回页首


 

iostat 命令

iostat 命令用于报告 CPU 统计信息、异步输入/输出 (AIO) 统计信息,以及整个系统、适配器、TTY 设备、磁盘和 CD-ROM 的输入/输出统计信息。

我们建议在下列情况下使用 iostat 命令:

    • 系统功能正常,并且您希望建立系统性能的基准。
    • 系统遇到了性能问题。
    • 对磁盘子系统做出了硬件或软件更改。
    • 更改了卷组、逻辑卷和文件系统的属性。
    • 对操作系统做出了更改。
    • 对应用程序做出了更改。

使用 iostat 确定磁盘利用率

可以使用 iostat 命令确定某个物理磁盘是否已成为了性能瓶颈。iostat 命令提供的有关磁盘活动的信息包括:

% tm_act 物理磁盘的活动时间百分比。

KBPS 该磁盘上传输(读或写)的数据总量。

tps 该物理磁盘每秒的 IO 传输请求数量。

Kb_read 从磁盘读取的数据总量。

Kb_wrtn 写到磁盘的数据总量。

如果 %tm_act 字段显示磁盘非常忙,并且 Kbps 字段显示持续的大量数据传输,您应该考虑在多个磁盘驱动器之间分散数据。此命令可以支持动态配置更改。如果检测到配置更改,则 iostat 报告将发出一个警告,并刷新最新的系统配置。

在下面的示例中,我们使用 iostat -T -d 1 60 命令监视从 11:40:21 开始的 60 秒内的磁盘活动。

示例 使用 iostat 命令检查磁盘瓶颈

# iostat -T -d  1 60

System configuration:lcpu=4 drives=9 paths=8 vdisks=0

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn  time

hdisk2         100.0     10740.0     2685.0      10740         0  11:40:21

hdisk7           0.0       0.0       0.0          0         0  11:40:21

hdisk3           0.0       0.0       0.0          0         0  11:40:21

hdisk4           0.0       0.0       0.0          0         0  11:40:21

hdisk0          97.0     10960.0     2740.0      10960         0  11:40:21

hdisk1          96.0     10716.0     2679.0      10716         0  11:40:21

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn  time

hdisk5           0.0       0.0       0.0          0         0  11:40:21

hdisk6           0.0       0.0       0.0          0         0  11:40:21

cd0              0.0       0.0       0.0          0         0  11:40:21

hdisk2         100.0     10076.0     2520.0      10076         0  11:40:22

hdisk7           0.0       0.0       0.0          0         0  11:40:22

hdisk3           0.0       0.0       0.0          0         0  11:40:22

hdisk4           0.0       0.0       0.0          0         0  11:40:22

hdisk0          99.0     10352.0     2588.0      10352         0  11:40:22

hdisk1          99.0     10108.0     2527.0      10108         0  11:40:22

hdisk5           0.0       0.0       0.0          0         0  11:40:22

hdisk6           0.0       0.0       0.0          0         0  11:40:22

cd0              0.0       0.0       0.0          0         0  11:40:22

hdisk2         99.0     10928.0     2732.0      10928         0  11:40:23

hdisk7           0.0       0.0       0.0          0         0  11:40:23

hdisk3           0.0       0.0       0.0          0         0  11:40:23

hdisk4           0.0       0.0       0.0          0         0  11:40:23

hdisk0          98.0     11112.0     2778.0      11112         0  11:40:23

hdisk1          99.0     10956.0     2738.0      10956         0  11:40:23

hdisk5           0.0       0.0       0.0          0         0  11:40:23

hdisk6           0.0       0.0       0.0          0         0  11:40:23

cd0              0.0       0.0       0.0          0         0  11:40:23

hdisk2         97.0     10560.0     2640.0      10560         0  11:40:24

hdisk7           0.0       0.0       0.0          0         0  11:40:24

hdisk3           0.0       0.0       0.0          0         0  11:40:24

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn  time

hdisk4           0.0       0.0       0.0          0         0  11:40:24

hdisk0          100.0     10208.0     2552.0      10208         0  11:40:24

hdisk1          98.0     10600.0     2651.0      10600         0  11:40:24

hdisk5           0.0       0.0       0.0          0         0  11:40:24

hdisk6           0.0       0.0       0.0          0         0  11:40:24

cd0              0.0       0.0       0.0          0         0  11:40:24

.

.

.

(省略的行)

.

 

.

.

如果希望显示有关某个特定磁盘的更详细统计信息,可以使用 iostat –D 命令。在下面的示例中,我们在磁盘 hdisk0 上人为创建磁盘活动,然后每隔两秒创建十个磁盘性能报告。

示例 详细的磁盘活动监视

# dd if=/dev/hdisk0 of=/dev/null &

[1]     409844

# iostat -D hdisk0 2 10

System configuration:lcpu=4 drives=7 paths=6 vdisks=0

hdisk0         xfer:%tm_act      bps      tps      bread      bwrtn

72.5     15.0M   3673.5       15.0M       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                       3673.5      0.2      0.2      1.3           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                         0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                         0.0      0.0      0.0      0.0        0.2           0

--------------------------------------------------------------------------------

hdisk0         xfer:%tm_act      bps      tps      bread      bwrtn

78.5     15.1M   3680.5       15.1M       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                       3681.0      0.2      0.2      5.6           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

         9223372036854775808.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                         0.0      0.0      0.0      0.0        0.2           0

--------------------------------------------------------------------------------

hdisk0         xfer:%tm_act      bps      tps      bread      bwrtn

77.0     15.1M   3688.0       15.1M       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                       3688.0      0.2      0.2      5.6           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                         0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                         0.0      0.0      0.0      0.0        0.2           0

--------------------------------------------------------------------------------

hdisk0         xfer:%tm_act      bps      tps      bread      bwrtn

73.0     14.9M   3646.0       14.9M       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                       3646.0      0.2      0.2     11.3           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                         0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                         0.0      0.0      0.0      0.0        0.2           0

-------------------------------------------------------------------------------

.

.

.

(省略的行)

.

 

.

.

如果您在使用启用了多路经输入-输出 (MPIO) 的设备,可以使用 iostat –m 命令显示对应于每个路径的统计信息。

使用 iostat 确定 CPU 利用率

可以使用 iostat 命令监视并提供有关 CPU 活动的统计信息,这些统计信息对于确定潜在的 CPU 问题会非常有用。iostat 提供的有关 CPU 活动的信息包括:

tin 系统从所有 TTY 读取的字符总数。

tout 系统写到所有 TTY 的字符总数。

%user 在用户模式下执行时的 CPU 利用率百分比。

% sys 在内核模式下执行时的 CPU 利用率百分比。

%idle CPU 处于空闲并且系统没有未完成的磁盘 I/O 请求情况下的时间百分比。

% iowait CPU 在系统有未完成的磁盘 I/O 请求期间的空闲时间百分比。

%physc 已使用的物理处理器百分比,仅当分区使用共享处理器运行时才显示。

% entc 已使用的有权使用的容量百分比,仅当分区使用共享处理器运行时才显示。

在下面的示例中,我们使用 iostat -T -t 1 60 命令监视从 11:40:21 开始的 60 秒内的 CPU 活动。

示例 使用 iostat 检查 CPU 活动

# iostat -T -t 1 60

System configuration:lcpu=4                              

tty:tin         tout    avg-cpu:% user % sys % idle % iowait  time

2.0            936.0      17.1    32.8    6.9     43.2    11:40:21

5.0           1532.0      16.6    31.3    6.8     45.3    11:40:22

0.0           746.0       17.3    32.6    7.9     42.2    11:40:23

0.0           745.0       16.8    31.9    7.2     44.1    11:40:24

.

.

.

(省略的行)

 

.

.

.

使用 iostat 确定 AIO 利用率

可以使用 iostat –A 命令(获得异步 I/O (AIO) 统计信息,其中包括:

avgc 指定间隔期间平均每秒的全局非快速路径 AIO 请求计数。

avgc 指定间隔期间平均每秒的全局 AIO 快速路径请求计数

maxg 自从上次获取此值以来的最大全局非快速路径 AIO 请求计数

maxf 自从上次获取此值以来的最大快速路径请求计数

maxr 允许的最大 AIO 请求数量。这是 AIO 设备的 maxreqs 属性。

示例使用 iostat -A 命令监视 AIO 活动

# dd if=/dev/hdisk0 of=/dev/null &

[1]     311456

# dd if=/dev/hdisk1 of=/dev/null &

[2]     274580

# dd if=/dev/hdisk4 of=/dev/null &

[3]     315546

# dd if=/dev/hdisk5 of=/dev/null &

[4]     323742

# iostat -A 1 10

System configuration:lcpu=4 drives=9 paths=8 vdisks=0

aio:avgc avfc maxg maif maxr avg-cpu:% user % sys % idle % iowait

        0    0    0    0 4096            23.9  42.9   10.8     22.5

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk5          63.2     11128.3     2781.1      11796         0

hdisk2           0.0       0.0       0.0          0         0

hdisk4          58.5     11064.2     2765.1      11728         0

hdisk3           0.0       0.0       0.0          0         0

hdisk7           0.0       0.0       0.0          0         0

hdisk1          61.3     10660.4     2666.0      11300         0

hdisk0          51.9     10920.8     2731.1      11576         0

hdisk6           0.0       0.0       0.0          0         0

cd0              0.0       0.0       0.0          0         0

aio:avgc avfc maxg maif maxr avg-cpu:% user % sys % idle % iowait

        0    0    0    0 4096            23.8  42.7   11.5     22.0

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk5          59.0     11636.0     2910.0      11636         0

hdisk2           0.0       0.0       0.0          0         0

hdisk4          68.0     11588.0     2897.0      11588         0

hdisk3           0.0       0.0       0.0          0         0

hdisk7           0.0       0.0       0.0          0         0

hdisk1          54.0     11448.0     2862.0      11448         0

hdisk0          67.0     11564.0     2891.0      11564         0

hdisk6           0.0       0.0       0.0          0         0

cd0              0.0       0.0       0.0          0         0

aio:avgc avfc maxg maif maxr avg-cpu:% user % sys % idle % iowait

        0    0    0    0 4096            23.6  42.8   11.1     22.5

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk5          71.0     11724.0     2930.0      11724         0

hdisk2           0.0       0.0       0.0          0         0

hdisk4          68.0     11616.0     2904.0      11616         0

hdisk3           0.0       0.0       0.0          0         0

hdisk7           0.0       0.0       0.0          0         0

hdisk1          68.0     11212.0     2803.0      11212         0

hdisk0          66.0     11352.0     2838.0      11352         0

hdisk6           0.0       0.0       0.0          0         0

cd0              0.0       0.0       0.0          0         0

.

.

.

(省略的行)

 

.

.

.

如果希望显示所有已安装文件系统和关联的队列编号以及其请求计数的列表,可以使用 iostat –AQ 命令,如示例所示。

示例使用 iostat - AQ 命令

# iostat -AQ

System configuration:lcpu=4                              

aio:avgc avfc maxg maif maxr avg-cpu:% user % sys % idle % iowait

        0    0    0    0 4096            16.3  29.5   38.6     15.6

Queue#         Count          Filesystems

129            0              /

130            0              /usr

132            0              /var

133            0              /tmp

136            0              /home

137            0              /proc

138            0              /opt

 

使用 iostat 确定适配器利用率

可以使用 iostat 命令确定适配器活动。iostat 命令提供的有关适配器活动的信息包括:

KBPS 传输到该适配器(读或写)的总数据量。

tps 该适配器每秒的 IO 传输请求数量。

Kb_read 从适配器读取的数据总量。

Kb_wrtn 写到适配器的数据总量。

对于虚拟适配器,此命令还将显示:

KBPS 传输到该适配器(读或写)的总数据量。

tps 该适配器每秒的 IO 传输请求数量。

bkread 每秒从承载服务器发送到该适配器的总块数。

bkwrtn 每秒从该适配器写到承载服务器的总块数。

partition-id 为适配器发送的请求提供服务的承载服务器的分区 ID。

在下面的示例中,我们在 hdisk0、hdisk1、hdisk4 和 hdisk5 上人为创建活动,然后每秒创建十个适配器性能报告。

示例中使用 iostat 命令检查适配器性能

# dd if=/dev/hdisk0 of=/dev/null &

[2]     380936

# dd if=/dev/hdisk1 of=/dev/null &

[3]     344184

# dd if=/dev/hdisk4 of=/dev/null &

[4]     405516

# dd if=/dev/hdisk5 of=/dev/null &

[5]     430240

# iostat -a 1 10|more

System configuration:lcpu=4 drives=7 paths=6 vdisks=0

tty:tin         tout    avg-cpu:% user % sys % idle % iowait

          3.0         73.0               22.7  39.9    9.7     27.7

Adapter:Kbps      tps    Kb_read   Kb_wrtn

sisioa1                  22224.0     5556.0      22224         0

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk5          58.0     11096.0     2774.0      11096         0

hdisk4          62.0     11128.0     2782.0      11128         0

Adapter:Kbps      tps    Kb_read   Kb_wrtn

sisioa0                  22256.0     5564.0      22256         0

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk0          94.0     11344.0     2837.0      11344         0

hdisk1          62.0     10912.0     2727.0      10912         0

hdisk2           0.0       0.0       0.0          0         0

hdisk3           0.0       0.0       0.0          0         0

Adapter:Kbps      tps    Kb_read   Kb_wrtn

ide0                       0.0       0.0          0         0

Disks:% tm_act     Kbps      tps    Kb_read   Kb_wrtn

cd0              0.0       0.0       0.0          0         0

tty:tin         tout    avg-cpu:% user % sys % idle % iowait

          0.0        1306.0               22.6  39.9    8.9     28.5

 

如果希望显示有关适配器活动的更多详细信息,可以使用 iostat -a –D 命令,如示例所示。

示例 详细的适配器活动监视

# iostat -D -a|more

System configuration:lcpu=4 drives=7 paths=6 vdisks=0

Adapter:

sisioa1              xfer:bps      tps    bread      bwrtn

61.6K    15.0     61.6K       0.0

Disks:

hdisk5               xfer:%tm_act      bps      tps      bread      bwrtn

0.2     30.5K     7.5       30.5K       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                               7.5      0.2      0.2     13.3           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                               0.0      0.0      0.8      0.0        0.0           0

hdisk4               xfer:%tm_act      bps      tps      bread      bwrtn

0.2     31.0K     7.6       31.0K       0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                               7.6      0.2      0.2     11.4           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                               0.0      0.0      1.2      0.0        0.0           0

Adapter:

sisioa0              xfer:bps      tps    bread      bwrtn

220.4K    53.7     220.0K       409.1

Disks:

hdisk0         xfer:%tm_act      bps      tps      bread      bwrtn

1.1     189.1K     46.2       189.0K       154.5

read:rps  avgserv  minserv  maxserv   timeouts      fails

                              46.1      0.3      0.2     90.0           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      6.9      0.8     25.4           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                               0.0      0.0    232.8      0.0        0.0         679

hdisk1               xfer:%tm_act      bps      tps      bread      bwrtn

0.2     31.3K     7.6       31.0K       254.6

read:rps  avgserv  minserv  maxserv   timeouts      fails

                               7.6      0.2      0.2     17.9           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      7.2      1.1     29.8           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                               0.0      0.0     86.4      0.0        0.0         486

hdisk2               xfer:%tm_act      bps      tps      bread      bwrtn

                               0.0      0.0      0.0        0.0        0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      0.0      0.0      0.0           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      0.0      0.0      0.0           0          0

queue:avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull

                               0.0      0.0      0.0      0.0        0.0           0

hdisk3               xfer:%tm_act      bps      tps      bread      bwrtn

                               0.0      0.0      0.0        0.0        0.0

read:rps  avgserv  minserv  maxserv   timeouts      fails

                               0.0      0.0      0.0      0.0           0          0

write:wps  avgserv  minserv  maxserv   timeouts      fails

 

0.0 0.0 0.0 0.0 0 0

 



回页首


 

proctools 命令

/proc 文件系统提供了一种控制进程的机制。它还提供了对有关当前进程和线程状态信息的访问,不过该信息是二进制格式。/proc 文件系统中每个条目的名称都是与进程 ID 对应的十进制数字。这些条目是子目录,每个条目的所有者由进程的用户 ID 确定。对进程状态的访问是由每个子目录中包含的附加文件提供的。

proctools 命令(/proc 命令)基于某些可用信息提供 ASCII 报告。其中大多数命令接受进程 ID 列表或 /proc/ProcessID 字符串作为输入。因此可以使用 Shell 扩展 /proc/* 指定系统中的所有进程。

每个 proctools 命令从 /proc 中收集指定进程的信息并向用户显示该信息。这些命令从 /proc 中收集的信息是当前进程状态的快照,因此除了已终止的进程外,此信息在任何时刻都会有所不同。proctools 命令包括:

procfiles 报告有关由进程打开的所有文件描述符的信息。

proctree 打印包含特定进程 ID 或用户的进程树。

procsig 列出进程定义的信号操作。

procstack 打印进程中所有线程的十六进制地址和符号名称。

procrun 启动在发生 PR_REQUESTED 事件时停止的进程。

procmap 打印进程的地址空间映射。

procflags 打印指定进程中每个线程的 /proc 跟踪标志、挂起和保持信号以及其他 /proc 状态信息。

proccred 打印进程的凭据(有效、实际、已保存的用户 ID 和组 ID)。

procldd 列出进程加载的对象,包括使用 dlopen() 来显式附加的共享对象。

procwait 等待所有指定的进程终止。

procwdx 打印进程的当前工作目录。

procstop 在发生 PR_REQUESTED 事件时终止进程。

 



回页首


 

procmon 工具

可以在运行 AIX 5L Version 5.3 或更高版本的系统上使用 procmon 工具。procmon 工具允许您查看和管理系统上运行的进程。procmon 工具有一个图形界面并显示一个进程指标表,您可以按所提供的不同字段对那些进程指标进行排序。表中列出的缺省进程数量是 20,但是可以从主菜单的 Table Properties 面板更改此值。只有基于排序指标排在最前面的进程才会显示出来,缺省的排序键是 CPU 消耗。

该进程指标表的缺省刷新速度是五秒,但是通过使用主菜单中的 Table Properties 面板或通过单击 Refresh 按钮,您可以更改刷新速度。

缺省情况下,procmon 工具显示下列信息:

    • 进程已运行的时间长度
    • 进程正在使用的 CPU 资源量
    • 进程是否正受到系统处罚
    • 进程正在使用的内存量
    • 进程所执行的 I/O 次数
    • 进程的优先级和优先值
    • 创建特定进程的人员

您可以选择显示其他指标,筛选所显示的进程,并对进程执行性能命令。

注意: procmon 工具是一个 Performance Workbench 插件,因此只能从 Performance Workbench 框架中启动 procmon 工具。必须通过使用 smitty 工具或 installp 命令来安装 bos.perf.gtools 文件集。然后可以从 /opt/perfwb 目录访问Performance Workbench ,或者从 /opt/perfwb/procmon 目录运行 procmon 脚本。

procmon 工具的全局统计信息区域

全局统计信息区域显示系统正在使用的 CPU 和内存量。通过单击菜单栏中的 Refresh 按钮或通过菜单栏激活自动刷新选项,您可以刷新统计信息数据。图 4 显示了该区域的一个示例窗口。要保存统计信息,您可以将该表导出为下列任何文件格式:

    • XML
    • HTML
    • CSV


图 4 procmon 工具的全局统计信息区域
 

procmon 工具的进程表

进程表是 procmon 工具的主要组成部分。进程表显示正在系统上运行的各个进程,并按照用户配置进行排序和筛选。表中列出的进程数量的缺省值是 20,但是可以从主菜单的 Table Properties 面板更改此值。

列标题中的黄色箭头键指示该进程表的排序键。该箭头要么向上要么向下,具体分别取决于排序顺序是升序还是降序。通过单击任何列标题可以更改排序键。图 5 显示了进程表的一个示例窗口。

您可以自定义该进程表,修改有关各个进程的信息,并对所显示的进程运行命令。

图 5 procmon 工具的进程表


图 5 procmon 工具的全局统计信息区域
 

缺省情况下,procmon 工具显示表 5 中列出的指标。

表 5 procmon 工具的进程表上列出的缺省指标

指标 描述
PID 进程标识符
CPUPER 自从上次刷新以来每个进程使用的 CPU 百分比
PRM 实际内存使用百分比
ELOGIN 进程用户的有效登录
COMMAND 所启动进程的短名称

 

您可以选择显示其他指标。表 6 列出了完整的指标列表。

表6 可用于在进程表上显示的所有指标列表

指标 描述
PPID 父进程标识符
NICE 进程的优先值
DRSS 数据驻留集大小
TRSS 文本驻留集大小
STARTTIME 命令的启动时间
PRI 进程的优先级
EUID 有效用户标识符
RUID 实际用户标识符
EGID 有效组标识符
RGID 实际组标识符
THCOUNT 使用的线程数量
CLASSID 属于该 WLM 进程的类的标识符
CLASSNAME 属于该 WLM 进程的类的名称
TOTDISKIO 该进程的磁盘 I/O
NVCSW N 自愿上下文切换
NIVCSW N 非自愿上下文切换
MINFLT 次要缺页
MAJFLT 主要缺页
INBLK 输入块
OUBLK 输出块
MSGSEND 发送的消息
MSGRECV 接收的消息
EGROUP 有效的组名称
RGROUP 实际组名称

 

可以使用表属性或首选参数来显示您感兴趣的指标。如果选择更改表属性,新的配置值仅针对当前会话而设置。如果更改首选参数,则新的配置值将针对 procmon 工具的下一个会话而设置。

进程表中列出的值有两种类型:

    • 实际值
    • 增量值

实际值是从内核中检索并显示在进程表中的。实际值的示例是 PID、PPID 或 TTY。

增量值是从上次存储的度量计算而来的值。增量值的示例是每个进程的 CPU 百分比,这是使用两次刷新间隔之间测量的值计算得出的。

在进程表下面有另一个表,其中显示了进程表中每一列的值之和。例如,此表可能清楚地显示了消耗 CPU 最多的前 20 个进程所使用的总 CPU 百分比。

通过单击菜单栏中的 Refresh 按钮或通过菜单栏激活自动刷新选项,您可以刷新该数据。

对进程执行命令

可以对您在进程表中选定的进程执行下列命令:

    • svmon
    • renice
    • kill
    • 下列 proctools 命令:
    • procfiles
    • proctree
    • procsig
    • procstack
    • procrun
    • procmap
    • procflags
    • proccred
    • procldd

要对一个或多个进程运行上述任何命令,可以在进程表中选择命令,单击鼠标右键,选择 Detailed information 或 Modify,然后选择希望运行的命令。一个新窗口将打开,其中显示了该命令在运行时的命令输出。可以通过单击 STOP 按钮中断命令。

还可以从命令行调用该命令,例如:

要显示当前的 Shell 使用的进程树,可以使用 proctree 命令:

# ps                                     

PID    TTY  TIME CMD                 

409744  pts/5  0:00 -ksh                

479424  pts/5  0:00 ps                  

# proctree 409744                        

155780    /usr/sbin/srcmstr              

204930    /usr/sbin/inetd             

471292    telnetd -a               

409744    -ksh                  

426154    proctree 409744    

# 

 

要显示某个正在运行的 find 进程所使用的文件描述符,可以使用以下命令:

# tty      

/dev/pts/5 

# find / -type f > /tmp/files 2>/tmp/errors &  

[1]     405622 

# procfiles -n 405622                                     

405622 : find / -type f                                   

Current rlimit:2000 file descriptors                   

0: S_IFCHR mode:00 dev:10,4 ino:1182 uid:0 gid:0 rdev:3

O_RDWR  name:/dev/pts/5                             

1: S_IFREG mode:0200 dev:10,7 ino:21 uid:0 gid:0 rdev:0

O_WRONLY size:648723  name:/tmp/files               

2: S_IFREG mode:0200 dev:10,7 ino:25 uid:0 gid:0 rdev:0

O_WRONLY size:0  name:/tmp/errors                   

3: S_IFREG mode:0444 dev:10,5 ino:11305 uid:0 gid:0 rde

O_RDONLY size:2208  name:/usr/lib/nls/msg/en_US/find

.

.

.

(省略的行)

.

.

#

 

标准输入(stdin,文件描述符 0)被分配到当前终端 (/dev/pts/5),标准输出(stdout,文件描述符 1)被分配到文件 /tmp/files,标准错误(stderr,文件描述符 2)被分配到文件 /tmp/errors。在显示所有已使用的文件描述符之后,将返回命令提示符。

要等待某个进程完成并显示状态,可以使用 procwait 命令:

# find / -type f > /dev/null 2>&1 &                            

[1]     102614                                                                  

# procwait -v 102614 

102614 : terminated, exit status 0 

[1] +  Done                    find / -type f > /dev/null 2>&1 

&                                                                               

# 

Tags:AIX53 性能优化 系统监控
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明