[libvirt] [PATCH v4 00/12] Support hypervisor-threads-pin in vcpupin.

Gui jianfeng guijianfeng at cn.fujitsu.com
Thu Aug 2 13:26:11 UTC 2012


Hey guys,

Any objection to this series?
If no, would someone help to commit this patchset?

Thanks,
Gui

On 2012/7/25 13:14, tangchen wrote:
> Users can use vcpupin command to bind a vcpu thread to a specific physical cpu.
> But besides vcpu threads, there are alse some other threads created by qemu
> (known as hypervisor threads) that could not be explicitly bound to physical cpus.
>
> The first 3 patches are from Wen Congyang, which implement Cgroup for differrent
> hypervisors.
>
> The other 10 patches implemented hypervisor threads binding, in two ways:
>      1) Use sched_setaffinity() function;
>      2) Use cpuset cgroup.
>
> A new xml element is introduced, and vcpupin command is improved, see below.
>
> 1. Introduce new xml elements:
>    <cputune>
>        ......
>        <hypervisorpin cpuset='1'/>
>    </cputune>
>
> 2. Improve vcpupin command to support hypervisor threads binding.
>
> For example, vm1 has the following configuration:
>    <cputune>
>        <vcpupin vcpu='1' cpuset='1'/>
>            <vcpupin vcpu='0' cpuset='0'/>
>        <hypervisorpin cpuset='1'/>
>    </cputune>
>
>    1) query all threads pining
>
>       # vcpupin vm1
>       VCPU: CPU Affinity
>       ----------------------------------
>          0: 0
>          1: 1
>
>       Hypervisor: CPU Affinity
>       ----------------------------------
>          *: 1
>
>    2) query hypervisor threads pining only
>
>       # vcpupin vm1 --hypervisor
>       Hypervisor: CPU Affinity
>       ----------------------------------
>          *: 1
>
>    3) change hypervisor threads pining
>
>       # vcpupin vm1 --hypervisor 0-1
>
>       # vcpupin vm1 --hypervisor
>       Hypervisor: CPU Affinity
>       ----------------------------------
>          *: 0-1
>
>       # taskset -p 397
>       pid 397's current affinity mask: 3
>
>
> Note: If users want to pin a vcpu thread to pcpu, --vcpu option could no longer be omitted.
>
>
> Tang Chen (9):
>    Enable cpuset cgroup and synchronous vcpupin info to cgroup.
>    Support hypervisorpin xml parse.
>    Introduce qemuSetupCgroupHypervisorPin and synchronize hypervisorpin
>      info to cgroup.
>    Add qemuProcessSetHypervisorAffinites and set hypervisor threads
>      affinities
>    Introduce virDomainHypervisorPinAdd and virDomainHypervisorPinDel
>      functions
>    Introduce virDomainPinHypervisorFlags and
>      virDomainGetHypervisorPinInfo functions.
>    Introduce qemudDomainPinHypervisorFlags and
>      qemudDomainGetHypervisorPinInfo in qemu driver.
>    Introduce remoteDomainPinHypervisorFlags and
>      remoteDomainGetHypervisorPinInfo functions in remote driver.
>    Improve vcpupin to support hypervisorpin dynically.
>
> Wen Congyang (3):
>    Introduce the function virCgroupForHypervisor
>    Introduce the function virCgroupMoveTask
>    create a new cgroup and move all hypervisor threads to the new cgroup
>
>   daemon/remote.c                                 |  103 +++++++++
>   docs/schemas/domaincommon.rng                   |    7 +
>   include/libvirt/libvirt.h.in                    |   10 +
>   src/conf/domain_conf.c                          |  169 +++++++++++++-
>   src/conf/domain_conf.h                          |    7 +
>   src/driver.h                                    |   13 +-
>   src/libvirt.c                                   |  147 +++++++++++++
>   src/libvirt_private.syms                        |    7 +
>   src/libvirt_public.syms                         |    2 +
>   src/qemu/qemu_cgroup.c                          |  151 ++++++++++++-
>   src/qemu/qemu_cgroup.h                          |    5 +
>   src/qemu/qemu_driver.c                          |  267 ++++++++++++++++++++++-
>   src/qemu/qemu_process.c                         |   60 ++++-
>   src/remote/remote_driver.c                      |  102 +++++++++
>   src/remote/remote_protocol.x                    |   23 +-
>   src/remote_protocol-structs                     |   24 ++
>   src/util/cgroup.c                               |  188 +++++++++++++++-
>   src/util/cgroup.h                               |   15 ++
>   tests/qemuxml2argvdata/qemuxml2argv-cputune.xml |    1 +
>   tests/vcpupin                                   |    6 +-
>   tools/virsh.c                                   |  147 ++++++++-----
>   tools/virsh.pod                                 |   16 +-
>   22 files changed, 1393 insertions(+), 77 deletions(-)
>





More information about the libvir-list mailing list