返回   青蛙论坛 » IT论坛 » 操作系统类
用户名
密码
帮助 会员 日历 标记论坛为已读

回复
 
主题工具 显示模式
旧 12-08-2006, 16:07   #1
chyangwa
蝌蚪-小毛驴
 
chyangwa的头像
 
注册日期: Nov 2000
来自: 上海
帖子: 8,285
精华: 6
千兆系统优化问题

千兆系统优化问题
  许多新的工作站和服务器都配置集成的GB网卡。但是,很多人很快就发现,这些网卡传输数据的速度还没有100MB/每秒的网卡速度快。很多因素可以影响你以更高的速度传输数据的能力,其中多数因素与操作系统的设置有关。在这篇文章中,我们将讨论使你新的配置GB网卡的服务器在Linux、FreeBSD和Windows操作系统中达到接近GB的速度所需的一些必要步骤。

  硬件的考虑

  首先和最重要的是我们必须要认识到应该考虑一些硬件的限制。这是因为有人在一台服务器中安装了一个GB网卡并不意味着硬件能够达到这个速度。

  网卡一般通过一个PCI插槽连接到PCI总线。老式工作站和非服务器主板一般都采用32位的33MHz的PCI插槽。这就意味着它们能够以每秒133MB的速度传输数据。由于总线是计算机系统中的许多部件共享的,因此,数据传输的实际速度在最好的情况下是每秒大约80MB。

  GB网卡提供的数据传输速度为每秒中1000M位,或者每秒中125MB。如果PCI总线的速度只有80MB,这对GB网卡是一个重要的限制因素。数学计算出每秒640M位的速度确实比大多数GB网卡安装之后的速度快很多。但是,请记住,这可能只是最佳的情况。

  如果在服务器中还有其它需要消耗大量数据的PCI卡,你可能看到数据的吞吐量将显著下降。克服这个瓶颈的惟一的解决方案是购买一个配置66MHz的PCI插槽的主板,这种插槽的数据传输速度可达到每秒266MB。此外,新的64位PCI插槽使用66MHz总线能够使数据传输速度达到每秒532MB。这是所有的服务器级主板的标准。

  假设我们使用能够满足GB网卡数据传输速度的合适的硬件,接下来的障碍就是操作系统的问题。为了进行测试,我们使用了两台相同的服务器。这两台服务器的配置都是:英特尔服务器主板、奔腾4 3.0GHz处理器、1GB 内存、集成的英特尔10/100/1000网卡。一台服务器运行采用2.6 SMP内核的Gentoo Linux操作系统,另一台运行采用SMP内核的FreeBSD 5.3操作系统以便利用英特尔奔腾4的超线程功能。我们很幸运地有一台具有GB功能的交换机。不过如果你没有千兆交换机,可以把这两台服务器直接连接起来也能取得了同样的结果。

软件的考虑

  为了测试这两台服务器之间的速度,我们没有使用FTP或者其它任何从硬盘提取数据的东西。内存至内存之间的传输是最好的测试。有许多做这种测试的工具。对于我们的测试来说,我们使用了“TTCP”。(网址:http://www.pcausa.com/Util...。

  这两台服务器之间传输数据的第一次测试结果不太好。最大速率为大约每秒230M位,大约是每秒100M位的网卡的速度的一倍。这个速度已经有了很大的改善,但是,还不理想。实际上,大多数情况下如果不做任何设置调整就对服务器进行设置,得到的结果会比这个更糟糕。然而,经过对设置进行一些小的改动,我们很快实现了速度的显著改善,比最初的测试的速度提高了三倍。

  很多人建议把你的网络接口的MTU设置得更大一些。这基本上是让网卡发送更大的以太网帧。虽然这种方法对于两台主机直接连接在一起是有用的,但是,这对于通过不支持更大的MTU的交换机进行连接的服务器来说就没有任何用处。因此,这种做法没有必要。在MTU设置达到1500字节的时候可以达到每秒900M位的数据传输速度。

  要获得最大的数据吞吐量,最重要的选项是TCP窗口的尺寸。TCP窗口控制数据流,并且在开始一个TCP连接的时候进行协商。使用一个太小的尺寸将导致速度减慢,因为TCP仅仅使用这两台端点服务器较小的窗口尺寸。还有一些比这更复杂的信息。下面就是你需要确实了解的信息:

  对于Linux和FreeBSD操作系统软件,我们使用了sysctl工具软件。对于下面全部选项,输入“sysctl variable=number”命令可以对系统变量进行设置。要查看当前的设置,可使用“sysctl <变量名>.

  设置最大窗口尺寸的方法:

  FreeBSD下:

kern.ipc.maxsockbuf=262144


  Linux:

net.core.wmem_max=8388608


  设置默认窗口尺寸:

  FreeBSD的发送和接收窗口尺寸设置:

  net.inet.tcp.sendspace=65536
  net.inet.tcp.recvspace=65536


  Linux,的发送和接收窗口尺寸设置:

  net.core.wmem_default = 65536
  net.core.rmem_default = 65536


设置RFC 1323选项:

  这将启用RFC 1323中定义的有用的窗口伸缩选项。RFC 1323允许把窗口尺寸设置的比我们上面指定的要大得多。

  - FreeBSD:

net.inet.tcp.rfc1323=1


  - Linux:

net.ipv4.tcp_window_scaling=1


  设置缓存:

  当发送大量数据时,可能会超出操作系统的缓存大小限制。这个选项应该在使用前面提到的那些设置前就启用。要增加可用的“mbufs”容量,可使用如下指令:

  - FreeBSD:

kern.ipc.nmbclusters=32768


  - Linux:

net.ipv4.tcp_mem= 98304 131072 196608


  这些设置将极大地提高TCP性能。在上述设置完成之后,我们就能够运行ttcp,并且每一次都获得大约每秒890M位的数据传输速度。还有一些选择可以调整UDP数据报的尺寸。但是,我们本文的重点是TCP。

  在Windows XP/2000 Server/Server 2003系统下

  TCP设置在注册表编辑器中的神秘位置是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  我们需要增加一个名为“TcpWindowSize”的“DWORD”注册表键值,并且输入足够大的尺寸。131400应该足够了。“Tcp1323Opts”应该设置为3。这将启用rfc1323的可伸缩性和时间戳。

  而且,同Unix一样,我们要增加TCP缓存的尺寸:

  ForwardBufferMemory 80000

  NumForwardPackets 60000

  对于Windows XP用户来说,最后一个需要指出的重要事情是:如果你已经安装了SP2,那么,还有另一个引起网络性能不佳的原因。微软知识库842264号文件解释了这个问题。(这个文件的网址是http://support.microsoft.c...。微软称,在安装SP2之后关闭互联网共享(ICS)功能应该能够修复这个性能问题。

  上述方法应该能够使你显著提高服务器的性能,在TCP连接上获得更快的数据速率。如果你的具体应用程序主要使用UDP,那么,应该研究与UDP数据报尺寸相关的选项。请记住,我们用一台速度很快的奔腾4计算机、服务器级主板和高质量的英特尔网卡获得了接近每秒900M位的速度。这个结果可能有很大差别。但是,调整上述设置是实现你的服务器GB网卡功能的一个必要的步骤。
chyangwa离线中   回复时引用此帖
回复


主题工具
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭
论坛跳转



所有的时间均为北京时间。 现在的时间是 18:15.


NewvBB Core 1.1 Final - vBulletin v3.0.3
中文化与插件制作 NewVBB.com™ 2024。
友情连接        
摩托车.上海.中国        
         
         
         
         
         

上海市通信管理局
沪ICP备010502
沪ICP备05000578号