Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有人为构建服务器测试过虚拟机性能吗?_C++_Python_Build_Automation_Vmware - Fatal编程技术网

C++ 有人为构建服务器测试过虚拟机性能吗?

C++ 有人为构建服务器测试过虚拟机性能吗?,c++,python,build,automation,vmware,C++,Python,Build,Automation,Vmware,我们一直在尝试使用虚拟机构建服务器。我们的构建服务器都运行WinXP32,我们将它们托管在运行Ubuntu 9.10的VMWare Server 2.0上。我们构建了C、C++、Python包和其他各种部署任务(安装程序、7Z文件、档案等)的混合。使用VMWare托管的构建服务器进行管理非常棒。我们可以移动它们,在一个8核的大盒子上共享系统资源,通过web界面远程访问系统,基本上可以更好地管理事情 但问题是,与使用物理机器相比,性能似乎从差到差不等,具体取决于哪一天。事实证明,这非常令人沮丧。有

我们一直在尝试使用虚拟机构建服务器。我们的构建服务器都运行WinXP32,我们将它们托管在运行Ubuntu 9.10的VMWare Server 2.0上。我们构建了C、C++、Python包和其他各种部署任务(安装程序、7Z文件、档案等)的混合。使用VMWare托管的构建服务器进行管理非常棒。我们可以移动它们,在一个8核的大盒子上共享系统资源,通过web界面远程访问系统,基本上可以更好地管理事情

但问题是,与使用物理机器相比,性能似乎从差到差不等,具体取决于哪一天。事实证明,这非常令人沮丧。有时主机的系统负载将超过20,有时低于1。这似乎不是基于系统上实际完成了多少工作。我怀疑系统中存在瓶颈,但我似乎不知道它是什么。(最新的怀疑是I/O,但我们有一个专用的1TB 7200RPM SATA 2驱动器,带有32MB的缓存,除了虚拟机之外什么都不做。对于1-2台机器似乎足够了。所有其他规格似乎也足够了。8GB RAM,每个虚拟机2GB,8个核,每个虚拟机1个)

所以在用尽了我所能想到的一切之后,我想转向Stack Overflow社区

  • 是否有人在虚拟机中运行或看到其他人运行软件构建性能基准测试
  • 相对于物理系统,我们应该期望什么
  • 我们要放弃多少表演
  • 人们正在使用哪些硬件/vm服务器配置

任何帮助都将不胜感激。

磁盘IO在这里肯定是个问题,当您使用单个磁盘轴进行备份时,您无法执行任何大量的磁盘IO活动。单个SATA驱动器上的32MB缓存将被您的主机和几个来宾操作系统饱和。如果您查看Ubuntu主机操作系统中的磁盘队列长度计数器,您应该会发现它很高(在这个系统上,任何时间长度超过1的2个驱动器都意味着有东西在等待该磁盘)

当我为虚拟机调整基础架构时,我通常认为平均每个虚拟机的IOPS为30-50,这适用于不经常使用磁盘子系统的系统。对于不需要大量IO活动的系统,您可以稍微降低一点,但构建系统的IO模式将严重偏向于大量非常随机的相当小的读取。为了使问题更加复杂,您需要同时构建大量虚拟机,这将导致对磁盘的争夺。总体磁盘带宽可能不是一个大问题(当IO模式完全连续时,SATA驱动器可能会推动70-100毫克/秒),但当文件很小且分散时,您的IO会受到主轴限制,在7.2k SATA上约为每秒70-100 IO。运行2型虚拟机监控程序(如VMware Server)的主机操作系统只有一个客户机,在轻负载情况下可能会遇到这种情况

我的建议是构建一个RAID 10阵列,该阵列具有更小、更快的驱动器。10k SAS驱动器每台可提供100-150 IOPs,因此一组4个驱动器可在加满前处理600次读取IOPs和300次写入IOPs。如果要将虚拟机文件放在RAID阵列上,还应确保为托管VMDK的驱动器以及来宾操作系统中的虚拟机提供支持。对于这样的工作负载,磁盘性能将提高20-30%。避免使用RAID 5由于这样的原因,空间很便宜,RAID 5的写惩罚意味着您需要RAID 5包中的4个驱动器才能达到单个驱动器的写性能

我要补充的另一点是,就性能而言,VMware Server并不是一个很好的虚拟机监控程序,如果可能的话,可以迁移到类型1虚拟机监控程序(如ESXi v4,它也是免费的)。设置并不是一件小事,主机操作系统也会完全丢失,这可能是一个问题,但您会看到整个系统都有更好的IO性能,特别是在磁盘和网络流量方面

编辑以回应您的评论。
1)查看现有Ubuntu主机是否存在问题。
我知道您已经尝试过dstat,我认为它没有提供足够的细节来理解发生了什么,但我不熟悉如何使用它,所以我可能是错的。Iostat会让你很好地了解正在发生的事情——这篇关于使用Iostat的文章将帮助你更好地了解实际的IO模式如何影响磁盘。avgrq sz和avgwq sz是排队请求数量的原始指示器。高数字通常是不好的,但实际坏的情况会因磁盘类型和RAID几何结构而异。您最终感兴趣的是查看您的磁盘IO在队列中花费的时间是否比实际得到服务的时间多。计算
(await svctim)/await*100
可以真正告诉您磁盘是否难以跟上50%以上的速度,并且IO花费的时间与磁盘服务的排队时间一样长,如果接近100%,则磁盘会完全崩溃。如果您确实发现主机实际上没有压力,而VMware Server实际上只是很糟糕(很可能是这样,我从未在Linux平台上使用过它),那么在使用ESXi之前,您可能希望尝试VirtualBox之类的替代方案

2)了解您需要什么。

在具有良好\可接受性能的系统上对典型构建的IO要求进行基线设置-在Windows上查看IOPS计数器-磁盘读取/秒和磁盘写入/秒计数器,并确保平均队列长度为-我猜您的单个驱动器是一个大问题-尤其是在运行多个构建的情况下…您尝试过运行一些吗性能监视要查看常见的可疑问题吗?我在主机和客户端上尝试了性能监视工具。在阴间