科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道装千兆网卡就能千兆吗?千兆系统怎么样优化(1)

装千兆网卡就能千兆吗?千兆系统怎么样优化(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

很多新的工作站和服务器都配置集成的GB网卡。但是,很多人很快就发现,这些网卡传输数据的速度还没有100MB/每秒的网卡速度快。很多因素可以影响你以更高的速度传输数据的能力,其中多数因素与操作系统的设置有关。

作者: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章