我的印象是,您可以配置 OpenStack 集群,以便为 KVM 实例过度分配 vCPU 和内存。
我认为过度分配 vCPU 相对无害;我猜主机上的实例只需分时共享可用的物理 CPU,如果 CPU 需求超过物理容量,它们的速度就会相应变慢。
对于内存,如果实例超出主机的物理容量,我想情况肯定完全不同。如果
集群中的内存分配过度分配,并且主机上运行的实例超出主机内存的物理容量,实际上会发生什么?它是否开始交换到磁盘(并且 - 我猜 - 因此速度会大幅减慢)?实例只是崩溃,还是完全不同?
答案1
你可以过度使用 CPU 和内存
https://docs.openstack.org/arch-design/design-compute/design-compute-overcommit.html
实际内存消耗超过虚拟机管理程序的物理内存的影响在此处得到了很好的解释https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-overcommitting_with_kvm-overcommitting_memory
过度使用并不是解决一般内存问题的理想方法。解决内存短缺的推荐方法是为每个客户机分配较少的内存、向主机添加更多物理内存或利用交换空间。
如果频繁交换,虚拟机的运行速度会变慢。此外,过度使用可能会导致系统内存不足 (OOM),这可能会导致 Linux 内核关闭重要的系统进程。