bri*_*ist 12 networking windows vmware-esxi failovercluster
我们遇到了一个 Windows 故障转移集群中断的事件。验尸结果显示该节点已被“删除”,如本文所述。
我们最近才将该集群完全迁移到我们的 VMware 环境中,看来上述事件可能是导致中断的原因。
与此相关的 VMware KB 文章讨论了增加Small Rx Buffers
和Rx Ring #1
设置,但警告说,增加太多可能会大大增加主机上的内存开销。
在Network Interface\Packets Received Discarded
对我们约 150 个 Windows VM的性能计数器进行审计后,16 个来宾中的 22 个 vNIC 有一些丢弃的数据包。
一个足够小的数量,我不担心使用额外的内存对主机造成负担,但我想了解这些设置如何使用内存以及内存来自哪里。
我们正在尝试确定在受影响的 VM 上将这些设置为最大值是否存在缺陷,而不是 VMware 主机内存使用情况。例如,如果我们增加了来宾中池内存耗尽的风险,我们更倾向于从小处着手。
这些问题中的一些(可能是全部)可能不是 VMware 或虚拟化所特有的。
缓冲区数量和环大小之间有什么关系?
它们是相关的,但又是独立的。rx“环”是指内存中的一组缓冲区,用作队列将传入的网络数据包从主机(管理程序)传递到来宾(Windows VM)。网络驱动程序在来宾中保留内存,并将其映射到主机内存中。
当新的网络数据包进入主机时,它们会被放置在环中的下一个可用缓冲区中。然后,主机在来宾中触发 IRQ,来宾驱动程序通过从环中取出数据包并将其分派到来宾 OS 的网络堆栈来响应该 IRQ,这可能会将其发送到打算接收它的来宾应用程序。假设数据包进来的速度足够慢,并且来宾驱动程序处理它们的速度足够快,那么环中应该总是有一个空闲插槽。但是,如果数据包进入太快,或者来宾处理它们的速度太慢,环可能会变满,并且数据包可能会被丢弃(如您所见)。
增加戒指尺寸可以帮助缓解这个问题。如果你增加它,环中一次将有更多的插槽可用。这进入第二个设置,“Small Rx Buffers”,这是可用于填充环中插槽的可用缓冲区总量。需要至少与环中的插槽一样多的缓冲区。通常你想要更多。当来宾从环中取出缓冲区以提供给来宾网络堆栈时,它可能并不总是立即返回给驱动程序。如果发生这种情况,有空闲缓冲区来填充环意味着您可以在不丢失数据包的情况下运行更长时间。
Rx Ring #1 / Small Rx Buffers 用于非巨型帧。如果您有默认的 NIC 配置,那将是唯一要使用的环。
如何计算这些设置的给定值所使用的内存量?
假设您在谈论非巨型帧,则每个缓冲区都需要足够大以存储整个网络数据包,大约 1.5kb。因此,如果您有 8192 个可用缓冲区,则将使用 12MB。更大的环也将使用更多的内存,但描述符很小(字节),因此您真正需要担心的是缓冲区。
因为这些设置在来宾操作系统中的 NIC 本身上,所以我假设它们是驱动程序设置。这让我认为使用的 RAM 可能是分页或非分页池。
是的,它是一个非分页池。如果环形缓冲区被分页,则很可能会导致在缓冲区被分页返回时丢弃数据包。
有没有我在这里没有考虑到的问题?
我不确定这与您的情况有关,但值得注意的是,更大的环会增加网络 rx 路径的缓存占用空间。在微基准测试中,您会看到较大的环通常会影响性能。也就是说,在现实生活中的应用程序中,如果数据包被丢弃,这通常比速度爆发中的小幅性能提升要大得多。
资料来源:我在 VMware 工作。
归档时间: |
|
查看次数: |
8572 次 |
最近记录: |