Bug 996758

Summary: support exclusive vcpu<->cpu pinning
Product: Red Hat Enterprise Linux 7 Reporter: Marcelo Tosatti <mtosatti>
Component: libvirtAssignee: Ján Tomko <jtomko>
Status: CLOSED CURRENTRELEASE QA Contact: Luyao Huang <lhuang>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.1CC: dyuan, gsun, juzhang, mzhan, rbalakri, tvvcox, xuzhang, yalzhang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-05-22 17:18:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Marcelo Tosatti 2013-08-13 21:33:03 UTC
Add an option to allow for exclusive CPU <-> VCPU assignment:

"what they need now is the ability to disable any kind of overcommit 
(CPU and RAM). So for example if they have a core already pinned to 
a VM, they don't want another VM to use it."

Comment 3 Ján Tomko 2014-07-31 11:18:01 UTC
I've sent a design proposal upstream:
https://www.redhat.com/archives/libvir-list/2014-July/msg01505.html

Comment 6 Ján Tomko 2017-05-22 17:18:51 UTC
Per:
https://www.redhat.com/archives/libvir-list/2014-September/msg00092.html
isolating other processes is out of scope of libvirt.

Manually assigning VMs to separate cpusets should be working already, after fixes like:
commit ff16bde100e19fbff17a964c08321f30f87afb22
Author:     Henning Schild <henning.schild>
AuthorDate: 2016-02-26 16:34:24 +0100
Commit:     Daniel P. Berrange <berrange>
CommitDate: 2016-03-01 14:07:27 +0000

    qemu_cgroup: use virCgroupAddTask instead of virCgroupMoveTask
    
    qemuProcessSetupEmulator runs at a point in time where there is only
    the qemu main thread. Use virCgroupAddTask to put just that one task
    into the emulator cgroup. That patch makes virCgroupMoveTask and
    virCgroupAddTaskStrController obsolete.
    
    Signed-off-by: Henning Schild <henning.schild>

git describe: v1.3.2-28-gff16bde contains: v1.3.3-rc1~318

commit 8e21e8d110743c66d2be258f8f39173f66c5c3b3
Author:     Henning Schild <henning.schild>
AuthorDate: 2016-02-26 16:34:23 +0100
Commit:     Daniel P. Berrange <berrange>
CommitDate: 2016-03-01 14:07:27 +0000

    qemu_cgroup: put qemu right into emulator sub-cgroup
    
    Move qemuProcessSetupEmulator up under qemuSetupCgroup. That way
    we move the one main thread right into the emulator cgroup, instead
    of moving multiple threads later on. And we do not actually want any
    threads running in the parent cgroups (cpu cpuacct cpuset).
    
    Signed-off-by: Henning Schild <henning.schild>

git describe: v1.3.2-27-g8e21e8d contains: v1.3.3-rc1~319

commit 90b721e43ec9232b5b218e891437bed04548e841
Author:     Henning Schild <henning.schild>
AuthorDate: 2015-12-14 15:58:05 -0500
Commit:     John Ferlan <jferlan>
CommitDate: 2015-12-14 15:58:05 -0500

    qemu cgroups: move new threads to new cgroup after cpuset is set up
    
    Moving tasks to cgroups implied sched_setaffinity. Changing the cpus in
    a set implies the same for all tasks in the group.
    The old code put the the thread into the cpuset inherited from the
    machine cgroup, which allowed it to run outside of vcpupin for a short
    while.
    
    Signed-off-by: Henning Schild <henning.schild>

git describe: v1.3.0-66-g90b721e contains: v1.3.1-rc1~196