服务器虚拟化如何提高性能?

服务器虚拟化如何提高性能?

我读到过有关服务器虚拟化的新趋势,因为它带来了很多好处。其中之一就是用更少的硬件来提高性能。

这怎么可能呢?就我有限的知识而言,没有任何虚拟化可以匹敌物理性能(因为你添加了 1 个额外的软件)。而且如果你减少物理硬件的数量(例如减少 1 台计算机),你怎么能获得相同的性能?

答案1

您的问题考虑了每个节点的性能,这个值太宽泛了,无法在每种情况下都考虑。这个问题很大程度上取决于人们如何概念化性能。

在实际场景中,人们关心的是服务性能,而不是它所在的机器是否满足任意的性能指标规范。是的,虚拟化涉及一定程度的开销。但是,它也提供了高度的隔离性和灵活性。

考虑在一台机器上运行多个服务的影响,所有服务都分配相同的资源池。在这种情况下,一个服务可能会消耗过多的 CPU 时间或内存,以至于另一个服务无法像在更有限但更高效的资源池中那样以最佳方式提供其内容。孤立资源池。为了通过虚拟化解决这个问题,服务尽可能彼此分开,这样它们就不会互相干扰,从而可能损害整个堆栈。

还要考虑功能,而不仅仅是原始性能。虚拟机可以在主机之间移动(在大多数虚拟机管理程序上)在线时。这样可以在主机停机维护之前将虚拟机清空。在此期间,实际生产堆栈不受影响,也不会降级。这使得更换硬件变得非常容易,并且使物理资源通常可互换。

虚拟机可以在同一主机上拥有多个完全不同的操作系统类型,从而使数据中心更加灵活和多样化,同时使堆栈的低端同质化,以获得一致的结果和管理。

就性能而言,虚拟机可以利用半虚拟化来减少整个虚拟机或模拟虚拟机中特定关键设备的开销。这样,灵活磁盘抽象、直接磁盘连接和虚拟网卡的速度就非常接近本机速度(在某些情况下,由于高级缓存功能,速度甚至更快)。此外,虚拟机管理程序还利用了客户操作系统可能无法实现的高级内存功能(例如重复数据删除)。例如,这将允许 Windows 客户机之类的程序直接利用使用 KSM 的内存重复数据删除以及 BTRFS 或 ZFS 的存储弹性。

答案2

简单的答案是虚拟化没有提高绩效。事实上,虚拟化显著降低了性能

当然,我之前做过这个测试,但是没有办法摆脱额外上下文切换的巨大开销。虚拟机管理程序下的上下文切换通常比裸机慢 100 倍左右。一旦开始接近 CPU 饱和点,性能就会急剧下降。

当然,我在 Core2 时代就做过这个测试,但事情并没有像你想象的那样发生太大变化。有几种方法可以在一定程度上减轻开销,包括:1) 将 vCPU 固定到物理 CPU 线程(并牺牲 VM 可迁移性)。2) 留下几个核心不分配给客户机,并将虚拟机管理程序固定到它们(并预先牺牲这几个核心的性能)3) 增加最小时间片持续时间(通常使用适当的 tuned-adm 配置文件)。

但仍然会有相当大的开销。

相关内容