mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-18 18:45:16 +00:00
Adding memtunables to qemuSetupCgroup
QEmu startup will pick up the memory tunables specified in the domain configuration file
This commit is contained in:
parent
013fe4b848
commit
261ad74e52
@ -111,13 +111,13 @@
|
|||||||
# the adminsitrator has mounted cgroups. eg
|
# the adminsitrator has mounted cgroups. eg
|
||||||
#
|
#
|
||||||
# mkdir /dev/cgroup
|
# mkdir /dev/cgroup
|
||||||
# mount -t cgroup -o devices,cpu none /dev/cgroup
|
# mount -t cgroup -o devices,cpu,memory none /dev/cgroup
|
||||||
#
|
#
|
||||||
# They can be mounted anywhere, and different controlers
|
# They can be mounted anywhere, and different controlers
|
||||||
# can be mounted in different locations. libvirt will detect
|
# can be mounted in different locations. libvirt will detect
|
||||||
# where they are located.
|
# where they are located.
|
||||||
#
|
#
|
||||||
# cgroup_controllers = [ "cpu", "devices" ]
|
# cgroup_controllers = [ "cpu", "devices", "memory" ]
|
||||||
|
|
||||||
# This is the basic set of devices allowed / required by
|
# This is the basic set of devices allowed / required by
|
||||||
# all virtual machines.
|
# all virtual machines.
|
||||||
|
@ -275,7 +275,8 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
|
|||||||
} else {
|
} else {
|
||||||
driver->cgroupControllers =
|
driver->cgroupControllers =
|
||||||
(1 << VIR_CGROUP_CONTROLLER_CPU) |
|
(1 << VIR_CGROUP_CONTROLLER_CPU) |
|
||||||
(1 << VIR_CGROUP_CONTROLLER_DEVICES);
|
(1 << VIR_CGROUP_CONTROLLER_DEVICES) |
|
||||||
|
(1 << VIR_CGROUP_CONTROLLER_MEMORY);
|
||||||
}
|
}
|
||||||
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
||||||
if (driver->cgroupControllers & (1 << i)) {
|
if (driver->cgroupControllers & (1 << i)) {
|
||||||
|
@ -3497,6 +3497,40 @@ static int qemuSetupCgroup(struct qemud_driver *driver,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((rc = qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_MEMORY))) {
|
||||||
|
if (vm->def->mem.hard_limit != 0) {
|
||||||
|
rc = virCgroupSetMemoryHardLimit(cgroup, vm->def->mem.hard_limit);
|
||||||
|
if (rc != 0) {
|
||||||
|
virReportSystemError(-rc,
|
||||||
|
_("Unable to set memory hard limit for domain %s"),
|
||||||
|
vm->def->name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (vm->def->mem.soft_limit != 0) {
|
||||||
|
rc = virCgroupSetMemorySoftLimit(cgroup, vm->def->mem.soft_limit);
|
||||||
|
if (rc != 0) {
|
||||||
|
virReportSystemError(-rc,
|
||||||
|
_("Unable to set memory soft limit for domain %s"),
|
||||||
|
vm->def->name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vm->def->mem.swap_hard_limit != 0) {
|
||||||
|
rc = virCgroupSetSwapHardLimit(cgroup, vm->def->mem.swap_hard_limit);
|
||||||
|
if (rc != 0) {
|
||||||
|
virReportSystemError(-rc,
|
||||||
|
_("Unable to set swap hard limit for domain %s"),
|
||||||
|
vm->def->name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
VIR_WARN("Memory cgroup is disabled in qemu configuration file: %s",
|
||||||
|
vm->def->name);
|
||||||
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
virCgroupFree(&cgroup);
|
virCgroupFree(&cgroup);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user