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

来源:互联网 发布:人工智能男主角长残了 编辑:程序博客网 时间:2024/06/06 04:13

接前文,之前讲了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,和之前的行为一致。

参考:
https://blueprints.launchpad.net/nova/+spec/libvirt-emulator-threads-policy

0 0
原创粉丝点击