优化开发虚拟机

Posted

技术标签:

【中文标题】优化开发虚拟机【英文标题】:Optimize development Virtual Machine 【发布时间】:2010-10-12 15:17:35 【问题描述】:

作为最佳实践,我使用虚拟机进行开发 - 我想尽可能地优化我的虚拟机。我只安装了服务器 2003、IIS 和 Visual Studio 2008。 您如何优化您的开发虚拟机,即您关闭了哪些服务等...

【问题讨论】:

为什么你宁愿在虚拟机上开发而不是在你的实际机器上开发?我只是问,因为我正在考虑做同样的事情,但我不确定利弊。 【参考方案1】:

您可以使用 Quest 提供的这个免费工具来优化虚拟桌面。它关闭了一堆东西。

http://communities.quest.com/community/vworkspace/blog/2011/09/08/introducing-the-free-quest-vworkspace-desktop-optimizer

完全披露:我为 Quest 工作,但没有使用此工具。

【讨论】:

【参考方案2】:

两个 SSD,一个用于主机操作系统,一个用于 VM。

【讨论】:

【参考方案3】:

与往常一样,没有一组推荐是普遍“正确”或“最佳”的。但是,这些是一些对我的开发虚拟环境效果很好的项目。

硬件提示


内存充足!

确定每台虚拟机需要多少内存以及主机需要多少内存(如果您同时在主机上运行一些东西)。将同时运行的所有 VM 的内存需求总量相加,确定最大 VM RAM 负载并添加主机负载。我建议至少有 512MB 的“填充”

例如,我需要大约 768MB 的主机操作系统 (WinXP Pro SP3) 和大约 1GB 的客户操作系统(WinXP Pro SP3 w/Visual Studio 2005/2008 和 SQL Server Developers Edition)。 1024MB + 768MB + 512MB = 2.3GB

就个人而言,由于目前 RAM 非常便宜,我只是将我的 32 位系统最大化为 4GB(3.5 可寻址)。

为您的操作系统和虚拟机提供单独的主轴

拥有一个独立于您的操作系统磁盘的磁盘来运行您的虚拟机映像。这大大减少了 Host 和 Guest 之间的磁盘 I/O 争用。

注意:使用外部 HDD 将主轴分离会有所帮助,但请注意 - Firewire 和 USB 的延迟比 IDE、SATA 或 SCSI 高!虽然 USB 2.0 和 Firewire 接口的带宽足以实现最大磁盘吞吐量,但它们确实为每个操作增加了大量延迟。这在高磁盘事务、小文件访问情况(如 C++ 编译)中变得非常重要。我还没有机会在 eSATA 上运行一些测试,看看它与内部 SATA 访问时间相比表现如何。

使用访问时间短的磁盘

在开发过程中会发生相当多的随机磁盘访问,尤其是在 C++ 等语言的编译过程中。为您的 VM 使用 7200 RPM 而不是 5400 RPM 驱动器可减少访问时间,从而减少编译时间。使用 10,000RPM 或高端 SSD 可进一步减少这些时间。收益递减点取决于您环境的特定磁盘访问负载/模式。

主机提示


禁用虚拟机文件病毒扫描

告诉您的病毒扫描程序忽略您的虚拟机目录或 .vmdk 文件扩展名,这样它就不会不断扫描您的虚拟机磁盘。

避免 CPU 争用

如果您一次运行多个虚拟机,或者您同时在主机和来宾操作系统中工作,则在多核/proc 机器上为主机操作系统节省至少 1 个 CPU。 例如,如果您正在运行两个虚拟机并且在主机操作系统中不做任何工作,那么主机上的双核处理器与单核虚拟机可能会为您提供最好的服务。

如果您正在运行单个虚拟机并且在主机操作系统上没有工作,那么如果虚拟机应用程序可以使用第二个处理器,那么运行双处理器 VM 可能会有所帮助。

如果您正在运行两台虚拟机,一台是单进程,另一台是双进程,您可能需要运行四核系统。

VMware 注意(未确认用于其他虚拟化应用程序):如果您为虚拟机提供多个处理器,它会等待两个处理器都可用,即使不使用也会保留它们他们。这可能会导致虚拟机之间或虚拟机与主机之间的严重争用。

客人小贴士


分配足够的内存

确保分配足够的 RAM 以满足虚拟机的需求

避免使用快照

除非确实需要,否则不要使用快照。维护基于快照的虚拟机文件系统会带来很大的磁盘 I/O 损失。

不要运行不必要的服务

如:

索引 系统还原 错误报告 无线零配置

不要运行安全软件

考虑不在您的 VM 中运行防病毒、反间谍软件或防火墙软件。您必须在这里权衡安全性与速度的优缺点。对于许多人来说,如果他们感染了病毒,这不是问题,他们只需恢复以前的副本或快照。对于其他人来说,敏感信息的潜在暴露需要严格的安全策略,即使在 VM 内也是如此。

我会说,在 VM 中不运行防病毒或防火墙软件可能是 Windows 的 VM 经常感觉比其物理主机操作系统对应物“更敏捷”的第一大原因。

碎片整理!

不幸的是,在虚拟机配置中可能会在三个地方出现文件碎片:在客户操作系统的文件系统中、在虚拟机的虚拟机文件(例如 vmdk)表示中以及物理磁盘本身上的虚拟机文件中。您对每个文件进行碎片整理的顺序很重要。

首先,在来宾操作系统中对文件系统进行碎片整理(例如,在来宾操作系统中运行磁盘碎片整理程序或在来宾操作系统中使用 JkDefrag 或 Defraggler 等工具) 其次,使用 vmware-diskmanager 等工具对虚拟机文件(例如 VMDK)进行碎片整理 第三,对保存虚拟机文件的主机上的文件系统进行碎片整理(即在主机操作系统上运行磁盘碎片整理)

【讨论】:

【参考方案4】:

我最近构建了一个虚拟机,并在使用Nlite 和Windows Update Downloader 进行安装之前就开始对其进行优化。 NLite 允许您删除所有不需要的组件(mspaint、pinball、french 等),应用所有 Windows 更新,并调整注册表和服务设置。例如,您可以在首次启动时禁用系统索引器。如果您使用的 Vista 或 2008 Vlite 也可用。

【讨论】:

【参考方案5】:

我在使用 VMware Server 时禁用了 Windows 页面文件。磁盘 IO 是与 VMWare 服务器最薄弱的环节,没有什么比将虚拟化 RAM 分页到虚拟化磁盘文件更糟糕的了。为您的 VM 提供足够的 RAM,这样效果会很好。

此外,并非所有虚拟化解决方案在不同领域的表现都相同。 VMware 非常适合 VM 映像的稳定性和移动性,但如果有时间,您可能想尝试其他一些解决方案。我发现更好的磁盘 IO 性能给了我更好的整体体验,所以我用 VMware 服务器更好的 CPU 性能(不幸的是,整体稳定性)换取了 VirtualBox 更好的 IO 性能。非免费的 VMware 版本可能要好得多,但我不知道。

我发现将磁盘映像放在单独的驱动器上并没有给您带来太多好处。很多人会争论这一点,它可以给你更多的性能,这取决于主机的其他情况,但对我来说这是微不足道的。我也尝试使用原始磁盘,但效果并没有我希望的那么好。

真正影响 IO 性能的一件事是在快照处于活动状态时运行。这在大多数实现中使用了写时复制策略,您可以预期磁盘性能会下降 20%。

【讨论】:

【参考方案6】:

Ixclude my build folder from my virus guard for on access scans

这些是我在虚拟机中关闭的服务

关闭关闭事件跟踪器 关闭 c:\ 上的索引 错误报告服务已关闭 智能卡访问已关闭 TCP/IP NetBios 帮助程序 远程桌面帮助会话管理器 远程注册表 不间断电源 Windows 音频 无线零配置

【讨论】:

【参考方案7】:

将磁盘映像放在外部 HDD(甚至 USB)上可以提高性能(特别是笔记本电脑)

【讨论】:

硬盘速度为一个。大多数笔记本电脑硬盘的转速为 5400 RPM,而大多数外置硬盘的转速为 7200 RPM。也就是说,如果链接不会减慢您的速度。如果您只有 USB 1,它不会更快,但 USB 2、3 或 FireWire 可能会更快。 即使使用类似速度的磁盘(我的笔记本电脑上的内部和外部驱动器都是 7.2K),负载分布提高了整体性能,我从外部 HDD 运行所有代码和 DB,构建时间更快比在内部驱动器上时! [那是USB2,eSata会更好!)【参考方案8】:

有一篇很棒的关于虚拟机性能的文章here

它是专门针对 Sharepoint 虚拟机编写的,但也有很多普遍适用的技巧。

【讨论】:

【参考方案9】:

我关闭文件系统索引器,节省磁盘空间和 CPU 时间。

【讨论】:

我在我安装的每台电脑上都这样做。系统索引器是有史以来最大的时间浪费。【参考方案10】:

我总是在我的 Windows XP 虚拟 PC 上禁用“系统还原”。

【讨论】:

以上是关于优化开发虚拟机的主要内容,如果未能解决你的问题,请参考以下文章

Android内存优化DVM和ART原理初探

如何优化VMWare虚拟机的运行速度?

KVM虚拟机管理及性能优化

Android内存优化Dalvik虚拟机和ART虚拟机对比

kvm虚拟机存储速度

VMWARE 虚拟机配置优化