级别: 中级 Ken Milberg, UNIX 顾问、技术作家和网站专家, ALDION Consulting Pte Ltd
2007 年 12 月 13 日 这个有关 AIX® 网络的系列文章共分三个部分,重点关注优化网络性能方面的各种挑战。在第一部分中,您将回顾网络配置方面的一些最佳实践,通过充分地利用各种网络工具(如 netstat、netpmon、entstat 和 nmon),您可以利用这些实践对硬件进行高效地监视。您还将研究一些特定的工具,它们可用于查看您的相关接口,以便研究如何配置它们。
关于本系列
这个有关 AIX® 网络的系列文章共分三个部分(请参见参考资料),本文是其中的第 1 部分,提供了有关网络的概述,并介绍了可以帮助您对硬件进行监视的一些工具。第 2 部分将介绍如何使用各种监视实用工具(如 nfsstat 和 nmon)对网络文件系统(Network File System,NFS)进行优化,并且还介绍了如何使用 nfso 进行优化。第 3 部分将向您介绍如何监视网络数据包,以及如何使用 netstat 来完成这项工作。您将了解如何使用 no 实用工具来优化您的网络子系统。这个系列还详细说明了网络 I/O 性能优化方面的各种最佳实践。
引言
当系统管理员了解到发生了网络争用问题的时候,通常想到的第一件事情就是运行 netstat。netstat(相当于您为了获得内存报告而使用的 vmstat 或者 iostat)是获得网络配置情况概述的一种快速粗略的方法。与 vmstat 或者 iostat 不同,该命令的缺省值通常并不会向您提供所需的各种信息。您需要了解 netstat 的正确使用方法,以及在监视您的系统时如何最好地利用它。
相对于 vmstat 和 iostat 而言,netstat 并不是一种真正的监视工具。您可以使用其他一些更合适的工具(本文稍后将对这些工具进行介绍)来帮助监视您的网络子系统。同时,在您真正地开始监视工作之前,您必须全面地了解与网络性能相关的各种组件。这些组件包括您的网络适配器、您的交换机和路由器,以及您在宿主逻辑分区中使用虚拟化的方式。如果您认定的确出现了网络瓶颈,那么要修复这个问题,可能涉及到您所负责的主机之外的范围。如果网络交换机的另一端配置不正确,那么您也无能为力。当然,您也许能够为网络团队指出正确的方向。您还应该仔细地收集有关您的网络的整体信息。您必须真正地了解您的网络,才能够研究出对您的网络设备进行故障排除的方法。在本文中,您将了解一些特定的 AIX 网络跟踪工具,如 netpmon,以及它们如何帮助您隔离瓶颈。
最后,无论您需要优化哪个子系统,您都必须将系统的优化工作看作是一个不断进行的过程。如前所述,监视系统的最佳时机是从系统投入运行时就开始,而不要等到出现任何问题,并且用户开始抱怨系统性能低下时才进行监视。您必须了解网络性能的基准,以便您能够掌握系统正常运行时的情况。最后,在进行更改的时候,请注意每次仅更改一项内容,以便您可以真正地了解这项更改所带来的影响。
网络 I/O 概述
这部分内容从网络与 AIX 之间的关系的角度提供了有关网络的概述,并且介绍了网络的物理特性(设备驱动器和适配器)、AIX 网络栈,以及如何对您的适配器进行相应的更改。
从网络与 AIX 之间的关系的角度了解网络子系统,这并不是一件非常容易的工作。在研究 CPU 和内存瓶颈的时候,从硬件和软件的角度来看,您需要研究的领域要少得多。磁盘 I/O 优化则更加复杂,因为有更多的问题将会影响到性能,特别是在设计和构建系统的过程中。从这个角度来看,优化您的网络实际上可能更类似于优化您的磁盘 I/O,当然这并不足为奇,因为它们都是与 I/O 相关的。下面就让我们开始吧!图 1 描述了 AIX 传输控制协议/网际协议 (TCP/IP) 中的各层。
图 1. AIX TCP/IP 中的各层
您可以清楚地看到,还有更多的内容需要进行网络监视,而不仅仅只是运行 netstat 并查找冲突的情况。从应用程序层到媒体层,有许多方面都需要进行配置、监视和优化。此时,您应该注意到了该图与开放系统互联基本参考模型(Open Systems Interconnection Basic Reference Model,OSI Model)之间的一些相似之处。OSI 模型共包含 7 层,自底向上分别是:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
需要理解的最为重要的概念是,主机中的每层分别与远程计算机中相对应的层进行通信。实际的应用程序可以使用传输层协议中的用户数据报协议(User Datagram Protocol,UDP)或者传输控制协议(Transmission Control Protocol,TCP)来传输数据。它们接收来自于您所运行的应用程序的数据,并将它们分解为不同的数据包。数据包本身也存在区别,这取决于它是 UDP 或者 TCP 数据包。通常来说,UDP 的速度更快一些,而 TCP 更安全一些。有许多可调整的参数值得研究,您将在本系列文章后续的内容中了解这些参数。您可能希望首先熟悉一下 no 命令,这个实用工具可用于完成大多数的网络更改工作。从硬件的角度来看,您应该深入地了解需要进行正确配置以优化性能的那些组件,这一点是非常关键的。除非您工作于一个小型的组织、或者整个 IT 部门由您一个人组成,否则您可能与管理交换机和路由器的网络团队相互协作,并且无权配置这些硬件设备。您所处理的最重要的组件是您的网络适配器。在 2007 年,大多数适配器的版本都可以支持千兆以太网,如 10/100/1000 Mbps 以太网卡。您需要使用到一些重要的概念。
最大传输单元
最大传输单元(Maximum Transfer Unit,MTU)定义为可以通过网络进行传输的最大的数据包。其大小取决于网络的类型。例如,16 位令牌环网的缺省 MTU 大小为 17914,而光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)的缺省 MTU 大小为 4352。以太网的缺省 MTU 大小为 1500(在启用了巨型帧 (jumbo frames) 的情况下为 9000)。数据包越大,所需要传输的数据包就越少,从而提高系统的带宽使用率。如果您的应用程序倾向于使用较小的数据包,那么这种情况是一个例外。如果您正使用千兆以太网,那么您可以使用巨型帧选项。要支持巨型帧的使用,必须对您的交换机进行相应配置,这一点是非常重要的。
要更改为使用巨型帧,可以使用如下的方法: # smit devices。
然后转到 Communication>Ethernet>Adapter>Change/show characteristics of an Ethernet adapter。尝试将传输巨型帧选项从“No”更改为“Yes”(请参见清单 1)。
清单 1. “Characteristics of an Ethernet adapter”屏幕
Change / show characteristics of an Ethernet adapter
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ethernet Adapter ent1
Description Virtual I/O Ethernet >
Status Available
Location
Enable ALTERNATE ETHERNET address no +
ALTERNATE ETHERNET address [0x000000000000] +
Minimum Tiny Buffers [512] +#
Maximum Tiny Buffers [2048] +#
Minimum Small Buffers [512] +#
Maximum Small Buffers [2048] +#
Maximum Medium Buffers [128] +#
Maximum Medium Buffers [256] +#
Minimum Large Buffers [24] +#
[MORE...8]
F1=Help F2=Refresh F3=Cancel F4=List
F5=Reset F6=Command F7=Edit F8=Image
F9=Shell F10=Exit Enter=Do
|
巨型帧的选项在什么地方呢?在这个示例中,您无法进行这项更改。出现这种情况的原因是,这个系统中仅使用了虚拟 I/O 以太网,稍后将更加详细地介绍这个主题。请记住,您必须了解管理的主机所处的网络。
让我们来检查一下这个系统(请参见清单 2)。
清单 2. 对系统进行检查
Change / show characteristics of an Ethernet adapter
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Ethernet Adapter ent1
Description 10/100/1000 Base-TX P>
Status Available
Location 1j-08
RX descriptor queue size [1024] +#
TX descriptor queue size [1024] +#
Software transmit queue size [8192] +#
Transmit jumbo frames yes +
Enable hardware TX TCP resegmentation yes +
Enable hardware transmit and receive checksum yes +
Media speed Auto_Negotiation +
Enable ALTERNATE ETHERNET address no +
ALTERNATE ETHERNET address [0x000000000000] +
Apply change to DATABASE only no +
F1=Help F2=Refresh F3=Cancel F4=List
F5=Reset F6=Command F7=Edit F8=Image
F9=Shell F10=Exit Enter=Do
|
现在,您已经将相应的字段更改为支持巨型帧。
媒体速率
适配器将根据您的媒体速率的配置情况与其他设备进行通信。尽管存在一些其他的选项,但是您需要将网卡配置为 100M 全双工 (100_full_duplex) 或者自动协商 (auto-negotiation)。如果设置为自动协商,那么两端的适配器将尝试使用可能的、最高的速率进行通信。尽管您可能在相关文档中找到,应该按照这种方式进行配置(IBM® 甚至将其作为系统的缺省值),但据我所知,大多数高级 AIX 管理员更愿意将其设置为全双工,以确保能够获得适配器可能的、最高的速率。如果它无法正确地工作,那么在进行部署之前,您应该与合适的网络团队协作以解决这个问题。我宁愿在开始的时候花费更多的时间,而不是因为糟糕的交换机配置而对适配器进行相应的设置,从而导致较低的速率。lsattr 命令可以为您提供所需的信息。en 前缀显示了您的驱动器参数,而 ent 前缀则显示了您的硬件参数。让我们来显示一下您的硬件参数(请参见清单 3)。
清单 3. 显示硬件参数
testsys:/home/test>lsattr -El ent0
alt_addr 0x000000000000 Alternate Ethernet Address True
busintr 166 Bus interrupt level False
busmem 0xc8030000 Bus memory address False
chksum_offload yes Enable RX Checksum Offload True
intr_priority 3 Interrupt priority False
ipsec_offload no IPsec Offload True
large_send no Enable TCP Large Send Offload True
media_speed Auto_Negotiation Media Speed True
poll_link no Enable Link Polling True
poll_link_timer 500 Time interval for Link Polling True
rom_mem 0xc8000000 ROM memory address False
rx_hog 1000 RX Descriptors per RX Interrupt True
rxbuf_pool_sz 1024 Receive Buffer Pool Size True
rxdesc_que_sz 1024 RX Descriptor Queue Size True
slih_hog 10 Interrupt Events per Interrupt True
tx_preload 1520 TX Preload Value True
tx_que_sz 8192 Software TX Queue Size True
txdesc_que_sz 512 TX Descriptor Queue Size True
use_alt_addr no Enable Alternate Ethernet Address True
|
在这个示例中,您的接口设置为自动协商。
您还应该检查您的固件级别,以确保它们是最新的。我发现,通过更新到最新的固件级别,可以修复许多网络问题。lscfg 命令可以为您提供相关固件信息(请参见清单 4)。
清单 4. 使用 lscfg 命令显示固件信息
testsys:/home/test >lscfg -vp | grep -p ROM
10/100 Mbps Ethernet PCI Adapter II:
Part Number.................09P5023
FRU Number..................09P5023
EC Level....................H10971A
Manufacture ID..............YL1021
Network Address.............0002556FC98B
ROM Level.(alterable).......SCU015
Product Specific.(Z0).......A5204207
Device Specific.(YL)........U0.1-P1-I1/E1
10/100/1000 Base-TX PCI-X Adapter:
Part Number.................00P3056
FRU Number..................00P3056
EC Level....................H11635A
Manufacture ID..............YL1021
Network Address.............00096B2E31BD
ROM Level.(alterable).......GOL002
Device Specific.(YL)........U0.1-P1/E2
|
请参见本文结尾处的参考资料部分,为您的适配器获得当前最新的发行版信息。在这个示例中,您将查找 10/100/1000 Base-TX PCI-X 适配器的历史信息:
- OLxxx,这是一个表格位置占位符,用于将来的固件版本。
- GOL021,这个固件级别将更正 EMC Class B 适配器的供应商设备 ID,以便在 AIX 网络安装管理 (NIM) 过程中能够识别该适配器。AIX
60;sum61; 命令的校验和为 38603。
- GOL012,在 OF 中,当适配器(硬件)在传输过程中无法正常工作时,适配器几乎不可能使系统挂起。这项更改将防止适配器发送任何数据包。在经过一段预先确定的时间之后,向超时时间添加一个计时器。
- GOL002,如果用户选择了 10/auto 或者 100/auto,而不是首先 ping 交换机,那么可以通过更新的固件来解决这个问题;在将其传递给 AIX 之前,开放固件不会将设置更改为 auto/auto。如果 AIX 发现参数为 10/auto 或者 100/auto,那么它并不知道如何对其进行处理,并且系统将在执行 ioconfig 的过程中中止,具体代码为 607。现在,固件会将 10/auto、100/auto、auto/full 或者 auto/half 的任何组合(这些都不是正确的选择)更改为 auto/auto。
- GOL001,原始 (GA) 开放固件级别。
通过简要地了解相关的历史信息,固件版本已经落后了两个级别。您需要寻找某个合适的停机时间以更新固件,特别是当您碰到某些间歇性的网络问题的时候。
尽管在本系列后续的部分中重点关注于优化工作,但是您可能希望首先熟悉一下网络子系统的内存管理机制。在这里,你所需要了解的是一个名为 mbufs 的数据结构。这些数据结构用于为传入的和出站的流量存储内核数据。缓冲区大小本身的范围可以是从 32 个字节到 16384 字节。可以通过向虚拟内存管理器 (VMM) 提出分配请求,以创建这些缓冲区。在 SMP 计算机中,将为每个处理器均匀地划分每个内存池。下面的监视部分将向您介绍如何查看 mbufs。有一个重要的概念需要说明,处理器不能在它自己的处理器之外借用内存池。
您还应该熟悉两个其他的概念,即虚拟以太网和共享以太网。
- 虚拟以太网:虚拟以太网(在 POWER5™ 的 AIX 5.3 中对其提供了支持)允许在相同框架的不同逻辑分区之间进行分区之间的、基于 IP 的通信。可以使用一个虚拟 I/O 交换机来完成这项任务。以太网适配器本身可以使用 HMC 进行创建和配置。您可能还记得,您以前曾尝试更改一个使用虚拟以太网进行配置的适配器。
- 共享以太网:共享以太网是高级 POWER 虚拟化的特性之一。它允许使用虚拟 I/O 服务器 (VIO),其中多台主机可以真正地共享一个物理网络适配器。通常,这种特性用于不需要大量网络带宽的环境。
尽管本系列文章的讨论重点不是虚拟化,但是您应该清楚,如果您正使用虚拟化,那么存在一些其他的原因可能导致您的主机出现瓶颈。尽管虚拟化是一项非常有价值的技术,但是请注意不要在您的 VIO 服务器中共享过多的适配器,否则可能会带来很大的网络 I/O 损失。使用合适的监视工具,应该能够在发生问题的时候向您发出通知。而且,您可能还希望熟悉一些相关的概念(如地址解析协议 (ARP) 和域名服务器 (DNS)),这些概念都可能以不同的方式对网络性能和可靠性产生影响。
监视
这个部分为一些可用的网络监视命令和特定的 AIX 工具提供了概述。其中一些工具允许您快速地对一个性能问题进行故障排除,而其他一些工具则允许您为进行历史趋势研究和分析捕获相关的数据。
让我们来看看以前的命令 netstat,它可以显示整体网络统计信息。最常用的一个命令是 netstat -in(请参见清单 5)。
清单 5. 使用带 -in 选项的 netstat
@lpar7ml162f_pub[/home/u0004773] > netstat -in
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
en1 1500 link#2 2a.21.70.0.90.6 21005666 0 175389 0 0
en1 1500 10.153 10.153.3.7 21005666 0 175389 0 0
en0 1500 link#3 2a.21.70.0.90.5 328241182 0 1189 0 0
en0 1500 172.29.128 172.29.137.205 328241182 0 1189 0 0
lo0 16896 link#1 62223 0 62234 0 0
lo0 16896 127 127.0.0.1 62223 0 62234 0 0
lo0 16896 ::1 62223 0 62234 0 0
root@lpar7ml162f_pub[/home/u0004773] >
|
下面解释一下它的含义:
- Name:接口名称。
- MTU:接口最大传输单元大小。
- Network:该接口所连接到的实际网络地址。
- Address:Mac 和 IP 地址。
- Ipkts:该接口所接收到的数据包的总数。
- Ierrs:该接口所报告的错误的总数。
- Opkts:该接口所传输的数据包的总数。
- Oerrs:该接口所传输的错误数据包的总数。
- Coll:该适配器中冲突的总数。如果您使用的是以太网,将不会显示任何内容。
另一个非常方便的 netstat 标志是 -m 选项。这个标志允许您查看内核 malloc 统计信息;其中包括每个 CPU 的 mbuf 内存请求(包括各个缓冲区的大小)、正在使用的和失败的数量(请参见清单 6)。
清单 6. 带 -m 选项的 netstat
root@lpar7ml162f_pub[/home/u0004773] > netstat -m
Kernel malloc statistics:
******* CPU 0 *******
By size inuse calls failed delayed free hiwat freed
32 194 5203 0 2 62 2620 0
64 484 3926 0 7 28 2620 0
128 309 14913 0 8 875 1310 0
256 392 14494 0 22 136 2620 0
512 2060 261283179 0 261 60 3275 0
1024 31 2714 0 8 25 1310 0
2048 587 1237 0 292 5 1965 0
4096 9 8367 0 2 2 655 0
8192 2 12 0 2 1 327 0
16384 224 354 0 29 2 163 0
32768 48 183 0 13 3 81 0
65536 84 142 0 42 0 81 0
131072 3 4 0 0 51 102 0
******* CPU 1 *******
By size inuse calls failed delayed free hiwat freed
32 17 96 0 0 111 2620 0
64 295 1214 0 5 25 2620 0
128 151 93806 0 5 713 1310 0
256 83 273 0 5 29 2620 0
512 1577 86936634 0 199 23 3275 0
1024 4 18 0 2 4 1310 0
2048 515 516 0 257 1 1965 0
4096 1 707 0 0 1 655 0
8192 1 1 0 1 4 327 0
16384 32 32 0 4 0 163 0
65536 34 34 0 17 0 81 0
131072 0 0 0 0 44 88 0
|
如果您使用的是以太网,那么还可以使用 entstat 命令来显示设备驱动器的统计信息。它提供了各种信息的混合(请参见清单 7)。
清单 7. 使用 enstat 命令显示设备驱动器统计信息
testsys:/home/test>entstat -d en1
-------------------------------------------------------------
ETHERNET STATISTICS (en1) :
Device Type: 10/100 Mbps Ethernet PCI Adapter II (1410ff01)
Hardware Address: 00:02:55:6f:c9:9b
Elapsed Time: 5 days 12 hours 14 minutes 46 seconds
Transmit Statistics: Receive Statistics:
-------------------- -------------------
Packets: 803536 Packets: 2095253
Bytes: 511099654 Bytes: 1099945394
Interrupts: 520 Interrupts: 2074913
Transmit Errors: 0 Receive Errors: 0
Packets Dropped: 0 Packets Dropped: 0
Bad Packets: 0
Max Packets on S/W Transmit Queue: 38
S/W Transmit Queue Overflow: 0
Current S/W+H/W Transmit Queue Length: 1
Broadcast Packets: 535 Broadcast Packets: 997476
Multicast Packets: 2 Multicast Packets: 5477
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 AlternateAddress 64BitSupport
ChecksumOffload PrivateSegment DataRateSet
10/100 Mbps Ethernet PCI Adapter II (1410ff01) Specific Statistics:
--------------------------------------------------------------------
Link Status : up
Media Speed Selected: Auto negotiation
Media Speed Running: 100 Mbps Full Duplex
Receive Pool Buffer Size: 1024
No Receive Pool Buffer Errors: 0
Receive Buffer Too Small Errors: 0
Entries to transmit timeout routine: 0
Transmit IPsec packets: 0
Transmit IPsec packets dropped: 0
Receive IPsec packets: 0
Receive IPsec packets dropped: 0
Inbound IPsec SA offload count: 0
Transmit Large Send packets: 0
Transmit Large Send packets dropped: 0
Packets with Transmit collisions:
1 collisions: 0 6 collisions: 0 11 collisions: 0
2 collisions: 0 7 collisions: 0 12 collisions: 0
3 collisions: 0 8 collisions: 0 13 collisions: 0
4 collisions: 0 9 collisions: 0 14 collisions: 0
5 collisions: 0 10 collisions: 0 15 collisions: 0
testsys:/home/test>
|
您并没有在其中发现许多冲突,因为您可能工作于一个经过交换的环境中。查找传输错误,并确保它们不会增长得过快。在开始考虑进行优化之前,您需要了解如何对冲突和错误问题进行故障排除。另外,您可以使用 netstat
-v,它可以提供类似的信息。
让我们来看一下 netpmon。netpmon 可以从网络的角度提供有关 CPU 使用的信息,它还包括网络设备驱动器 I/O、Internet 套接字调用,以及其他各种统计信息的数据。类似于其他的跟踪命令(tprof 和 filemon),该命令将启动跟踪工作并在后台运行,直到您使用 trcstop 命令中止它。我很喜欢 netpmon,因为它能够为您提供网络活动的详细概述,还可以捕获进行趋势研究和分析的相关数据(尽管从这个角度来说,它没有 nmon 那么有价值)。下面,您将使用一个大小为 2M 字节的跟踪缓冲区(请参见清单 8)。
清单 8. 带 -T 选项的 netpmom
root@lpar7ml162f_pub[/etc] > netpmon -T 2000000 -o /tmp/net.out
Wed Sep 5 05:30:27 2007
System: AIX 5.3 Node: lpar7ml162f_pub Machine: 00C22F2F4C00
Run trcstop command to signal end of trace.
|
现在您将中止它(请参见清单 9)。
清单 9. 中止 netpmom
root@lpar7ml162f_pub[/etc] >
root@lpar7ml162f_pub[/etc] > trcstop
root@lpar7ml162f_pub[/etc] > [netpmon: Reporting started]
[netpmon: Reporting completed]
[ 4 traced cpus ]
[ 245.464 secs total preempt time ]
[netpmon: 164.813 secs in measured interval]
root@lpar7ml162f_pub[/etc] >
|
让我们来查看一下相关数据。下面是输出数据中的一小部分采样(请参见清单 10)。
清单 10. 示例输出
# more net.out
Process CPU Usage Statistics:
-----------------------------
Network
Process (top 20) PID CPU Time CPU % CPU %
----------------------------------------------------------
UNKNOWN 15920 151.2735 36.558 0.000
UNKNOWN 7794 104.8801 25.346 0.000
UNKNOWN 6876 73.8785 17.854 0.000
UNKNOWN 5402 50.6225 12.234 0.000
xmwlm 13934 15.0469 3.636 0.000
-ksh 5040 0.0371 0.009 0.000
getty 18688 0.0280 0.007 0.000
sshd: 28514 0.0224 0.005 0.000
syncd 10068 0.0212 0.005 0.000
gil 3870 0.0163 0.004 0.004
swapper 0 0.0135 0.003 0.000
spray 5400 0.0085 0.002 0.000
send-mail 18654 0.0084 0.002 0.000
rmcd 15026 0.0081 0.002 0.000
ping 5036 0.0068 0.002 0.000
ksh 26642 0.0062 0.002 0.000
trcstop 5404 0.0057 0.001 0.000
rpc.lockd 22032 0.0052 0.001 0.000
mail 6872 0.0039 0.001 0.000
IBM.ServiceRMd 28126 0.0032 0.001 0.000
----------------------------------------------------------
Total (all processes) 395.9176 95.681 0.004
Idle time 70.3216 16.995
========================================================================
First Level Interrupt Handler CPU Usage Statistics:
---------------------------------------------------
Network
FLIH CPU Time CPU % CPU %
----------------------------------------------------------
PPC decrementer 18.4640 4.462 0.000
queued interrupt 6.2882 1.520 0.000
external device 0.6343 0.153 0.000
data page fault 0.0220 0.005 0.000
----------------------------------------------------------
Total (all FLIHs) 25.4085 6.140 0.000
TCP Socket Call Statistics (by Process):
----------------------------------------
------ Read ----- ----- Write -----
Process (top 20) PID Calls/s Bytes/s Calls/s Bytes/s
------------------------------------------------------------------------
sshd: 28514 0.47 7754 0.65 40
sshd: 29596 0.04 596 0.05 3
------------------------------------------------------------------------
Total (all processes) 0.51 8350 0.70 43
========================================================================
NFSv3 Client RPC Statistics (by Server):
----------------------------------------
Server Calls/s
----------------------------------
p650 0.03
------------------------------------------------------------------------
Total (all servers) 0.03
========================================================================
PROCESS: ping PID: 5036
reads: 12
read sizes (bytes): avg 192.0 min 192 max 192 sdev 0.0
read times (msec): avg 7.927 min 7.136 max 12.806 sdev 1.496
writes: 12
write sizes (bytes): avg 64.0 min 64 max 64 sdev 0.0
write times (msec): avg 0.052 min 0.039 max 0.063 sdev 0.007
|
正如您可以看到的,此时并没有太多的整体网络 I/O 活动。顶部的部分是最重要的内容,因为它可以帮助您了解哪些进程占用了过多的网络 I/O 时间。
lsattr(稍后将用于查看硬件参数)是另一个常用于显示接口统计信息的命令。其中您所看到的属性,使用 chdev 或者 no 命令进行配置。让我们显示您的驱动器参数(请参见清单 11)。
清单 11. 使用 lsattr 显示驱动器参数
testsys:/home/testsys >lsattr -El en0
alias4 IPv4 Alias including Subnet Mask True
alias6 IPv6 Alias including Prefix Length True
arp on Address Resolution Protocol (ARP) True
authority Authorized Users True
broadcast Broadcast Address True
mtu 1500 Maximum IP Packet Size for This Device True
netaddr Internet Address True
netaddr6 IPv6 Internet Address True
netmask Subnet Mask True
prefixlen Prefix Length for IPv6 Internet Address True
remmtu 576 Maximum IP Packet Size for REMOTE Networks True
rfc1323 Enable/Disable TCP RFC 1323 Window Scaling True
security none Security Level True
state detach Current Interface Status True
tcp_mssdflt Set TCP Maximum Segment Size True
tcp_nodelay Enable/Disable TCP_NODELAY Option True
tcp_recvspace Set Socket Buffer Space for Receiving True
tcp_sendspace Set Socket Buffer Space for Sending True
testsys:/home/testsys>
|
我也很喜欢使用 spray 命令对可能的问题进行故障排除。spray 命令将发送单向的数据包流(从您的主机到远程主机)。它将向您显示数据包的数量,以及数据包的传输速率(请参见清单 12)。
清单 12. spray 命令
root@lpar7ml162f_pub[/etc] > /usr/etc/spray lpar8test -c 2000 -l 1400 -d 1
sending 2000 packets of length 1402 to
lpar8test ...
34 packets (1.700%) dropped by lpar8test
23667 packets/second, 33181234 bytes/second
root@lpar7ml162f_pub[/etc] >
|
在这个示例中,向主机 lpar8test 发送了 2000 个数据包,数据包之间的时间延迟为一微秒。每个数据包的长度为 1400 个字节。在使用 spray 之前,请确保没有从 inetd 中注释掉 sprayd(这是 AIX 中的缺省情况),并且不要忘记更新 inetd。如果您发现了大量的丢包,这显然不是很好。
最后,让我们来看一下清单 13 中的 nmon。
清单 13. nmon
?nmon????????p=Partitions???????Host=lpar7ml162f_pubRefresh=2 secs???05:43.15?????????
? Network ????????????????????????????????????????????????????????????????????????????
?I/F Name Recv=KB/s Trans=KB/s packin packout insize outsize Peak->Recv Trans ?
? en1 2.1 0.0 46.3 0.0 46.0 0.0 2.1 0.0 ?
? en0 43.8 0.3 575.2 0.5 77.9 674.0 43.8 0.6 ?
? lo0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ?
? Total 0.0 0.0 in Mbytes/second ?
?I/F Name MTU ierror oerror collision Mbits/s Description ?
? en1 1500 0 0 0 2047 Standard Ethernet Network Interface ?
? en0 1500 0 0 0 2047 Standard Ethernet Network Interface ?
? lo0 16896 0 0 0 0 Loopback Network Interface
|
如果您学习过 AIX 方面的其他系列文章(请参见参考资料),那么您就知道我非常喜欢 nmon,并且一旦您开始使用它,您也会喜欢这个命令。使用 nmon(在启动之后输入该命令),您将获得网络中所有内容的快速快照,包括适配器详细信息、MTU、错误计数器和冲突,以及兆位速率。
而且,您还可以使用 nmon 捕获相关的数据。使用 nmon 分析程序,您可以直接在 Microsoft® Excel 电子表格中打印出美观的图形报告。请参见参考资料,其中提供了一个 IBM Wiki 的链接,可以获得 nmon 手册或者下载内容。
总结
本文介绍了网络 I/O 子系统的相对重要性,并且定义了 AIX 网络 I/O 层,以及它与 OSI 模型之间的关系。您了解了网络配置方面的一些最佳实践,更改以太网的设置以支持巨型帧,并查看接口硬件和驱动器数据。您还研究了一些可用的监视工具,以及如何使用 netpmon 和 nmon 捕获数据。在本系列文章的下一个部分中,您将优化 NFS,了解更多有关各种监视实用工具的内容,如 nfsstat 和 nmon,并了解如何使用 nfso 进行优化工作。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Ken Milberg 是 techtarget.com 网站的技术作家和网站专家,并且在 searchopensource.com 网站提供 Linux 技术信息和支持。他还是《IBM 系统杂志(开放系统版)》的撰稿人和技术编辑。Ken 拥有马里兰大学计算机和信息科学学士学位以及技术管理硕士学位。他是长岛 POWER-AIX 用户组的创立者和负责人。多年以来,他在大小型企业工作过,并且担任过从 CIO 到高级 AIX 工程师的各种职位。现在,他在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 是一名通过 PMI 认证的项目管理专业人员 (PMP),还是一名通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006),并且是通过 Solaris 认证的网络管理员 (SCNA)。您可以通过 kmilberg@gmail.com 与他联系。 |
对本文的评价
|