netpmon 命令

用途

监视网络 I/O 和与网络相关的 CPU 使用的活动并报告它们的统计信息。

语法

netpmon [ -o File ] [ -d ] [ -T n ] [ -P ] [ -t ] [ -v ] [-r PURR] [ -O ReportType ... ] [ -i Trace_File -n Gensyms_File ] [ -@ [WparList | ALL]]

描述

netpmon 命令监视系统事件的跟踪,并报告网络活动和受监视时间间隔内的性能。 缺省情况下,当一个或多个应用程序或系统命令在执行并受监视时,netpmon 命令在后台运行。 netpmon 命令自动地启动并监视与网络相关的系统事件实时跟踪。 缺省情况下,跟踪立即启动;也可选择延缓跟踪直到用户发出 trcon 命令。 当跟踪被 trcstop 命令停止时,netpmon 命令生成全部指定报告并退出。

netpmon 命令也可以离线方式工作,也就是说基于以前生成的跟踪文件工作。 在这种方式下,还需要由 gensyms 命令生成的文件。 跟踪停止后,在同一机器上应立即生成 gensyms 文件。 当以离线方式运行时,netpmon 命令不能标识套接字所使用的协议,这限制了套接字报告中可用的详细信息级别。

netpmon 命令报告下列系统活动:

CPU 使用率
netpmon 命令监视所有的线程和中断处理程序的 CPU 使用情况。 它估算与网络相关的活动导致的 CPU 使用量。
网络设备驱动程序 I/O
netpmon 命令通过令牌环和光纤分布式数据接口 (FDDI) 网络设备驱动程序来监视 I/O 操作。 在传输 I/O 的情况下,命令也监视利用情况、队列长度和目标主机。 对于接收标识,命令也监视在 demux 层的时间。
因特网套接字调用
netpmon 命令监视所有的因特网套接字上的 sendrecvsendtorecvfromreadwrite 子例程。 它针对下列各种协议类型,报告了基于每个处理的统计信息:
  • Internet Control Message Protocol (ICMP)
  • Transmission Control Protocol (TCP)
  • User Datagram Protocol (UDP)
NFS I/O
netpmon 命令监视在客户机网络文件系统 (NFS) 文件上的 readwrite 子例程,客户机 NFS 远程过程调用 (RPC) 请求和 NFS 服务器的读或写请求。 该命令为每个服务器报告了基于每个进程或每个可选线程以及基于每个文件的子例程统计信息。 netpmon 命令为每个服务器报告客户机 RFC 统计信息,并为每个客户机报告服务器读和写统计信息。

上述报告类型的任何组合可由命令行标志指定。 缺省情况下,将生成全部报告。

注: netpmon 命令生成的报告可能很长。 因此,-o 标志通常用来将报告写入一个输出文件。 netpmon 命令使用系统跟踪工具获取性能数据。 跟踪工具只支持一个输出流。 因此,只有一个 netpmontrace 进程在某一时间内是活动的进程。 如果另一个 netpmontrace 进程已经运行,那么 netpmon 命令用以下消息响应:
/dev/systrace: Device busy

当监视网络密集的应用程序时, netpmon 命令可能无法以和实时生成跟踪事件一样快的速度来处理跟踪事件。 当这种情况发生时,错误消息:

Trace kernel buffers overflowed, N missed entries

显示标准错误,指出在跟踪缓冲区已满时丢失的跟踪事件数。 netpmon 命令继续监视网络活动,但是报告准确性却降低了不少。 避免溢出的一个方法是使用 -T 标志来增加跟踪缓冲区的大小,以便可以在溢出前容纳更多的突发跟踪事件。 另一个避免发生溢出问题的方法是以离线方式运行 netpmon。

当在内存有限的环境中运行(此时对内存的需求超出内存供给量)时, -P 标志可用于锁住内存中的实时 netpmon 进程的文本和数据页,使数据页不会被交换出内存。 如果不使用 -P 标志,那么允许 netpmon 进程被交换出内存,以至于 netpmon 命令的进度可能被延迟而使它不能足够快地处理跟踪事件以防止跟踪缓冲区溢出。

如果 /unix 文件和正在运行的内核不同,那么内核地址是不正确的,会导致 netpmon 命令退出。

标志

描述
-d 启动 netpmon 命令,但延迟跟踪直到用户执行 trcon 命令。 缺省情况下,跟踪立即启动。
-i 跟踪文件 从使用 trace 命令而不是实时系统生成的文件 Trace_File 中读取跟踪记录。 跟踪文件首先必须在原始格式下使用 trcpt -r 命令重写。 本标志必须与 -n 标志一起使用。
-n 文件 gensyms 命令生成的文件 Gensyms_File 中读取必要的映射信息。 在使用 -i 标志时,必须使用本标志。
-o 文件 将报告写入指定的 File,而不是写到标准输出。
-O ReportType ... 生成指定报表类型。 有效的报告类型值为:
cpu
CPU 使用情况
dd
网络设备驱动程序 I/O。 此报告在联机方式的工作负载分区 (WPAR) 中不可用,或者在带有 "-@ WparList" 标志的全局 WPAR 中不可用。
so
因特网套接字调用 I/O
NFS
NFS I/O(任意版本)
nfs2
NFS V2 I/O
nfs3
NFS V3 I/O
nfs4
NFS V4 I/O
all
生成全部报告。 这是不使用 -@ 标志以全局 WPAR 运行 netpmon 命令时的缺省值。
-P 锁定内存中的监视进程。 本标志致使 netpmon 文本和数据页在监视周期内在内存中被锁定。 此标志可以用来确保实时 netpmon 进程在内存约束的环境中运行时不会耗尽内存空间。
-r PURR 在百分比和 CPU 时间计算中使用 PURR 时间而不是 TimeBase。 经过时间的计算不受影响。
-t 基于每个线程显示 CPU 报告。
-T n 设置内核跟踪缓冲区大小为 n 字节。 缺省大小为 64000 字节。 可增加缓冲区大小以便容纳更多的突发事件(如果有突发事件)。 (典型的事件记录大小约为 30 字节。)

注意:内核中的跟踪驱动程序使用双缓冲区,因此实际上分配的是大小为 n 字节的两个缓冲区。 这些缓冲区在内存中被锁住,因而它们无法进行页面调度。

-v 在报告中显示更多信息。 在报告中将包含所有进程和所有被访问的远程文件而不是只包含 20 个最活跃的进程和文件。
- @ [ WparList|ALL ] 指定报告受限于作为参数传递的 WPAR 列表。

报告

报告由 netpmon 命令生成并以报头开始,它标识日期,机器标识和监视周期长度(以秒计)。 接下来紧跟的是一系列的所有指定报告类型的总结和详细报告。

CPU 使用情况报告

处理 CPU 使用情况统计信息: 每行描述与一个进程有关的 CPU 使用情况。 除非指定详细选项,否则只有 20 个最活跃的进程被列出。 在报告的底端,总计了所有进程的 CPU 使用情况,并报告 CPU 空闲时间。

Process
进程名称
PID
进程标识号
CPU Time
此进程使用的 CPU 时间总量
CPU %
该进程的 CPU 使用时间占总时间的百分比
Network CPU %
进程花费在执行与网络相关的代码上的时间占总时间的百分比
Thread CPU Usage Statistics
如果使用 -t 标志,上述每个进程行后将跟着显示该进程拥有的每个线程的 CPU 使用情况描述行。 这些行中的字段与该进程的那些字段相同,名称字段除外。 (线程未命名。)

一级中断处理程序使用情况统计信息: 每行描述与一级中断处理程序 (FLIH) 相关的 CPU 使用情况。 在报告的底端,总计了所有 FLIH 的 CPU 使用情况。

FLIH
一级中断处理程序描述
CPU Time
该 FLIH 使用的 CPU 时间总量
CPU %
此中断处理程序的 CPU 使用时间占总时间的百分比
Network CPU %
此中断处理程序执行与网络相关的事件的时间占总时间的百分比

二级中断处理程序使用情况统计信息: 每行描述与二级中断处理程序 (SLIH) 相关的 CPU 使用情况。 在报告的底端,总计了所有 SILH 的 CPU 使用情况。

SLIH
二级中断处理程序描述
CPU Time
此 SLIH 使用的 CPU 时间总量
CPU %
此中断处理程序的 CPU 使用时间占总时间的百分比
Network CPU %
此中断处理程序执行与网络相关的事件的时间占总时间的百分比

网络设备驱动程序报告摘要

网络设备驱动程序统计信息(按设备): 每行描述与网络设备有关的统计信息。

Device
与设备有关的特殊文件的路径名
Xmit Pkts/s
通过该设备每秒发送的数据包
Xmit Bytes/s
通过该设备每秒发送的字节
Xmit Util
设备忙的时间,占总时间的百分比
Xmit Qlen
平均一段时间内,正在等待以通过该设备发送的请求数,包含当前正被发送的任何事务。
Recv Pkts/s
通过该设备每秒接收的数据包
Recv Bytes/s
通过该设备每秒接收的字节
Recv Demux
demux 层所用时间,占总时间的百分比

网络设备驱动程序传输统计信息(按目标主机): 每行描述在设备驱动程序级上与特定目标主机有关的传输流量。

主机在同一子网上时,将显示目标主机名。 主机在不同子网上时,目标主机可以是由 ARP 协议解析的网桥、路由器或网关。

Host
目标主机名。 * (星号)用于无法确定其主机名的传输。
Pkts/s
每秒传输到此主机的数据包数
Xmit Bytes/s
每秒传输到此主机的字节数

因特网套接字报告摘要

  • 联机方式每个因特网协议的套接字调用统计信息(按进程):每行描述与特定进程有关的该协议类型的套接字上的 read/write 子例程活动数目。 除非指定详细选项,否则只列出顶部的 20 个进程。 在报告的底端,总计了该协议的所有套接字调用。
  • 离线方式每个进程的套接字调用统计信息:每行描述与特定进程有关的套接字上的 read/write 子例程活动数目。 除非指定详细选项,否则只列出顶部的 20 个进程。 在报告的底端,总计了所有套接字调用。
Process
进程名称
PID
进程标识号
Read Calls/s or Read Ops/s
此进程在此类型的套接字上每秒执行的 readrecvrecvfrom 子例程数
Read Bytes/s
以上调用每秒所请求的字节数
Write Calls/s or Write Ops/s
由该类型套接字上的该进程每秒生成的 writesend sendto 子例程数目。
Write Bytes/s
此进程每秒写入该协议类型套接字的字节数

NFS 报告摘要

每个服务器的 NFS 客户机统计信息(按文件):每行描述与从该服务器远程安装的文件有关的 read/write 子例程活动数目。 除非指定详细选项,否则只列出前 20 个进程。 在报告的底端,总计了该服务器上的全部文件调用。

File
简单文件名
Read Calls/s or Read Ops/s
该文件上的每秒 read 子例程数目
Read Bytes/s
以上调用每秒所请求的字节数
Write Calls/s or Write Ops/s
该文件上的每秒 write 子例程数目
Write Bytes/s
每秒写入该文件的字节数

NFS 客户机 RPC 统计信息(按服务器):每行描述由该客户机对于特定 NFS 服务器的 NFS 远程过程调用的数目。 在报告的底端,总计了所有服务器调用。

Server
服务器主机名。 * (星号)用于无法确定其主机名的 RPC 调用。
Calls/s or Ops/s
每秒所产生的对该服务器的 NFS RPC 调用数目。

NFS 客户机统计信息(按进程):每行描述与特定进程有关的 NFS read/write 子例程活动数目。 除非指定详细选项,否则只列出顶部的 20 个进程。 在报告的底端,总计了所有进程的调用。

Process
进程名称
PID
进程标识号
Read Calls/s or Read Ops/s
由该进程每秒生成的 NFS read 子例程数目
Read Bytes/s
以上调用每秒所请求的字节数
Write Calls/s or Write Ops/s
由该进程每秒生成的 NFS write 子例程数目
Write Bytes/s
由该进程每秒写入 NFS 安装文件的字节数

NFS 服务器统计信息(按客户机):每行描述由该服务器为特定客户机处理的 NFS 活动数目。 在报告的底端,总计了所有客户机的调用。

Client
客户机主机名。
Read Calls/s or Read Ops/s
每秒该客户机处理的远程读取请求数目
Read Bytes/s
每秒由该客户机的读取调用所请求的字节数
Write Calls/s or Write Ops/s
每秒该客户机处理的远程写请求数目
Write Bytes/s
由该客户机每秒写入的字节数
Other Calls/s or Ops/s
每秒该客户机处理的其他远程请求数目

详细报告

生成任意指定的报告类型的详细报告。 对于这些报告类型,将对大多数摘要报告生成详细报告。 详细报告包含了摘要报告中的每一项以及与该项有关的每一类型事务的统计信息。

事务统计数据包含该类型的事务计数,接着是响应时间和大小分布数据(适用处)。 分布数据包含平均值、最大值和最小值,以及标准偏差。 大约三分之二的值介于average - standard deviationaverage + standard deviation. 大小以字节为单位报告。 响应时间以毫秒为单位进行汇报。

详细的二级中断处理程序 CPU 使用情况统计信息:

SLIH
二级中断处理程序名称
Count
该类型中断数目
CPU Time (Msec)
处理该类型的中断的 CPU 使用统计信息

详细的网络设备驱动程序统计信息(按设备):

Device
与设备有关的特殊文件的路径名
Recv Packets
通过该设备接收的数据包数目
Recv Sizes (Bytes)
所接收的数据包的大小统计信息
Recv Times (msec)
处理所接收的数据包的响应时间统计信息
Xmit Packets
传输到该主机的数据包数目
Demux Times (msec)
在 demux 层处理所接收的数据包的时间统计信息
Xmit Sizes (Bytes)
传输的数据包的大小统计信息
Xmit Times (Msec)
处理传输的数据包的响应时间统计信息

详细的网络设备驱动程序传输统计信息(按主机):

Host
目标主机名。
Xmit Packets
通过该设备传输的数据包数目
Xmit Sizes (Bytes)
传输的数据包的大小统计信息
Xmit Times (Msec)
处理传输的数据包的响应时间统计信息

每个因特网协议的详细套接字调用统计信息(按进程):(联机方式)每个进程的详细套接字调用统计信息:(离线方式)

Process
进程名称
PID
进程标识号
Reads
此进程在此类型的套接字上执行的 readrecvrecvfromrecvmsg 子例程数
Read Sizes (Bytes)
read 调用的大小统计信息
Read Times (Msec)
read 调用的响应时间统计信息
Writes
由该类型套接字上的该进程生成的 writesendsendto sendmsg 子例程数目。
Write Sizes (Bytes)
write 调用的大小统计信息
Write Times (Msec)
write 调用的响应时间统计信息

每个服务器的详细 NFS 客户机统计信息(按文件):

File
文件路径名
Reads
该文件的 NFS read 子例程数目
Read Sizes (Bytes)
read 调用的大小统计信息
Read Times (Msec)
read 调用的响应时间统计信息
Writes
该文件的 NFS write 子例程数目
Write Sizes (Bytes)
write 调用的大小统计信息
Write Times (Msec)
write 调用的响应时间统计信息

详细的 NFS 客户机 RPC 统计信息(按服务器):

Server
服务器主机名。
Calls
对该服务器生成的 NFS 客户机 RPC 调用数目
Call Times (Msec)
RPV 调用的响应时间统计信息

详细的 NFS 客户机统计信息(按进程):

Process
进程名称
PID
进程标识号
Reads
由该进程所生成的 NFS read 子例程数目
Read Sizes (Bytes)
read 调用的大小统计信息
Read Times (Msec)
read 调用的响应时间统计信息
Writes
由该进程所生成的 NFS write 子例程数目
Write Sizes (Bytes)
write 调用的大小统计信息
Write Times (Msec)
write 调用的响应时间统计信息

详细的 NFS 服务器统计信息(按客户机):

Client
客户机主机名
Reads
从该客户机接收到的 NFS 读取请求数目
Read Sizes (Bytes)
读取请求的大小统计信息
Read Times (Msec)
读取请求的响应时间统计信息
Writes
从该客户机接收到的 NFS 写请求数目
Write Sizes (Bytes)
写请求的大小统计信息
Write Times (Msec)
写请求的响应时间统计信息
Other Calls
从该客户机接收到的其他 NFS 请求数目
Other Times (Msec)
其他请求的响应时间统计信息

示例

  1. 要监视特定应用程序执行期间的网络活动和生成所有报告类型,请输入:
    netpmon
    <run application programs and commands here>
    trcstop

    netpmon 命令自动启动系统跟踪并将自己放入后台。 应用程序和系统命令在这时可以运行。 在发出 trcstop 命令后,所有报告显示在标准输出中。

  2. 生成 CPU 和 NFS 报告类型并将报告写入nmon.out文件,类型:
    netpmon -o nmon.out -O cpu,nfs
    <run application programs and commands here>
    trcstop

    netpmon 命令立即启动系统跟踪。 发出 trcstop 命令后,会将 I/O 活动报告写入nmon.out中。 将只生成 CPU 和 NFS 报告。

  3. 生成所有报告类型并将详细输出写入nmon.out文件,类型:
    netpmon -v -o nmon.out
    <run application programs and commands here>
    trcstop

    在详细输出中,netpmon 命令指出正在执行的启动跟踪的步骤。 摘要和详细报告包含所有文件和进程,而不是仅包含 20 个最活跃的文件和进程。

  4. 要以离线方式使用 netpmon 命令,请输入:
    trace -a
    run application programs and commands here
    trcoff
    gensyms > gen.out
    trcstop
    netpmon -i tracefile -n gen.out -o netpmon.out