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

tangchen tangchen at cn.fujitsu.com
Wed May 9 06:27:47 UTC 2012


Hi~

Forgot to mention that this patch set is based on Wen Congyang's patch set:

"support to set cpu bandwidth for hypervisor threads"

https://www.redhat.com/archives/libvir-list/2012-April/msg01326.html

Wen's patches should be applied first.
Thanks.:)


On 05/09/2012 02:08 PM, tangchen wrote:
> Hi~
> 
> 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.
> 
> This 10 patches implemented hypervisor threads binding, in two ways:
>   1) Use sched_setaffinity() function;
>   2) In 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 (10):
>   Enable cpuset cgroup and synchronous vcpupin info to cgroup.
>   Support hypervisorpin xml parse
>   Add qemuSetupCgroupHypervisorPin and synchronize hypervisorpin info
>     to cgroup.
>   Add qemuProcessSetHypervisorAffinites and set hypervisor threads
>     affinities
>   Introduce virDomainHypervisorPinAdd and virDomainHypervisorPinDel
>     functions
>   Introduce qemudDomainPinHypervisorFlags and
>     qemudDomainGetHypervisorPinInfo in qemu driver.
>   Introduce remoteDomainPinHypervisorFlags and
>     remoteDomainGetHypervisorPinInfo functions in remote driver.
>   Introduce remoteDispatchDomainPinHypervisorFlags and
>     remoteDispatchDomainGetHypervisorPinInfo functions.
>   Introduce virDomainPinHypervisorFlags and
>     virDomainGetHypervisorPinInfo functions.
>   Improve vcpupin to support hypervisorpin dynically.
> 
>  daemon/remote.c                                 |  103 +++++++++
>  docs/schemas/domaincommon.rng                   |    7 +
>  include/libvirt/libvirt.h.in                    |    9 +
>  src/conf/domain_conf.c                          |  172 ++++++++++++++-
>  src/conf/domain_conf.h                          |    7 +
>  src/driver.h                                    |   13 +-
>  src/libvirt.c                                   |  147 +++++++++++++
>  src/libvirt_private.syms                        |    2 +
>  src/libvirt_public.syms                         |    2 +
>  src/qemu/qemu_cgroup.c                          |   88 ++++++++
>  src/qemu/qemu_cgroup.h                          |    3 +
>  src/qemu/qemu_driver.c                          |  266 ++++++++++++++++++++++-
>  src/qemu/qemu_process.c                         |   54 +++++
>  src/remote/remote_driver.c                      |  102 +++++++++
>  src/remote/remote_protocol.x                    |   24 ++-
>  src/remote_protocol-structs                     |   24 ++
>  src/util/cgroup.c                               |   35 +++-
>  src/util/cgroup.h                               |    3 +
>  tests/qemuxml2argvdata/qemuxml2argv-cputune.xml |    1 +
>  tests/vcpupin                                   |    6 +-
>  tools/virsh.c                                   |  145 ++++++++----
>  tools/virsh.pod                                 |   16 +-
>  22 files changed, 1158 insertions(+), 71 deletions(-)
> 

-- 
Best Regards,
Tang chen




More information about the libvir-list mailing list