ImprovevirtualmachineperformanceSmartIdlePolling.pdf
标题中提到的“Improve virtual machine performance: Smart Idle Polling”意味着文档将讨论如何通过智能空闲轮询(Smart Idle Polling)来提升虚拟机的性能。从描述中,我们了解到文档是由Yang Zhang撰写的,但未提供具体信息。标签“云计算”表明文档所讨论的内容与云计算环境中虚拟机性能优化密切相关。 从给出的部分内容来看,文档详细阐述了物理机(baremetal)与虚拟机(VM)在性能上的差异,并探讨了传统虚拟机在上下文切换、CPU空闲状态管理以及Linux内核调度等方面存在的开销问题。接着,文档提出了改进的解决方案——智能空闲轮询,并说明了这种技术如何减少虚拟机中的调度开销,通过动态调整轮询时间以提高性能。 文档中首先指出了虚拟机性能不佳的问题。通过一系列基准测试,作者展示了物理机与虚拟机之间的性能差距。具体来说,随着CPU数量的增加,虚拟机的性能损失更加明显,差距从16%增加至25%。 文档接着探讨了典型的上下文切换流程。在Linux系统中,当线程或CPU进入空闲状态时,如果没有待处理的任务,线程会进入暂停状态,CPU也会进入IDLE模式。一旦有任务到来,线程或CPU会被唤醒。这个过程涉及到定时器的停止和启动,这在虚拟化环境下会导致VMExit,即虚拟机退出当前虚拟CPU状态,并在虚拟化层进行处理。 文档提到的“Tickless kernel”技术始于Linux内核2.6.21版本,它允许在CPU进入IDLE时停止定时器,并在唤醒时重新启动。然而,在虚拟化环境中,停止定时器会导致VMExit,因为需要写入定时器来触发这个过程。 CPU空闲状态(C-state)管理在虚拟机中存在限制,比如在虚拟机中没有深层次的C-state(只支持C1),使用HLT指令会导致虚拟机退出到管理程序(Hypervisor)中进行处理。HLT指令让CPU停止执行指令直到中断到来,但在虚拟机中执行HLT会导致虚拟CPU(VCPU)在管理程序中重新调度。 Linux内核的重新调度(rescheduling)使用了IPI(Inter-Processor Interrupts)机制。在虚拟化环境中,IPI需要通过软件进行虚拟化处理,并会触发VMexit。IPI的虚拟化包括模拟APIC来发送IPI。 文档还列出了虚拟机中的一些性能开销,例如VMEXIT、MSR写入、IPI以及HLT指令的执行。这些开销的总成本可能从几个微秒到几十微秒不等。当前解决方案如将空闲状态设置为轮询模式(Idle=Poll)会浪费CPU周期并影响其他性能,而禁用NOHZ不是现代发行版的默认配置,KVM的停止轮询(KVM halt polling)则试图消除调度器的开销。 文档最后介绍了作者提出的解决方案——智能空闲轮询。这是通过在虚拟机内部的空闲路径中进行轮询来实现的,以此消除IPI、定时器和HLT指令的开销。此外,智能空闲轮询还基于预测动态调整轮询时间,以获得更好的性能。作者还提供了相关的RFC链接,供读者进一步了解该技术。 总结来说,该文档详细分析了传统虚拟机性能不佳的原因,并提出了智能空闲轮询技术作为优化方案,旨在减少虚拟机管理过程中的开销,通过动态调整轮询机制来提升虚拟机的整体性能。这项技术对于云计算环境中虚拟机的性能优化具有重要参考价值。
- 粉丝: 373
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助