[libvirt] About cgroup mechanism using in libvirt

Alex Jia ajia at redhat.com
Thu Jun 17 04:48:05 UTC 2010


Thanks for Daniel and Balbir.

In fact, libvirt just have implemented CPU scheduler controller for QEMU driver now,
the following controller is still not available for QEMU driver at present:
1. Memory controller
2. CPU set controller
3. CPU accounting controller
4. Devices controller
5. Freezer controller
6. Network class controller

and CPU scheduler and memory controller are available for LXC driver now, the above
2-6 haven't been implemented in LXC driver by libvirt.



Best Regards,
Alex

----- Original Message -----
From: "Daniel P. Berrange" <berrange at redhat.com>
To: "Balbir Singh" <balbir at linux.vnet.ibm.com>
Cc: "Alex Jia" <ajia at redhat.com>, libvir-list at redhat.com
Sent: Monday, June 14, 2010 6:20:33 AM GMT -05:00 US/Canada Eastern
Subject: Re: [libvirt] About cgroup mechanism using in libvirt

On Mon, Jun 14, 2010 at 03:28:42PM +0530, Balbir Singh wrote:
> On Mon, Jun 14, 2010 at 3:10 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> > 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
> >
> 
> Not sure if I understand this, but the balloon driver and memory
> cgroups are not mutually exclusive. One could use both together and  I
> would certainly like to see additional commands to support cgroups.
> What happens if a guest (like freebsd) does not support ballooning?
> Are you suggesting we'll not need cgroups at all with QEMU?

No, I was merely describing the current usage. Making use of cgroups to
enforce the limit is certainly a desirable RFE for the future.

> >> 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.
> >>
> 
> I think we'll some notion of soft limits as well, not sure if they can
> be encapsulated using the current set. We need memory shares for
> example to encapsulate them.


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 :|




More information about the libvir-list mailing list