VMware虚拟机的内存大小应该如何设置
我的电脑是1G内存/Intel双核CPU/160G硬盘/DVDrom
用VMware用默认设置创建了一个Windows XP Professional虚拟机
分配了虚拟机796M内存/双核/20G硬盘/DVDrom
我是基于这样想法的,我对虚拟机拍了一个快照,平常一切操作都在虚拟机上进行
这样即使中毒了,只要点一下恢复到快照,一秒钟解决
所以我把虚拟机内存分配到了最大,下面就是它的提示
------------------------------------
客户机操作系统推荐的最小值:128MB
建议内存大小:256MB
建议最大内存大小:796MB
(超过该大小后,将会进行内存交换)
------------------------------------
另外,我发现它允许设置的最大值是1792MB(就是说如果把滚动条拖到最右边)
但是我设置成796M之后,发现虚拟机比较卡,但是我不知道是什么原因引起的
如果是因为Host OS的内存太少导致Host OS运转不畅进而导致卡,那我就应该减少分配给虚拟机的内存
如果是因为Guest OS的内存分配太少,导致卡,那我应该增加分配给虚拟机的内存
究竟应该怎么分配内存呢?多少最合适?
下面是虚拟机Guest OS的进程列表,用tasklist命令得到的
图像名 PID 会话名 会话# 内存使用
========================= ====== ================ ======== ============
System Idle Process 0 0 28 K
System 4 0 324 K
smss.exe 932 0 808 K
csrss.exe 996 0 12,440 K
winlogon.exe 1020 0 3,380 K
services.exe 1064 0 9,788 K
lsass.exe 1076 0 1,384 K
svchost.exe 1236 0 4,236 K
svchost.exe 1368 0 5,472 K
svchost.exe 1508 0 32,280 K
svchost.exe 1568 0 3,752 K
spoolsv.exe 1700 0 5,436 K
wdfmgr.exe 1924 0 1,964 K
VMwareService.exe 1952 0 2,560 K
explorer.exe 1692 0 21,168 K
jusched.exe 292 0 2,212 K
VMwareTray.exe 284 0 4,136 K
VMwareUser.exe 276 0 5,008 K
360tray.exe 268 0 1,976 K
ctfmon.exe 396 0 3,624 K
svchost.exe 460 0 4,052 K
conime.exe 1532 0 3,516 K
StarWindService.exe 1136 0 2,608 K
QQ.exe 1936 0 16,864 K
QQ.exe 1688 0 16,804 K
QQ.exe 1204 0 25,188 K
QQ.exe 956 0 24,452 K
QQ.exe 1384 0 26,916 K
QQ.exe 2948 0 27,100 K
QQ.exe 3956 0 18,484 K
dllhost.exe 2712 0 9,264 K
locator.exe 3916 0 2,844 K
msdtc.exe 2548 0 5,352 K
inetinfo.exe 3764 0 11,840 K
dllhost.exe 2052 0 8,720 K
IEXPLORE.EXE 3824 0 71,744 K
TTPlayer.exe 1632 0 4,072 K
cmd.exe 3316 0 2,864 K
wmiprvse.exe 744 0 6,236 K
tasklist.exe 420 0 4,800 K
[解决办法]
可给512M
如果HOST应用比较多,可以考虑降低GUEST OS的内存打下,反之,最大可加大到796M,否则页面交换会很大程度影响系统的性能
------解决方案--------------------
对半吧,把虚拟机设置得过高,host os的就少了,虽然你的应用在虚拟机里面,可是所有的内容都得虚拟机程序来处理,而虚拟机程序
是运行在host os里面的。
[解决办法]
System Idle始终是28K,因为这是这个进程所使用的内存,而其他内存是空闲的,空闲内存跟系统不做事的进程所占用的内存是不同的。
空闲内存存在于内存条里,但不被任何进程使用。
内存是块地,你盖房子住的那块就是System Idle Process所用的那28K,种棉花、稻子、萝卜、白菜的各有各的地可以根据需要分配几K或者几百M的空间,没种东西的地就是不被任何进程使用的空间。
虚拟机运行跟实体机是不同的,虚拟机的本身是实体机操作系统的一个进程,它所有对硬件资源的访问还都是要通过实体操作系统完成的,内存可能可以直接访问,但是对于硬盘、网络、声音系统的访问,都是通过虚拟机的驱动程序转换,再用实体操作系统的驱动程序转换去控制硬件,中间会有很多的操作要由实体操作系统的System、Services等进程来完成,所以慢是必然的。
[解决办法]
关于内存占用的理解,我是这么认为的。不过要说明的是,任务管理器列出的也不是全部进程和全部内存占用,还有很多不列出来,比如一些驱动程序、服务以及传说中的钩子。你把任务管理器
我用VNware tools只是因为它把鼠标集成了,可以自由移入移出虚拟机窗口。至于性能问题,没有考虑过,因为我用虚拟机的前提就是把机器当三年前的配置来用的。
我对Windows操作系统的硬件与进程的关系的理解是这样的:
CPU:虚拟机进程通过实际操作系统的分时轮循机制获得CPU处理时间片,虚拟机进程做为前台进程,当然可以获得更多的处理时间。
内存:虚拟机进程运行在内存里,所以它对内存的读写操作不需要通过实际操作系统,而增加内存空间的操作肯定还需要实际操作系统。
硬盘:虚拟机进程不占据硬盘(理论上不占用,但是如果实际操作系统使用了虚拟内存的话,还是会使用硬盘交换),只是虚拟机硬盘在实际硬盘占用了空间,虚拟机操作系统对虚拟机硬盘的读写操作则是通过虚拟机进程完成的,而由于Windows的硬件驱动机制,虚拟机进程无法直接访问硬盘,要通过实际操作系统的硬盘驱动程序进程来完成。
其他硬件:同硬盘。
[解决办法]
记得在建好的虚拟机上按右键,可以挑内存大小。