Performance VMWare ESXi、RHEL、LUKS和网络延迟

Performance VMWare ESXi、RHEL、LUKS和网络延迟,performance,vmware,latency,rhel7,luks,Performance,Vmware,Latency,Rhel7,Luks,我的公司遇到了一个网络性能问题,似乎所有与我们合作的“专家”(VMWare支持、RHEL支持、我们的托管服务提供商)都被难住了 问题是,我们的虚拟机(甚至是驻留在同一物理主机上的虚拟机)之间的网络延迟会增加——高达100倍或更多--具有网络吞吐量。例如,如果没有任何网络负载,延迟(通过ping测量)可能约为0.1ms。开始传输几个100MB的文件,延迟会增长到1ms。在两个虚拟机之间启动一系列(~20左右)并发数据传输,虚拟机之间的延迟可能会增加到10ms以上 这对我们来说是一个巨大的问题,因为

我的公司遇到了一个网络性能问题,似乎所有与我们合作的“专家”(VMWare支持、RHEL支持、我们的托管服务提供商)都被难住了

问题是,我们的虚拟机(甚至是驻留在同一物理主机上的虚拟机)之间的网络延迟会增加——高达100倍或更多--具有网络吞吐量。例如,如果没有任何网络负载,延迟(通过ping测量)可能约为0.1ms。开始传输几个100MB的文件,延迟会增长到1ms。在两个虚拟机之间启动一系列(~20左右)并发数据传输,虚拟机之间的延迟可能会增加到10ms以上

这对我们来说是一个巨大的问题,因为我们的应用服务器虚拟机承载的进程每小时可能会对数据库服务器(不同的虚拟机)发出100万次左右的查询。因此,在每个查询中添加一到两毫秒会大大增加我们的运行时间——有时是预期持续时间的两倍或三倍

我们拥有我认为相当标准的环境:

  • ESXi 6.0u2
  • 4个Dell M620刀片服务器,带有2x Xeon E5-2650v2处理器和128GB RAM
  • SolidFire SAN
我们的基本VM配置包括:

  • RHEL7,最小安装
  • 为/boot、/、/var/log、/var/log/audit、/home、/tmp和swap处的装载点配置了多个LUN
  • 除/boot之外的所有分区都使用LUKS加密(通过LVM)
我们的数据库服务器VM正在运行Postgres 9.4

我们已经尝试了以下方法:

  • 将虚拟NIC从VMNETx3更改为e1000并返回
  • 调整RHEL以太网堆栈设置
  • 对虚拟机使用ESXi的“低延迟”选项
  • 将主机和vCenter从ESX 5.5升级到6.0u2
  • 创建裸体虚拟机(如上所述使用LUKS等进行设置,但没有任何我们的生产服务)以进行测试
  • 将数据存储从SSD SolidFire SAN移动到本地(刀片式)旋转存储
这些都没有改善网络延迟。唯一显示预期(非恶化)延迟的测试是当我们在没有LUKS加密的情况下设置第二对裸骨虚拟机时。不幸的是,我们需要完全加密的分区(我们为其管理密钥),因为我们处理的是受监管的敏感数据

我看不出陆克斯——就其本身而言——在这里应该受到责备。相反,我怀疑运行ESX、我们的主机硬件和/或我们的VM硬件配置的某些组合的LUK是罪魁祸首

我在一个更为脆弱的环境(MacBook Pro、i5、8GB RAM、VMWare Fusion 6.0、Centos7虚拟机,配置类似LVM上的LUKS和相同的测试脚本)中执行了测试,但无法重现延迟问题。无论我在虚拟机之间发送了多少网络流量,延迟都保持在0.4ms左右。这是一台笔记本电脑,上面有很多东西


任何提示/提示/解决方案都将不胜感激

经过仔细检查并将不良虚拟机与性能虚拟机进行比较后,我们发现该问题是高级“延迟敏感度”设置的错误选择

对于性能较差的VM,该值设置为“低”。将设置更改为“正常”并重新启动虚拟机后,延迟降低了约100倍,吞吐量(我们最初没有注意到这也是一个问题)增加了约250倍