设置接收方缩放(RSS)处理器的数量,以优化计算机的网络性能。 本文介绍如何设置 RSS 处理器来提高吞吐量和效率。
在多个 CPU 上运行的并发延迟过程调用(DPC)使你可以分发接收处理并消除 CPU 瓶颈(例如,在高速 NIC 中)。 但是,使用多个 DPC 会产生额外的开销。 在对 RSS 使用更多处理器时,中断和 DPC 处理开销会增加。 当 RSS 处于活动状态时,所有 CPU 的总 CPU 使用率都会增加。 选择 RSS 的 CPU 数,以避免对 RSS 使用过多的处理能力,而不是提高网络吞吐量。
注释
从 Windows 8 和 Windows Server 2012 开始,管理员可以使用 PowerShell cmdlet 控制网络适配器的许多方面。 现在不建议直接编辑注册表。
PowerShell 和注册表配置之间的差异
用于设置 RSS CPU 数的 PowerShell cmdlet 为 Set-NetAdapterRss。
使用 Set-NetAdapterRss PowerShell cmdlet 设置 RSS CPU 数。
使用 Set-NetAdapterRss 和 MaxNumRssCpus 注册表关键字的主要区别在于 PowerShell cmdlet 适用于每个网络适配器,而 MaxNumRssCpus 是全局的,适用于所有网络适配器。 单独设置每个网络适配器可提供更大的灵活性、粒度,并使配置更易于理解。 如果要同时向所有当前和将来的网络适配器应用配置,则可以使用全局 MaxNumRssCpus 密钥。
有关网络适配器 cmdlet 的完整列表,请参阅 Windows PowerShell 中的网络适配器 Cmdlet。
RSS 处理器的注册表设置
在具有可缩放网络包的 Microsoft Windows Server 2003 中,使用 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中的 MaxNumRssCpus 注册表关键字设置 RSS CPU 的最大数目。 MaxNumRssCpus 值为 DWORD 类型。 如果不存在,NDIS 将使用默认值 4。
在 Windows Server 2008 中,使用 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndis\Parameters中的 MaxNumRssCpus 注册表关键字设置 RSS CPU 的最大数目。 MaxNumRssCpus 值为 DWORD 类型。 如果不存在,NDIS 将使用默认值 4。 此注册表关键字也适用于更高版本的 Windows Server。
配置 RSS 处理器的最佳做法
若要避免可用硬件接收队列数小于 RSS CPU 数的复杂且不切实际的情况,请不要设置高于 16 的 MaxNumRssCpus 值。
用于 RSS 的 CPU 数也受设置 RSS 基 CPU 数后留下的核心处理器总数的限制。 例如,如果将四核计算机上的 RSS CPU 的最大数目设置为 6,则网络驱动程序堆栈最多使用 4 个 RSS CPU。 如果还将 RSS 基 CPU 数设置为 1,则网络驱动程序堆栈最多使用 3 个 CPU(CPU 数字 1、2 和 3)。
计算机用于 RSS 的 CPU 数是静态的,在运行时不会更改。 如果更改 MaxNumRssCpus 注册表值,请重新启动计算机,使更改生效。