我在 AWS EC2 (m5.4xlarge) 上运行了 Windows 2019 Server,它在高压力下会丢包(在这种情况下,“高”大约是 10K pps)。带宽完全没问题,数据包很小(每个大约 100 字节,UDP)。
到目前为止,我发现的唯一办法是增加 Amazon Elastic Network Adapter 上的接收缓冲区,我将其最大设置为 8192 - 这样阈值就可以稍微高一点(大约 11.5K pps)。但是,这仍然不够,仍然会出现丢包。
遗憾的是,我没有足够详细的 CPU 指标,但我怀疑一定是 CPU 无法处理清除 NIC 缓冲区或类似问题。我可以从网络方面调整其他内容吗?其他缓冲区或诸如此类;或者我现在应该考虑增加 CPU 功率吗?我还可以/应该在哪里查看?
答案1
这可能会有所帮助:示例
例如,当一个 72 vCPU 实例上有三个 ENI,其中有 2 个 NUMA 节点且启用了超线程时,以下命令会在两个 CPU 之间分散网络负载而不重叠,并完全防止使用核心 0。
Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16
Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14
Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30
还要检查你的 MTU https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html