mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
Historically QEMU/LXC guests have been placed in a cgroup layout that is $LOCATION-OF-LIBVIRTD/libvirt/{qemu,lxc}/$VMNAME This is bad for a number of reasons - The cgroup hierarchy gets very deep which seriously impacts kernel performance due to cgroups scalability limitations. - It is hard to setup cgroup policies which apply across services and virtual machines, since all VMs are underneath the libvirtd service. To address this the default cgroup location is changed to be /system/$VMNAME.{lxc,qemu}.libvirt This puts virtual machines at the same level in the hierarchy as system services, allowing consistent policy to be setup across all of them. This also honours the new resource partition location from the XML configuration, for example <resource> <partition>/virtualmachines/production</partitions> </resource> will result in the VM being placed at /virtualmachines/production/$VMNAME.{lxc,qemu}.libvirt NB, with the exception of the default, /system, path which is intended to always exist, libvirt will not attempt to auto-create the partitions in the XML. It is the responsibility of the admin/app to configure the partitions. Later libvirt APIs will provide a way todo this. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
49 lines
1.6 KiB
C
49 lines
1.6 KiB
C
/*
|
|
* Copyright (C) 2010-2012 Red Hat, Inc.
|
|
* Copyright IBM Corp. 2008
|
|
*
|
|
* lxc_cgroup.c: LXC cgroup helpers
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __VIR_LXC_CGROUP_H__
|
|
# define __VIR_LXC_CGROUP_H__
|
|
|
|
# include "vircgroup.h"
|
|
# include "domain_conf.h"
|
|
# include "lxc_fuse.h"
|
|
# include "virusb.h"
|
|
|
|
virCgroupPtr virLXCCgroupCreate(virDomainDefPtr def, bool startup);
|
|
virCgroupPtr virLXCCgroupJoin(virDomainDefPtr def);
|
|
int virLXCCgroupSetup(virDomainDefPtr def,
|
|
virCgroupPtr cgroup,
|
|
virBitmapPtr nodemask);
|
|
|
|
int virLXCCgroupGetMeminfo(virLXCMeminfoPtr meminfo);
|
|
|
|
int
|
|
virLXCSetupHostUsbDeviceCgroup(virUSBDevicePtr dev,
|
|
const char *path,
|
|
void *opaque);
|
|
|
|
int
|
|
virLXCTeardownHostUsbDeviceCgroup(virUSBDevicePtr dev,
|
|
const char *path,
|
|
void *opaque);
|
|
|
|
#endif /* __VIR_LXC_CGROUP_H__ */
|