• O
    qemu: Keep the affinity when creating cgroup for emulator thread · bb81021b
    Osier Yang 提交于
    When the cpu placement model is "auto", it sets the affinity for
    domain process with the advisory nodeset from numad, however,
    creating cgroup for the domain process (called emulator thread
    in some contexts) later overrides that with pinning it to all
    available pCPUs.
    
    How to reproduce:
    
      * Configure the domain with "auto" placement for <vcpu>, e.g.
        <vcpu placement='auto'>4</vcpu>
      * % virsh start dom
      * % cat /proc/$dompid/status
    
    Though the emulator cgroup cause conflicts, but we can't simply
    prohibit creating it, as other tunables are still useful, such
    as "emulator_period", which is used by API
    virDomainSetSchedulerParameter. So this patch doesn't prohibit
    creating the emulator cgroup, but inherit the nodeset from numad,
    and reset the affinity for domain process.
    
    * src/qemu/qemu_cgroup.h: Modify definition of qemuSetupCgroupForEmulator
                              to accept the passed nodenet
    * src/qemu/qemu_cgroup.c: Set the affinity with the passed nodeset
    bb81021b
qemu_cgroup.c 25.6 KB