百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

【知识库】关于提高VMwareWorkstations运行速度的终极方案

nanshan 2024-12-15 15:51 20 浏览 0 评论

关于VMwareWorkstations(下称:vmw)的运行速度已经成为很多小伙伴入门后需要解决的最重要的问题,没有之一。很多人和我一样在跑通vm后兴奋没几天就发现,如果把vmw当成生产力工具,总是不尽人意,动不动就会瞬间卡顿一下;

我花了半年时间做了各种观察和测试,现在把测试结果、应用建议给各位大神做个汇报,便于你们后期可以有效、有指向性的去处理具体问题:

第一环节:vmw和同门大哥esxi的对决

怀疑vmw慢的原因开始真的像很多人理解的那样,vmw仅仅是一个个人桌面的沙盒容器,主要应用于各种软件测试,慢是天生的。

我为此专门试了一些大厂的esxi的虚拟机,发现人家的产品果然丝滑,于是我就坚定了这个信念,vmw慢一定是因为这是个桌面软件产品,无法和专业的服务器产品比拟,所以人家的同门师兄esxi很丝滑,而Workstations动不动就卡顿。

我就找了一个周末,花了一下午时间把esxi装好了,信心满满的运行虚拟,结果和之前没啥两样,该怎么卡还是怎么卡。

结论:第一环节失败


第二环节:返回WindowsServer,继续装回vmw,在网上寻求他人的解决办法。

翻遍了互联网,提高vmw的运行速度大约有这么几个主流答案:

1、修改vmw的硬件环境,什么打开cpu的虚拟化、设置内存、调整预留空间、设置优先级选项等等…… 【结论:没毛用】

2、把vm的虚拟机磁盘设置到固态硬盘上运行。【结论:是快了,但是还是卡顿】

3、我怀疑vm虚拟磁盘文件,多文件和单文件的效率优势,官方有句话引起我注意——

既然拆分多个文件可能降低大容量磁盘的性能,那我就用单文件。测试完以后效果并不明显,还是随机的卡。

题外话:vm的那种卡顿让人很无语,还不是那种持续的卡顿,而是随机的零点几秒的卡顿,无论你把机器调整的再快,配置给的再高,它运行速度确实会加快,但是该卡还是卡。会给你造成一种错觉:快也是真的快,卡也是真的卡。好像是两条平行线的事情。


第三环节:我在反思这种卡往往在什么情况下出现的多

1、我觉得既然加了配置速度确实快了,但仍然出现的卡顿会不会和显示方面有关,于是我给服务器装了一块显卡,卡顿还是会出现;

2、我又觉得会不会是磁盘格式问题:于是我把vmw所有的磁盘格式都测试了一遍,没有什么惊喜。

3、我又恍惚的怀疑:人家vm根本不卡,会不会是我远程桌面rdp远程桌面没有设置好呢?这个瞬间被我否定,为啥人家阿里云那些大厂虚拟机就那么丝滑。


第三环节:找到了问题的症结

这个问题已经困扰了我半年时间了,我是把vm当生产力工具的,除了几个vm发布网站对外服务,我还把我编程用的工作环境也改成了云模式,每天在哪儿上班,随便找个能远程桌面的电脑,连上我的云桌面,我就能工作。这种模式已经让我舒服的不要不要的,所以我必须要解决这个随机卡顿的问题。

这一天我在做一个压缩包软件开发的时候,灵光一现,认为这一定还是硬盘的问题,vm磁盘文件无论是单文件还是多文件,本质上就是一个或多个压缩包,vm的虚机执行,其实就是读写这些压缩包(虚拟磁盘文件),逻辑想清楚了,就可以验证了……

从上图可以看到,人家大厂磁盘运行是非常稳定的,平平的一根线,波动非常小。

再看看我的——

我的虚拟磁盘跟吃了伟哥一样兴奋,这就是咱们vmw偶尔随机卡顿的原因,不用我再多解释了吧,我们单机磁盘抖动是正常的,但有一个阈值范围,所以我们一般操作单机感觉不到,但虚拟机的虚拟磁盘就没啥范围了,资源宽松它就就快,资源紧张它就等待就卡,这就是造成大幅度抖动的罪魁祸首。这里说的资源特指当前物理磁盘的I/O的带宽(和你cpu内存没关系)。

大厂使用了高级的磁盘阵列各种措施解决这个问题,我们要解决就还是要本着物美价廉的方案来,谁也没那个实力给家里塞一个磁盘阵列柜;


解决方案一共有两个:

普通对外服务的虚拟机(跑网站、应用)可以不用理它,道理很简单:硬盘就算再慢也快过网络几兆的网络带宽,访问者是感觉不到的。

要解决的是咱自己用的云电脑(生产力工具),这种卡会让强迫症抓狂的……

解决方向有两个:要么是降低磁盘读写的抖动(为每个虚拟机保存最低的磁盘读写资源),两外一个方案是提高磁盘的I/O带宽。

方案1:插入一块全新的硬盘,构建虚拟机的时候选择——

“选择独占整个硬盘”道理很简单,如果你只使用单个分区,其实还是在和别的应用共享磁盘带宽。选择独占以后,其实就已经相当于一台单机了,只是内存CPU还在共享宿主机而已。

这时候你做完系统以后就会发现,你拥有了一个媲美大厂的,操作丝滑的虚拟机,这个方案是vmw里性能最好的方案,但是它毕竟独占了一个硬盘,硬盘虽然不贵,但是机箱资源有限,你说你想多开几个高性能虚机,有几个硬盘位够你用呢?


方案二:多方兼顾的解决方案

给电脑里插入一块M2接口的固态硬盘,这个接口I/O更宽,把它作为缓存盘使用。

1、按照正常模式制作虚拟机系统。

2、做完系统后把虚拟机文件进行分离。一个虚拟机其实有三大部分 虚拟机配置文件、虚拟磁盘文件、和运行后的虚拟内存文件。

3、把配置文件和虚拟内存文件放到你的固态硬盘上,虚拟硬盘文件还放到你现有的普通硬盘上。


N盘是普通机械硬盘,Z盘是M2固态硬盘;


上图就是缓存盘结构,存着某个虚拟机的基本信息和运行时候的虚拟内存,


这个机械硬盘区放的是虚拟磁盘文件。

这种结构的好处是你无需再为了性能给每个虚拟机配置一个独立硬盘,M2缓存盘的加入为原本紧张的磁盘I/O提供了一倍的带宽扩容。

经测试:这样配置以后虚拟机肉眼可见的丝滑了,但偶尔会有极个别的卡顿(毕竟不如独占硬盘那么爽),但是绝对可以接受。

一个误区需要注意:这里主要加强了磁盘的I/O,和磁盘速度没太大关系,所以一块固态不一定能解决问题,但两个固态用上述方案会更好的解决问题,我之所以用机械盘,主要还考虑到数据备份等问题,毕竟便宜。


最后的话:我说的丝滑顺畅也得根据行业区分,我是个程序员,现在跑程序、编译、一般工作都没问题,但如果你是影视工作者、游戏工作者,可能还需要进一步优化,在这半年解决问题的期间,我东撞西撞的意外发现了很多这方面的知识,比如:vm优化好了,还可以继续优化rdp协议的传输、还可以优化vm虚拟的视频流模式等等,最终可以让一个配置很一般的vm跑出媲美单机的运行状态。

有需要Rdp传输优化软件的,我回头发给你们,会使上面的结果更上一层楼。


欢迎留言交流,新问题我也特别愿意和各位一起讨论。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: