NFVI特性之实时虚拟机()二

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFVI特性之实时虚拟机()二相关的知识,希望对你有一定的参考价值。

接前文,之前讲了openstack中实时虚拟机特性都作了那些特有的实现,这些代码大部分在M版本中已经合入。但是关于qemu本身消耗的CPU时间,并没有很好的处理。这块的设计和代码实现一直到P版本,也就是最近才合入到主干代码中。


我们知道,openstack中nova根据虚拟机的flavor给虚拟机分配CPU以及确定CPU的放置策略。


由于qemu本身也要消耗很多CPU实现,用于qemu本身的event loop/异步IO/迁移虚拟机/spice等业务。之前nova默认将qemu和vCPUs运行在相同的pCPU上。

大多数情况下,实时性要求不那么高,这样也没有什么问题。但是对实时性要求比较高的场景下,由于qemu偷取了部分vCPUs的时间,会导致实时性不符合要求。


在M版的实现里,我们可以通过cpu_realtime_mask指定qemu和虚拟机的某几个vCPUs共用pCPUs,虚拟机的其他vCPUs使用实时调度策略。从而保证这几个vCPUs符合实时性要求。

由于虚拟机的vCPUs只有部分是实时性的,因此Linux系统可以使用,但是不能满足某些实时操作系统的要求。


P版本中增加了配置hw:cpu_emulator_threads=isolate/share,用于设置emulator使用的cpu的分配策略。如果选用isolate,会从host上固定一个pCPU供emulator使用。(目前不能配置,只能是1个)。如果选用了share,和之前的行为一致。

以上是关于NFVI特性之实时虚拟机()二的主要内容,如果未能解决你的问题,请参考以下文章

NFV — 高性能 NFVI

NFV — 高性能 NFVI

深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

KVM虚拟化(虚拟机装虚拟机,双重套娃)

kali折腾日记之虚拟机安装二

JVM运行时数据区之虚拟机栈,本地方法栈和程序计数器