如何向 VMware 管理员描述我们应用程序的 VMware 性能要求?

Pet*_*rch 23 virtualization performance vmware-esxi

通常,我们现场安装的基于 debian 稳定版的应用程序在虚拟机中运行 - 通常在 VMware ESXi 中。在一般情况下,我们无法了解或影响他们的虚拟化环境,也无法访问例如 VMware vCenter 客户端或等效物。我在这里重点介绍 VMware,因为这是迄今为止我们看到的最常见的。

我们想:

  • 告诉客户的 VMware 管理员:您可以在例如您的 VMware ESX 环境中运行我们的应用程序,只要它满足性能标准 X、Y 和 Z。
  • 能够确定标准 X、Y 和 Z 实际上是否连续满足(例如现在也是),即使是在运行系统上(我们不能停止我们的应用程序并运行基准测试,并且初始基准测试是不够的,因为性能在虚拟环境随时间变化)。
  • 相信如果满足标准 X、Y 和 Z,我们将有足够的虚拟硬件资源来运行我们的应用程序并获得令人满意的性能。

现在什么是 X、Y 和 Z?

我们一次又一次地看到,当出现性能问题时,问题不在于我们的应用程序,而在于虚拟化环境。例如,另一台虚拟机使用大量 CPU、内存或实际存储磁盘的 SAN 被我们的应用程序以外的其他东西大量使用。我们目前无法证明或反驳这一点。

从理论上讲,有时我们的应用程序也可能很慢...... ;-)

如何确定我们性能问题的根本原因:虚拟环境还是我们的应用程序?

性能问题通常有 3 个方面:CPU、内存和磁盘 I/O。

中央处理器

例如,在 VMware 中,管理员可以指定预留和限制,以 MHz 表示,但是例如,一台 ESX 主机上的 512MHz 与另一台 ESX 主机上的 512MHz 完全相同,可能在完全不同的 ESX 集群中?

我们如何衡量我们是否真的得到了它?当我们的应用程序运行时,我们可能会看到我们在 4 个 CPU 上的 CPU 利用率为 212%。这是因为我们的应用程序做了很多事情,还是因为同一主机上的另一个 VM 正在运行 CPU 密集型任务并使用所有 CPU?

记忆(膨胀?)

如果我们要求例如 16GB RAM,这通常是配置的,但由于膨胀,我们实际上只得到 4GB,而且令人惊讶的是,我们的应用程序性能很差。

人们可以向 VMware 工具询问当前的膨胀情况,但我们发现它经常撒谎(或者至少是不准确的)。我们已经看到操作系统认为总 RAM 为 16GB,所有进程的驻留内存 (RSS) 总和为 4GB RAM,但只有 2GB RAM 可用的示例,即使 VMware 工具告诉我们有 0 膨胀: -(

此外,仅将 RSS 添加在一起是无效的,因为很容易共享 RAM,例如写时复制内存,因此 512MB + 512MB 不一定意味着 1GB,但可能意味着更少。因此,不能简单地从所有进程中减去 RSS 来衡量应该有多少 RAM 可用,从而可靠地检测膨胀。可以检测到一些气球膨胀的情况,但还有其他情况下气球有效,但无法通过这种方法检测到。

磁盘输入/输出

我想我们可以绘制随时间变化的磁盘读取和写入次数、读取和写入的字节数以及 IO 等待百分比。但这会给我们提供磁盘 I/O 的准确图片吗?我想如果有一个比特币矿工在另一个使用所有 CPU 的 VM 中运行,我们的 IO 等待百分比会上升,即使底层 SAN 提供完全相同的性能,仅仅是因为我们的 CPU 资源下降,因此 IO 等待(以 % 衡量)上升。

总而言之,我们可以使用什么语言以可移植和可衡量的方式向例如 VMware 管理员描述我们需要什么性能?

eww*_*ite 23

  • 说真的,大多数 VMware 管理员并不擅长这个:对资源管理的理解很差,通常没有 Linux 知识(它有帮助)和缺乏时间带宽。我发现大多数内部管理员都很难保持深入的虚拟化知识。

  • 幸运的是,有一本书你可以阅读

  • 大多数 VMware 环境都不是很好:糟糕的集群设计、糟糕的资源规划、不合标准的存储(即 Synology NAS)、错误配置的 HA、没有监控或修补。

  • VMware 作为一个组织让我们失望:他们在传播最新信息和推广最佳实践方面尤其糟糕。尽管流程和设计随着时间的推移发生了变化,但对常见问题的基本搜索会生成 2009 年及更早版本的 VMware 的结果。

所有这些事情都会对你不利。

您应该确定解决方案的真正要求。能够准确说明您的设备需要:2 个 vCPU、8GB RAM 和 500 IOPs 存储性能对我这样的人来说意义重大。

另一种方法是观察健康或理想的环境,并从那里推断指标。

您已经描述了某些部署的问题。有哪些问题和瓶颈?


大小合适的 VM 的示例:

一个有 300 个用户的组织的 Exchange 服务器。

  • 我们有 6 周的工作量/压力热图与时间的关系。
  • 6 个 vCPU 使我们保持在压力区之上,并为尖峰提供缓冲空间。
  • 32GB RAM 让我们保持在压力值之上,但在真正需要的之上并不是不合理的数量。

在此处输入图片说明

  • 我可以回收几 GB 的 RAM 和一个 vCPU,但总的来说,这是一个高效的 VM。
  • 在理想条件下对您的应用程序进行这种类型的监控是明智的。

在此处输入图片说明


虚拟机资源监控示例。

好一点: - VM 大小合适。- CPU 跨集群过度使用,但我们没有遇到争用。

在此处输入图片说明

坏话:

  • VM 永远不会获得它配置的所有 RAM。
  • VM 已经在交换 RAM。
  • CPU配置过度。

在此处输入图片说明

  • 大多数 VMware 管理员甚至不知道如何阅读这些内容。我花了很多时间在他们之后清理。因此,作为供应商,很难要求访问或了解他们的设置。但我认为最好先巩固您的要求,然后再执行。虽然我通常不建议设置预留,但如果您的应用程序很重要,这可能是有意义的。或者至少,设置“股票优先级”。应用程序有什么作用? (3认同)
  • 谢谢,ewwhite 的回答。为了便于论证,假设在一个客户中,它运行良好:2 个 vCPU、8GB RAM 和 500 IOPs 存储性能(来自您的回答)。根据 VMware 管理员的说法,在另一个客户站点,我们提出了同样的要求并得到了解决。但是,2vCPU 与其他 17 个 CPU 需求很大的 VM 共享,并且 8GB RAM 也膨胀了。我不太了解 VM 磁盘,所以可以说我们实际上得到了它。我们的应用程序在这两个 ESXi 环境中的第一个环境中表现出色,而在另一个环境中表现不佳。我如何衡量与 VM 内部的差异? (2认同)