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


23

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

我们希望:

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

现在X,Y和Z是什么?

我们一次又一次地看到,当出现性能问题时,问题不在于我们的应用程序,而在于虚拟化环境。例如,另一个虚拟机使用大量的CPU,内存或实际存储磁盘的SAN,除了我们的应用程序外,它们还会大量使用。我们目前无法证明或反驳。

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

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

CPU,内存和DISK I / O通常存在3个性能问题区域。

中央处理器

在例如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,从而可靠地检测出膨胀。一个人可以检测到气球膨胀的某些情况,但是在其他情况下,气球膨胀是有效的,但这种方法无法检测到。

磁盘I / O

我想我们可以随时间绘制磁盘读取和写入的数量,读取和写入的字节数量以及IO等待百分比的图形。但这是否可以为我们提供磁盘I / O的准确情况?我想如果在使用所有CPU的另一台VM上运行一个比特币挖矿机,即使底层SAN提供了完全相同的性能,我们的IO等待%也会增加,这仅仅是因为我们的CPU资源下降,因此IO等待(以%表示)。

因此,总而言之,我们可以使用哪种语言来描述例如VMware管理员,以可移植且可衡量的方式来描述我们所需的性能?


您的应用程序的实际要求是什么?到目前为止,您所描述的内容不足以让我准确地评估环境中的资源需求,并且我精通VMware。您的目标受众将面临更加困难的时期。在实践中,我最终无视供应商要求,并基于历史指标和使用vRealize Operations Manager的观察来度量/调整VM的大小。
ewwhite

1
@ewwhite:无论如何我都不是硬件专家。但是,我要具体说一下,它可以在具有8GB RAM 的Core i7-5820K上正常运行。磁盘ca. 2015年还可以,SSD更好(如果需要,我可以在这里更具体地介绍)。我们需要80GB的可用磁盘空间。
Peter V.Mørch17年

2
作为管理员,我会说:“我需要分配多少个内核,实际的RAM需求是什么,从IOP和吞吐量的角度来看存储需求是什么,存储的增长率是多少,可以吗?进行精简配置等?”
ewwhite

从性能角度来看,您的应用程序需要什么?您的应用程序有基准吗?说"It runs fine with x, y, and z"的不够精确。您需要能够准确地告诉客户您的应用程序需要什么。如果他们为您提供了这些资源,并且应用程序运行不佳,那么问题就不是了"What do we need from a resource perspective?",而是"Why is it performing poorly even though the proper resources have been allocated?"
joeqwerty

1
@ewwhite:“已解决”?否。我仍然没有25个字的建议可以告诉VMware管理员,然后可以测试并知道我们将获得可预测的性能,因为如您所知,这取决于“情况”。但是,我已经接受了您的回答,因为我现在认为不可能达到如此精确和可衡量的要求,并且您的信息对讲正确的语言有很大帮助。将来,我将建议我们采用“如果您想对性能进行故障排除,我们至少需要查看对您的vCenter的访问”路由。
彼得五世·莫希

Answers:


23
  • 严重的是,大多数VMware管理员并不擅长于此:对资源管理的了解不多,通常没有Linux知识(这会有所帮助)并且缺乏时间带宽。我发现大多数内部管理员都很难维护深入的虚拟化知识。

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

  • 大多数VMware环境都不理想:集群设计不佳,资源计划不正确,存储不合格(例如Synology NAS),HA配置错误,没有监视或打补丁。

  • 作为一个组织,VMware使我们失败了:他们在传播最新信息和推广最佳实践方面尤其不利。尽管流程和设计已随时间变化,但对常见问题的基本搜索还是从2009年版本和更早版本的VMware生成结果。

所有这些都会对您不利。

您应该确定解决方案的实际要求。能够准确地声明您的设备需要:2个vCPU,8GB RAM和500个IOP的存储性能对像我这样的人来说将有很大的帮助

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

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


合适大小的VM的示例:

适用于300个用户的组织的Exchange服务器。

  • 我们有6周的工作量/压力热图与时间的关系。
  • 6个vCPU使我们处于压力区之上,并留有峰值的缓冲空间。
  • 32GB RAM使我们处于压力值之上,但并非超出实际需要的数量。

在此处输入图片说明

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

在此处输入图片说明


VM资源监视示例。

良好:-VM大小合适。-CPU在整个集群中的使用量过大,但是我们没有遇到争用。

在此处输入图片说明

不良:

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

在此处输入图片说明


2
谢谢,ewwhite的回答。为争辩起见,假设一个客户在以下情况下运行良好:2个vCPU,8GB RAM和500 IOPs存储性能(根据您的回答)。根据VMware管理员的说法,在另一个客户站点,我们要求得到同样的东西并得到它。但是,2vCPU与其他17个CPU饥饿的VM共享,并且8GB RAM也迅速增加。我不太了解VM磁盘,因此可以说我们实际上已经了解了。我们的应用程序在这两个ESXi环境中的第一个中表现出色,而在另一个环境中则表现非常差。我如何衡量虚拟机内部的差异?
Peter V.Mørch17年

1
您可以在VM顶部监视“ CPU窃取 ”,以查看是否过度使用了CPU。对于RAM膨胀/交换,除了性能差之外,很难从VM内部分辨出来。但是,您可以要求查看VM的vCenter和资源。参见上面的例子。
ewwhite

1
我将研究CPU窃取。有时,我们有时最终还是要让VMware管理员指责我们的应用程序,而我们指责缓慢的VMware环境。但是,我们通常甚至没有查看对vSphere的访问权限,因此在其他安装环境中正常运行时,很难进行故障排除。我想一种方法可能是:“如果您想让我们对性能进行故障排除,我们至少需要查看对您的vCenter的访问权限”
Peter V.Mørch17年

3
大多数VMware管理员甚至都不知道如何阅读这些内容。我花了很多时间清理他们。因此,作为供应商,很难要求访问或深入了解其设置。但是我认为最好是巩固您的需求然后执行。尽管我通常不建议您设置保留,但是如果您的应用程序很关键,那么这样做可能很有意义。或至少设置“共享优先级”。该应用程序做什么?
ewwhite

1
你们是否考虑过将其作为具有推荐配置的中小型和大型VMware设备发布?
ewwhite
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.