AIX 5L 网络性能优化.docx
《AIX 5L 网络性能优化.docx》由会员分享,可在线阅读,更多相关《AIX 5L 网络性能优化.docx(62页珍藏版)》请在冰豆网上搜索。
AIX5L网络性能优化
AIX5L网络性能优化:
第1部分:
网络概述—对硬件进行监视
2007年12月13日
这个有关AIX®网络的系列文章共分三个部分,重点关注优化网络性能方面的各种挑战。
在第一部分中,您将回顾网络配置方面的一些最佳实践,通过充分地利用各种网络工具(如netstat、netpmon、entstat和nmon),您可以利用这些实践对硬件进行高效地监视。
您还将研究一些特定的工具,它们可用于查看您的相关接口,以便研究如何配置它们。
关于本系列
这个有关AIX®网络的系列文章共分三个部分(请参见参考资料),本文是其中的第1部分,提供了有关网络的概述,并介绍了可以帮助您对硬件进行监视的一些工具。
第2部分将介绍如何使用各种监视实用工具(如nfsstat和nmon)对网络文件系统(NetworkFileSystem,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.AIXTCP/IP中的各层
您可以清楚地看到,还有更多的内容需要进行网络监视,而不仅仅只是运行netstat并查找冲突的情况。
从应用程序层到媒体层,有许多方面都需要进行配置、监视和优化。
此时,您应该注意到了该图与开放系统互联基本参考模型(OpenSystemsInterconnectionBasicReferenceModel,OSIModel)之间的一些相似之处。
OSI模型共包含7层,自底向上分别是:
∙物理层
∙数据链路层
∙网络层
∙传输层
∙会话层
∙表示层
∙应用层
需要理解的最为重要的概念是,主机中的每层分别与远程计算机中相对应的层进行通信。
实际的应用程序可以使用传输层协议中的用户数据报协议(UserDatagramProtocol,UDP)或者传输控制协议(TransmissionControlProtocol,TCP)来传输数据。
它们接收来自于您所运行的应用程序的数据,并将它们分解为不同的数据包。
数据包本身也存在区别,这取决于它是UDP或者TCP数据包。
通常来说,UDP的速度更快一些,而TCP更安全一些。
有许多可调整的参数值得研究,您将在本系列文章后续的内容中了解这些参数。
您可能希望首先熟悉一下no命令,这个实用工具可用于完成大多数的网络更改工作。
从硬件的角度来看,您应该深入地了解需要进行正确配置以优化性能的那些组件,这一点是非常关键的。
除非您工作于一个小型的组织、或者整个IT部门由您一个人组成,否则您可能与管理交换机和路由器的网络团队相互协作,并且无权配置这些硬件设备。
您所处理的最重要的组件是您的网络适配器。
在2007年,大多数适配器的版本都可以支持千兆以太网,如10/100/1000Mbps以太网卡。
您需要使用到一些重要的概念。
最大传输单元
最大传输单元(MaximumTransferUnit,MTU)定义为可以通过网络进行传输的最大的数据包。
其大小取决于网络的类型。
例如,16位令牌环网的缺省MTU大小为17914,而光纤分布式数据接口(FiberDistributedDataInterface,FDDI)的缺省MTU大小为4352。
以太网的缺省MTU大小为1500(在启用了巨型帧(jumboframes)的情况下为9000)。
数据包越大,所需要传输的数据包就越少,从而提高系统的带宽使用率。
如果您的应用程序倾向于使用较小的数据包,那么这种情况是一个例外。
如果您正使用千兆以太网,那么您可以使用巨型帧选项。
要支持巨型帧的使用,必须对您的交换机进行相应配置,这一点是非常重要的。
要更改为使用巨型帧,可以使用如下的方法:
#smitdevices。
然后转到Communication>Ethernet>Adapter>Change/showcharacteristicsofanEthernetadapter。
尝试将传输巨型帧选项从“No”更改为“Yes”(请参见清单1)。
清单1.“CharacteristicsofanEthernetadapter”屏幕
Change/showcharacteristicsofanEthernetadapter
Typeorselectvaluesinentryfields.
PressEnterAFTERmakingalldesiredchanges.
[TOP][EntryFields]
EthernetAdapterent1
DescriptionVirtualI/OEthernet>
StatusAvailable
Location
EnableALTERNATEETHERNETaddressno+
ALTERNATEETHERNETaddress[0x000000000000]+
MinimumTinyBuffers[512]+#
MaximumTinyBuffers[2048]+#
MinimumSmallBuffers[512]+#
MaximumSmallBuffers[2048]+#
MaximumMediumBuffers[128]+#
MaximumMediumBuffers[256]+#
MinimumLargeBuffers[24]+#
[MORE...8]
F1=HelpF2=RefreshF3=CancelF4=List
F5=ResetF6=CommandF7=EditF8=Image
F9=ShellF10=ExitEnter=Do
巨型帧的选项在什么地方呢?
在这个示例中,您无法进行这项更改。
出现这种情况的原因是,这个系统中仅使用了虚拟I/O以太网,稍后将更加详细地介绍这个主题。
请记住,您必须了解管理的主机所处的网络。
让我们来检查一下这个系统(请参见清单2)。
清单2.对系统进行检查
Change/showcharacteristicsofanEthernetadapter
Typeorselectvaluesinentryfields.
PressEnterAFTERmakingalldesiredchanges.
[EntryFields]
EthernetAdapterent1
Description10/100/1000Base-TXP>
StatusAvailable
Location1j-08
RXdescriptorqueuesize[1024]+#
TXdescriptorqueuesize[1024]+#
Softwaretransmitqueuesize[8192]+#
Transmitjumboframesyes+
EnablehardwareTXTCPresegmentationyes+
Enablehardwaretransmitandreceivechecksumyes+
MediaspeedAuto_Negotiation+
EnableALTERNATEETHERNETaddressno+
ALTERNATEETHERNETaddress[0x000000000000]+
ApplychangetoDATABASEonlyno+
F1=HelpF2=RefreshF3=CancelF4=List
F5=ResetF6=CommandF7=EditF8=Image
F9=ShellF10=ExitEnter=Do
现在,您已经将相应的字段更改为支持巨型帧。
媒体速率
适配器将根据您的媒体速率的配置情况与其他设备进行通信。
尽管存在一些其他的选项,但是您需要将网卡配置为100M全双工(100_full_duplex)或者自动协商(auto-negotiation)。
如果设置为自动协商,那么两端的适配器将尝试使用可能的、最高的速率进行通信。
尽管您可能在相关文档中找到,应该按照这种方式进行配置(IBM®甚至将其作为系统的缺省值),但据我所知,大多数高级AIX管理员更愿意将其设置为全双工,以确保能够获得适配器可能的、最高的速率。
如果它无法正确地工作,那么在进行部署之前,您应该与合适的网络团队协作以解决这个问题。
我宁愿在开始的时候花费更多的时间,而不是因为糟糕的交换机配置而对适配器进行相应的设置,从而导致较低的速率。
lsattr命令可以为您提供所需的信息。
en前缀显示了您的驱动器参数,而ent前缀则显示了您的硬件参数。
让我们来显示一下您的硬件参数(请参见清单3)。
清单3.显示硬件参数
testsys:
/home/test>lsattr-Elent0
alt_addr0x000000000000AlternateEthernetAddressTrue
busintr166BusinterruptlevelFalse
busmem0xc8030000BusmemoryaddressFalse
chksum_offloadyesEnableRXChecksumOffloadTrue
intr_priority3InterruptpriorityFalse
ipsec_offloadnoIPsecOffloadTrue
large_sendnoEnableTCPLargeSendOffloadTrue
media_speedAuto_NegotiationMediaSpeedTrue
poll_linknoEnableLinkPollingTrue
poll_link_timer500TimeintervalforLinkPollingTrue
rom_mem0xc8000000ROMmemoryaddressFalse
rx_hog1000RXDescriptorsperRXInterruptTrue
rxbuf_pool_sz1024ReceiveBufferPoolSizeTrue
rxdesc_que_sz1024RXDescriptorQueueSizeTrue
slih_hog10InterruptEventsperInterruptTrue
tx_preload1520TXPreloadValueTrue
tx_que_sz8192SoftwareTXQueueSizeTrue
txdesc_que_sz512TXDescriptorQueueSizeTrue
use_alt_addrnoEnableAlternateEthernetAddressTrue
在这个示例中,您的接口设置为自动协商。
您还应该检查您的固件级别,以确保它们是最新的。
我发现,通过更新到最新的固件级别,可以修复许多网络问题。
lscfg命令可以为您提供相关固件信息(请参见清单4)。
清单4.使用lscfg命令显示固件信息
testsys:
/home/test>lscfg-vp|grep-pROM
10/100MbpsEthernetPCIAdapterII:
PartNumber.................09P5023
FRUNumber..................09P5023
ECLevel....................H10971A
ManufactureID..............YL1021
NetworkAddress.............0002556FC98B
ROMLevel.(alterable).......SCU015
ProductSpecific.(Z0).......A5204207
DeviceSpecific.(YL)........U0.1-P1-I1/E1
10/100/1000Base-TXPCI-XAdapter:
PartNumber.................00P3056
FRUNumber..................00P3056
ECLevel....................H11635A
ManufactureID..............YL1021
NetworkAddress.............00096B2E31BD
ROMLevel.(alterable).......GOL002
DeviceSpecific.(YL)........U0.1-P1/E2
请参见本文结尾处的参考资料部分,为您的适配器获得当前最新的发行版信息。
在这个示例中,您将查找10/100/1000Base-TXPCI-X适配器的历史信息:
∙OLxxx,这是一个表格位置占位符,用于将来的固件版本。
∙GOL021,这个固件级别将更正EMCClassB适配器的供应商设备ID,以便在AIX网络安装管理(NIM)过程中能够识别该适配器。
AIX60;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™的AIX5.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
NameMtuNetworkAddressIpktsIerrsOpktsOerrsColl
en11500link#22a.21.70.0.90.621005666017538900
en1150010.15310.153.3.721005666017538900
en01500link#32a.21.70.0.90.53282411820118900
en01500172.29.128172.29.137.2053282411820118900
lo016896link#16222306223400
lo016896127127.0.0.16222306223400
lo016896:
:
16222306223400
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
Kernelmallocstatistics:
*******CPU0*******
Bysizeinusecallsfaileddelayedfreehiwatfreed
321945203026226200
644843926072826200
128309149130887513100
2563921449402213626200
512206026128317902616032750
1024312714082513100
204858712370292519650
4096983670226550
81922120213270
1638422435402921630
32768481830133810
65536841420420810
1310723400511020
*******CPU1*******
Bysizeinusecallsfaileddelayedfreehiwatfreed
3217960011126200
64295121405