On Sat, Jun 12, 2010 at 07:23:33AM -0400, Alex Jia wrote:
Hey Daniel,
The cgroup mechanism have been integrated into libvirt for LXC and QEMU driver,
and the LXC driver uses all of cgroup controllers except for net_cls and cpuset,
while the QEMU driver only uses the cpu and devices controllers at present.
From the user point of view, user can use some virsh commands to control some
guest resources:
1. Using 'virsh schedinfo' command to get/set CPU scheduler priority for a guest
QEMU + LXC use the cpu controller 'cpu_shares' tunable
2. Using 'virsh vcpuin' command to control guest vcpu
affinity
QEMU pins the process directly, doesn't use cgroups. LXC has't
implemented this yet
3. Using 'virsh setmem' command to change memory allocation
4. Using 'virsh setmaxmem' command to change maximum memory limit
QEMU uses balloon driver. LXC uses cgroups memory controller
5. Using 'virsh setvcpus' command to change number of virtual
CPUs
QEMU uses cpu hotplug. LXC hasn't implemented this.
I just make sure the above 1 using CPU scheduler controller, maybe 4
using Memory
controller? and maybe 5 using CPU set controller? I am not sure.
And I wonder how to control devices access via virsh command or libvirt binding API
such as python binding? in addition, for CPU accounting and Freezer controller,
how to use them to control guest resource from libvirt application layer? and how
to check setting result is valid such as cpuacct? these issues let me confuse at recent.
There isn't any direct access to cgroups via any APIs. The use of cgroups
is a private implementation details only. You just need to uses the APIs
that correspond to those virsh commands
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://deltacloud.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|