扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:zdnet安全频道 来源:论坛整理 2008年12月9日
关键字: 网卡
很多新的工作站和服务器都配置集成的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/Utilities/pcattcp.htm)。
这两台服务器之间传输数据的第一次测试结果不太好。最大速率为大约每秒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.com/?kbid=842264)。微软称,在安装SP2之后关闭互联网共享(ICS)功能应该能够修复这个性能问题。
上述方法应该能够使你显著提高服务器的性能,在TCP连接上获得更快的数据速率。如果你的具体应用程序主要使用UDP,那么,应该研究与UDP数据报尺寸相关的选项。请记住,我们用一台速度很快的奔腾4计算机、服务器级主板和高质量的英特尔网卡获得了接近每秒900M位的速度。这个结果可能有很大差别。但是,调整上述设置是实现你的服务器GB网卡功能的一个必要的步骤。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者