AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 536369
Accepted
GregC
GregC
Asked: 2013-09-05 10:43:48 +0800 CST2013-09-05 10:43:48 +0800 CST 2013-09-05 10:43:48 +0800 CST

如何在没有巨型数据包的情况下提高 Intel X520-DA2 10Gb NIC 吞吐量

  • 772

这是我到目前为止所做的:

使用更多的 Rx/Tx 缓冲区可以最大程度地提高默认值的性能。我在每个适配器上将 RSS 队列设置为 4,并将第二个端口上的启动 RSS CPU 指定为 0 以外的值(在我使用的 PC 上是 16,有 16 个内核,32 个 HT)。

通过观看 ProcessExplorer,我受到 CPU 处理大量传入中断的能力的限制,即使启用了 RSS。我在 2.x 模式下使用 PCIe x8(电气)插槽。两个适配器中的每一个都与 5GT/sec x8 总线连接。

操作系统响应能力无关紧要,I/O 吞吐量才是。我受到客户无法处理巨型数据包的限制。

接下来我应该尝试哪些设置?

详细信息:双 Xeon-E5 2665、32 GB RAM、RAID0 中的 8 个 SSD(用于 NIC 性能验证的 RAMDrive)、通过 IIS/FTP 从 400 个客户端尽快移动的 1TB 数据。

回应评论:

实际读取吞吐量为 650 MB/秒,通过一对 10Gb/秒的链接,进入 RAM 驱动器

防病毒和防火墙已关闭,AFAICT。(在这种情况下,我可以很好地控制 PC 上安装的内容。我如何确定没有过滤器会降低性能?我将不得不跟进,好点。)

在 Process Explorer 中,我看到 CPU 持续运行的一段时间(红色,内核时间),但网络和磁盘 I/O 停止

最大 RSS 处理器为默认值,16

X520-DA2 设备的两个实例都支持消息信号中断,MessageNumberLimit 设置为 18。这是我在低端桌面卡上看到的内容

检查 MSI 支持的方法

ProcExp 总结

在此处输入图像描述

windows-server-2008-r2
  • 3 3 个回答
  • 12471 Views

3 个回答

  • Voted
  1. Best Answer
    hookenz
    2013-09-05T14:02:05+08:002013-09-05T14:02:05+08:00

    高性能 NIC 的问题之一是现代 PC 架构难以跟上。但是,在您的情况下,这并不是问题所在。让我解释。

    CPU 必须做很多工作来处理 TCP 数据包。这会影响吞吐量。在您的情况下,限制事物的不是网络硬件,而是服务器使网络链接饱和的能力。

    最近,我们看到处理从 CPU 转移到 NIC,如校验和卸载。英特尔还增加了一些功能来帮助进一步减少负载。这很酷,我确信所有优化功能都已打开。

    正如您所提到的,巨型帧 - 实际上这在一定程度上有助于吞吐量。但不如RDMA多。

    大多数 10GBit 以太网硬件都有一个很好的未充分利用的功能,称为 RDMA 或远程直接内存访问。它允许 NIC 通过网络进行内存到内存的复制,而无需 CPU 的干预。好吧,好的,CPU 告诉 NIC 做什么,然后 NIC 完成其余的工作。问题是,它还没有被太多使用。但它正在到达那里。显然,在最新版本的 Microsoft Windows Server 2012 中,他们有一个叫做SMB Direct的东西。它使用 RDMA。所以,如果你想增加吞吐量,你想使用它。

    您是否能够将一些测试硬件放在一起并将其安装到那里以查看它的性能?

    顺便说一句,我不确定你是否会在 10Gbit 上看到它,但快速 RAM 有助于 RDMA,尤其是 56Gbit Infiniband。一般来说,最好使用服务器支持的最快 RAM。

    另请注意我在上面放置的 SMB Direct 链接上的此评论:

    如果您打算使用网络适配器的 RDMA 功能,则不应将支持 RDMA 的网络适配器组合在一起。组合时,网络适配器将不支持 RDMA。


    更新:由于某种原因,看起来并非所有 10GBit NIC 都支持 RDMA。因此,首先检查您的模型的功能。

    我的另一个想法是用于进行测试的协议类型可能会影响结果。即 TCP 开销之上的协议开销。我建议您考虑使用可以在不接触硬盘驱动器的情况下进行测试的东西,例如 iperf。它的某个地方有一个 Windows 端口。

    • 4
  2. Nils
    2013-09-05T13:17:39+08:002013-09-05T13:17:39+08:00

    我想这个问题:为什么我的千兆债券不能提供至少 150 MB/s 的吞吐量?和你的问题有关。我在那里谈论的是戴尔 PowerEdge 6950。答案基本上是“使用巨型帧”来减少中断。我可以想象调整网卡的卸载引擎可能对您有所帮助,但我不知道如何在 W2K8R2 上这样做。

    想法: 增加网卡缓冲区的数量,提高缓冲区中数据包的中断触发,这样每个中断都会处理更多的数据包(即将它们传递到 OS-IP 堆栈)。

    请参阅此链接:使用 ethtool 为 10 Gb 设置合并参数,这就是我所指的。

    • 1
  3. Evgeniy Berezovsky
    2015-06-26T21:49:47+08:002015-06-26T21:49:47+08:00

    您的 CPU 利用率屏幕截图显示了 2 个潜在瓶颈:

    1. 4 个内核最大限度地完成内核工作(即可能是处理数据包的中断处理程序)
    2. 1 个核心在 - 主要是 - 用户模式下最大化

    解决前者:

    • 尝试更改中断审核设置,根据您的驱动程序,它不仅仅是开/关,您也许可以设置审核策略
    • 尝试禁用/启用所有卸载功能(在您的情况下,禁用可能是有益的,以便将潜在的瓶颈从您的(单核)NIC(该功能将被卸载到)转移到您的(多核)处理器)
    • 尝试启用“接收合并”(接收 TCP 时),以及您的驱动程序可能提供的各种“大型接收...”、“大型传输...”等功能
    • 您不能将您的 RSS 队列设置为高于 4 的值吗?似乎您的 2 个端口中只有一个正在使用(正如您所说的,我假设您将第二个端口设置为至少 4 个(或 8 个,不确定是否必须计算 HT)
    • 如果可能,增加使用的不同 TCP/UDP 端口或 IP 源/目标地址的数量,因为一个地址/端口/协议 5 元组(或非 TCP/UDP 流量的地址/协议 3 元组)将始终具有无论您的 RSS 设置如何,都可以使用相同的核心

    至于后者(不知道您实际使用的是什么应用程序):

    如果在用户模式下 1 核心最大化表明您的单线程(或单线程瓶颈)应用程序,它应该是

    • 固定,或
    • 重新配置(例如,如果可能,增加 # 工作线程),或
    • 重新设计

    使用多个核心,这可能是微不足道的,也可能不是微不足道的。

    此外,作为您的应用程序(如果它确实是您的应用程序),显然在 NUMA 节点 #1 上运行,但内核的数据包处理是在 NUMA 节点 #0 上完成的,

    • 尝试将应用程序关联到 NUMA 节点 #0

    例如,通过右键单击任务管理器中的进程,您可以选择更改它,至少在 Win2012R2 中是这样。我试过了,对我来说没有帮助,但值得一试,因为它可能会提高缓存命中率。

    顺便说一句,有问题的机器正在发送吗?接收?两个都?在配置系统性能方面,发送和接收几乎完全不相关,尽管我上面的建议涵盖了两者。

    • 0

相关问题

  • Server 2008 R2 架构更改 - 自 RC 以来是否有任何更改?

  • 是否可以在 Server 2008 R2 Core Install 中安装 servermanagercmd?

  • 视窗 2008 R2 WDS

  • 从命令行备份 Windows 2008 R2 到网络共享 - 隐藏分区问题

  • 在 Windows Server 2008 上移动和更改 Pagefile.sys 大小

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve