#请教#笔记本物理内存 8G, VMware 里面装两个虚拟机各分 4G 内存同时运行,会发生什么?

2017-03-15 19:41:53 +08:00
 Aaaron
8801 次点击
所在节点    VMware
20 条回复
Aaaron
2017-03-15 19:47:12 +08:00
#已经测试# 8G 物理内存,两个虚拟机各分 4G 和 1G 内存,同时运行没发生任何问题。
nszm
2017-03-15 19:47:23 +08:00
物理内存并不会发生改变
vibbow
2017-03-15 19:48:15 +08:00
其中一个虚拟机会被强制暂停,理由是内存不足。
UnisandK
2017-03-15 19:50:26 +08:00
virtio_balloon
都跑满会占到你电脑的硬盘交换区
Aaaron
2017-03-15 19:51:14 +08:00
@nszm @vibbow 物理内存应该不会发生变化,也有人说是`会无限交换内存,最终三台机器都卡爆`。
Aaaron
2017-03-15 19:52:08 +08:00
@UnisandK 假设虚拟机没有分交换分区呢?
rexpower
2017-03-15 19:52:32 +08:00
两个虚拟机各分 4G 内存,同时运行的话,不见得在这期间,这两个虚拟机都实际占用掉接近 4G 的内存吧,你再在虚拟机里跑跑占内存的任务试一试?
Aaaron
2017-03-15 19:54:36 +08:00
@rexpower 我还没有尝试,不过虚拟机用去 4G+1G 之后,内存就已经在 95%了。
UnisandK
2017-03-15 19:54:50 +08:00
@Aaaron OOM-Killer 逮个杀个呗
ys0290
2017-03-15 19:54:59 +08:00
在限额范围内内存是用多少给多少,一旦跑起来后俩虚拟机都内存满载了,就死机了
我的 esxi 里面虚拟了一个软路由,我一时疏忽给各个虚拟机分配的内存总和大于物理内存了,结果只要物理内存用满了,就网络瘫痪,软路由重新拨号了😂
Aaaron
2017-03-15 19:56:45 +08:00
@rexpower 当然宿主机的应用就会占掉 30%左右的内存(开了 Chrome
Aaaron
2017-03-15 20:02:48 +08:00
@UnisandK @ys0290 所以目前有两种说法:
1. 内存高达一定程度时,至少有一个虚拟机会由于内存不足被强行停止;
2. 物理内存用满之后,死机。
billlee
2017-03-15 20:06:27 +08:00
ESXi 会给每个虚拟机分配一个和内存同样大小的交换文件,所以用满就会交换。 Workstation 没用过,我就不清楚了。
loading
2017-03-15 20:10:48 +08:00
有虚拟内存或者 swap ,你忘了吗?
Aaaron
2017-03-15 20:28:55 +08:00
@loading
1. 讲道理安装过程中可以不设 Swap 分区;
2. 「虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存,而实际上它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。」——摘自维基百科,所以说由于虚拟内存的存在,由于内存不足被强制停止应该不会发生;
3. 但是实际使用中,的确有过内存不足, 某个程序无法运行。
zts1993
2017-03-15 21:39:11 +08:00
首先操作系统中的内存不是直接对应物理地址,当然虚拟机问题得另外说。

很多虚拟化软件不会在启动时候强制要求你一定有这么多内存(当然不能太离谱,所以超售是允许的)。
虚拟化中有超用技术比如 kvm 的 balloon
还有内存压缩合并 ,比如 kvm 的 KSM
加上本机操作系统也会用上虚拟内存。。

所以只会比较卡而已,如果是 ssd 的话会比较稳一点。。
Aaaron
2017-03-15 21:56:53 +08:00
1. http://hujizhou.blog.51cto.com/514907/1688815 这篇文章也证明了您的观点。所以应该只是影响性能,最后系统也不会卡死。
2. 但是,内存交换 怎么发生呢
3. 如果发生了内存交换,不知道回收哪些内存会导致系统卡死吗?
@zts1993
zts1993
2017-03-15 22:17:27 +08:00
@Aaaron 系统最后是有可能卡死的。。卡死:一般来说值得是没有响应或者响应时间特别长比如磁盘忙碌。。

你的内存空间申请都是向操作系统申请的虚拟内存,虚拟内存到物理内存+交换分区会有一个映射。
内存快不够的时候会发生内存交换 ,具体激进程度可以配置。
电脑不存在不知道这个问题,可能刚刚交换到磁盘上但是这个时候又需要读取,也就是又"缺页",然后把数据加载到内存。。

这样一来一回磁盘占用是很厉害的,比如机械盘这种来回交换会直接卡住,响应时间会非常长,,产生假死的情况。。

如果这个时候内存使用下降,交换减少,磁盘慢慢响应速度恢复,系统就正常了。。
如果继续恶化,肯定是越来越卡,最后 bad malloc 程序可能会 crash 掉或者退出
liantian
2017-03-16 08:07:28 +08:00
既然你放到 vmware 节点下,那就是不考虑 kvm/hyper-v 吧....

vmware 的话, esxi 会用 swap , esxi 为每个虚机独立分配 swap 空间,文件名叫 vswp ,在虚拟机目录内,大小和内存大小相等,空间预分配。主机内存不够就会使用这块 swap 。如果服务器本地有 ssd ,而且挂载到 esxi 或者正好是 esxi 的所在分区, swap 会放在 ssd 上。



workstation 的话,类似,会在虚拟机目录创建 vmem 文件,但不会自动飘到 ssd 里。


所以俩虚拟机内存都满了会怎样.......会很慢
xyjincan
2018-10-03 22:36:53 +08:00
用完内存后,系统就卡死了,全部完蛋

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/347722

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX