[libvirt] [RFC] exclusive vcpu-cpu pinning

Ján Tomko jtomko at redhat.com
Tue Aug 19 15:29:55 UTC 2014


Ping.

On 07/31/2014 01:13 PM, Ján Tomko wrote:
> Hello developers!
> 
> Currently, our default cgroup layout is:
> -top level cgroup
> \-machine (machine.slice with systemd)
>  `-vm1.libvirt-qemu (machine-qemu\x2dvm1.scope with systemd)
>   `-emulator
>   `-vcpu0
>   \-vcpu1
>  \-vm2.libvirt-qemu
>   `-emulator
>   `-vcpu0
>   `-vcpu1
> 
> To free some CPUs for exclusive use, either all processes from the top level
> cgroup should be moved to another one (which does not seem like a great idea)
> or isolcpus= should be specified on the kernel command line.
> 
> The cpuset.cpu_exclusive option can be set on a cgroup if
> * all the groups up to the top level group have it set
> * the cpuset of the current group is a subset of the parent group
>   and no siblings use any cpus from the current cpuset
> 
> This would mean that to keep the existing nested structure, all vcpus and the
> emulator thread would need to have an exclusive CPU, e.g:
>   <vcpu placement='static' cpuset='4-6'>2</vcpu>
>   <cputune exclusive='yes'>
>     <vcpupin vcpu='0' cpuset='5'/>
>     <vcpupin vcpu='1' cpuset='6'/>
>     <emulatorpin cpuset='4'/>
>   </cputune>
> 
> (The only two issues I found:
>  1) libvirt would have to mess with systemd's 'machine-scope' behind it's back
> (setting cpu_exclusive)
>  2) creating machines without explicit cpu pinning fails, as libvirt tries to
>     write all the cpus to the cpuset, even those the other machine uses
>     exclusively)
> 
> I've also thought about just keeping track of the 'exclusived' CPUs in
> libvirt. This would not work across drivers. And it could possibly be needed
> to solve issue 2).
> 
> Do you think any of these options would be useful?
> 
> Bug: https://bugzilla.redhat.com/show_bug.cgi?id=996758
> 
> Jan
> 
> 
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> 




More information about the libvir-list mailing list