作为一种最佳实践,我在开发中使用虚拟机 - 我想尽可能地优化我的虚拟机。我只安装了Server 2003、IIS和Visual Studio 2008。
您如何优化您的开发虚拟机,例如关闭哪些服务等等...
作为一种最佳实践,我在开发中使用虚拟机 - 我想尽可能地优化我的虚拟机。我只安装了Server 2003、IIS和Visual Studio 2008。
您如何优化您的开发虚拟机,例如关闭哪些服务等等...
通常情况下,并不存在一套普遍“正确”或“最佳”的建议。然而,以下是我在开发虚拟环境时使用的一些成功经验。
确定每个虚拟机器需要多少内存以及您的主机需要多少内存(如果您同时在主机上运行其他程序)。将所有同时运行的虚拟机所需的内存要求总和加起来,并确定最大虚拟机RAM负载并加入主机负载。我建议至少有512MB的“缓冲区”。
例如,我需要大约768MB用于主机操作系统(WinXP Pro SP3),以及在我的客户操作系统(装有Visual Studio 2005/2008和SQL Server Developers Edition的WinXP Pro SP3)中需要大约1GB。
1024MB + 768MB + 512MB = 2.3GB个人而言,由于目前内存价格非常便宜,我直接将32位系统扩展到了4GB(可寻址的为3.5GB)。
使用一个与操作系统磁盘分开的磁盘来运行虚拟机映像,这样可以极大地减少主机和虚拟机之间的磁盘I/O冲突。
注意:使用外部硬盘作为磁盘分离可以帮助,但要小心——Firewire和USB的延迟比IDE、SATA或SCSI要高!虽然USB 2.0和Firewire接口具有足够的带宽以实现最大磁盘吞吐量,但它们会给每个操作添加大量延迟。在高磁盘事务、小文件访问等情况下(如C++编译),这变得非常显著。我还没有机会对eSATA运行一些测试,看看它在内部SATA访问时间方面的表现如何。
在开发过程中,特别是在像C++这样的语言中进行编译时,会出现相当多的随机磁盘访问。为虚拟机使用7200 RPM硬盘而不是5400RPM硬盘可以减少访问时间,因此减少编译时间。升级到10000RPM或高端SSD可以进一步缩短这些时间。回报递减点取决于您环境中的特定磁盘访问负载/模式。
告诉您的杀毒软件忽略虚拟机目录或.vmdk文件扩展名,以便它不会不断扫描虚拟机磁盘。
如果同时运行多个虚拟机或在主机和客户操作系统中都进行工作,请至少为多核/处理器机器保存1个CPU供主机操作系统使用。 例如,如果您正在运行两个虚拟机并且在主机操作系统中没有进行任何工作,则具有单核心虚拟机的双核处理器主机可能最适合您。
如果您运行单个虚拟机并且在主机操作系统上没有工作,则运行双处理器虚拟机可能会有所帮助,如果虚拟机应用程序可以使用第二个处理器。
如果您正在运行两个虚拟机,其中一个是单处理器,另一个是双处理器,则您可能需要运行四核系统。
VMware注意事项(未经其他虚拟化应用程序确认):如果为虚拟机分配多个处理器,则它将等待两个处理器可用,并且即使不使用它们也会保留它们。这可能会导致虚拟机之间或虚拟机与主机之间发生显着争用。
确保您分配了足够的RAM以满足虚拟机的需求
除非确实需要,否则不要使用快照。维护基于快照的虚拟机文件系统会产生显着的磁盘I/O惩罚。
例如:
考虑一下在虚拟机中不运行反病毒、反间谍软件或防火墙软件。您需要权衡安全与速度之间的利弊。对于许多人来说,如果他们感染了病毒,这并不是一个问题,他们只需还原先前的副本或快照即可。而对于其他人来说,潜在的敏感信息泄露需要在虚拟机内实施严格的安全策略。
我可以说,在虚拟机中不运行反病毒或防火墙软件可能是Windows虚拟机通常比它们的物理主机操作系统更加“灵敏”的最重要原因。
不幸的是,在虚拟机配置中有三个地方可能会发生文件碎片:在Guest OS文件系统内部,在虚拟机文件(例如vmdk)表示的VM内部,在实际物理磁盘上的虚拟机文件中。您整理每个地方的顺序都很重要。
我总是在我的Windows XP虚拟机上禁用“系统还原”功能。
请勿在我的病毒防护程序中对我的构建文件夹进行实时扫描。
以下是我在虚拟机中关闭的服务列表:
在使用VMware Server时,我会禁用Windows页面文件。磁盘IO是VMware Server的最弱环节,而将虚拟化的RAM分页到虚拟化的磁盘文件中更是糟糕。给你的虚拟机足够的RAM,这样就可以很好地工作。
此外,并非所有的虚拟化解决方案在不同领域表现都相同。VMware在VM映像的稳定性和可移植性方面表现出色,但如果你有时间,可以尝试一些其他的解决方案。我发现更好的磁盘IO性能可以带来更好的整体体验,因此我放弃了VMware服务器更好的CPU性能(以及整体稳定性),转而选择了VirtualBox更好的IO性能。非免费的VMware版本可能会更好,但我不确定。
我发现将磁盘映像放在单独的驱动器上并不能带来太多好处。很多人会争论这一点,它可能会根据主机上正在进行的其他操作而略微提高性能,但对我来说效果不大。我也尝试过使用原始磁盘,但效果不如我所愿。
真正影响IO性能的一件事是在快照处于活动状态时运行。大多数实现都使用写时复制策略,你可以预期磁盘性能下降20%。
两个固态硬盘,一个用于主机操作系统,另一个用于虚拟机。
我最近建立了一个虚拟机,在安装之前就开始通过使用Nlite和 Windows Update Downloader 进行优化。NLite允许您剥离所有不需要的组件(如mspaint,pinball,french等),应用所有窗口更新,并调整注册表和服务设置。因此,例如,您可以在第一次启动时禁用系统索引器。如果您正在使用Vista或2008年版本,则还可以使用Vlite。
完全透明:我在Quest工作,但没有参与此工具的开发。