作为最佳实践,我使用虚拟机进行开发——我想尽可能地优化我的虚拟机。我只安装了服务器 2003、IIS 和 Visual Studio 2008。您如何优化您的开发虚拟机,即您关闭了哪些服务等...
10 回答
与往常一样,没有一组普遍“正确”或“最佳”的建议。但是,这些是我的开发虚拟环境中运行良好的一些项目。
硬件提示
满满的回忆!
确定每台虚拟机需要多少内存以及主机需要多少内存(如果您同时在主机上运行)。将同时运行的所有 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 非常便宜,我只是用 4GB(3.5 可寻址)将我的 32 位系统最大化。
为您的操作系统和虚拟机提供单独的主轴
有一个与您的操作系统磁盘分开的磁盘来运行您的虚拟机映像。这大大减少了 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)进行碎片整理
- 第三,对保存虚拟机文件的主机上的文件系统进行碎片整理(即在主机操作系统上运行磁盘碎片整理)
我关闭了文件系统索引器,节省了磁盘空间和 CPU 时间。
我总是在我的 Windows XP 虚拟 PC 上禁用“系统还原”。
从我的病毒防护中排除我的构建文件夹以进行访问扫描
这些是我在我的虚拟机中关闭的服务
- 关闭关闭事件跟踪器
- 关闭 c:\ 上的索引
- 错误报告服务已关闭
- 智能卡访问已关闭
- TCP/IP NetBIOS 助手
- 远程桌面帮助会话管理器
- 远程注册表
- 不间断电源供应
- 视窗音频
- 无线零配置
将磁盘映像放在外部 HDD(甚至 USB)上可以提高性能(特别是笔记本电脑)
这里有一篇关于虚拟机性能的好文章
它是专门针对 Sharepoint 虚拟机编写的,但也有很多普遍适用的技巧。
我在使用 VMware Server 时禁用了 Windows 页面文件。磁盘 IO 是与 VMWare Server 最薄弱的环节,没有什么比将虚拟化 RAM 分页到虚拟化磁盘文件更糟糕的了。给你的虚拟机足够的内存,这很好用。
此外,并非所有虚拟化解决方案在不同领域的表现都相同。VMware 非常适合 VM 映像的稳定性和移动性,但如果有时间,您可能想尝试其他一些解决方案。我发现更好的磁盘 IO 性能给了我更好的整体体验,所以我用 VMware 服务器更好的 CPU 性能(不幸的是,整体稳定性)换取了 VirtualBox 更好的 IO 性能。非免费的 VMware 版本可能要好得多,但我不知道。
我发现将磁盘映像放在单独的驱动器上并没有给您带来太多收益。很多人会争论这一点,它可以给你更多的性能,这取决于主机的其他情况,但对我来说这是微不足道的。我也尝试使用原始磁盘,但效果不如我希望的那样。
真正扼杀 IO 性能的一件事是在快照处于活动状态时运行。这在大多数实现中使用了写时复制策略,您可以预期磁盘性能会下降 20%。
我最近构建了一个 VM,并在使用Nlite和Windows Update Downloader进行安装之前就开始对其进行优化。NLite 允许您删除所有不需要的组件(mspaint、pinball、french 等),应用所有 Windows 更新,并调整注册表和服务设置。例如,您可以在首次启动时禁用系统索引器。如果您使用 Vista 或 2008 Vlite 也可用。
两个 SSD,一个用于主机的操作系统,一个用于 VM。
您可以使用 Quest 的这个免费工具来优化虚拟桌面。它关闭了一堆东西。
完全披露:我为 Quest 工作,但没有使用此工具。