人们普遍认为AWS并不会超卖RAM或CPU,尽管我读到过一些微实例有时可能会被超卖。尽管如此,RAM膨胀是XEN的一个广泛使用的特性,我注意到内核驱动程序和气球守护进程正在EC2机器上运行,那么是什么阻止亚马逊优化它们的资源使用呢?
我想进一步研究这一点,因为我遇到了这样一种情况: 8GB的EC2 Unbuntu无法分配内存来重新启动Tomcat,尽管根据空闲和顶部大约有1.8GB的空闲内存,磁盘缓存中大约有4GB的内存是可以恢复的。我将所有进程的RSS相加,在空闲值中丢失了大约4GB,该值与磁盘缓存大小大致匹配。然而,系统一直在为Tomcat应用程序提供OOM,该应用程序限制了命令行中的堆。
因此,要么AWS实际上正在膨胀,要么由于某种原因无法回收磁盘缓存(可能速度不够快,无法避免OOM?)也许交换会有所帮助,但在AWS中的交换有一些宗教战争,我不是管理员,所以我不能做任何事情。
因此,对于最初的问题:如果XEN气球驱动程序被加载并且守护进程正在运行,那么是什么阻止了Amazom的膨胀呢?如果亚马逊不用气球来掩盖资源分配中的短暂高峰,那将是愚蠢的。此外,这是XEN的一个基本特性,我认为那些坚持Amazon不使用XEN的人从未建立或运行过自己的XEN env。
发布于 2019-04-28 18:48:56
没有亚马逊EC2实例类型过订阅内存。只有实例类型的T族过订阅CPU,每幻灯片14 https://www.slideshare.net/AmazonWebServices/deep-dive-on-amazon-ec2。
特性注释中的内存过度提交的Xen文档“内存过度提交可能会对性能产生一定影响,并且在某些环境中可能无法使用”。亚马逊EC2避免了这些问题和相关的客户影响,没有实现它。另一个原因是,例如,正如AWS安全概述--计算服务白皮书第4页所描述的那样,在将内存给客人之前先清理内存。想想在球拍场景中这样做对性能的影响。
https://serverfault.com/questions/875450
复制相似问题