mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 07:36:19 +00:00
6b3fb86b39
libvirtd can spawn threads/tasks when creating new domains for
some hypervisors such as Xen's libxl driver, quickly reaching
the cgroups pids controller default TasksMax setting of 512. When
the limit is reached, attempting to create additional domains
results in an error from the cgroups pids controller, e.g.
kernel: [71282.213347] cgroup: fork rejected by pids controller in
/system.slice/libvirtd.service
Depending on domain type and configuration, anywhere from 4-7
threads/tasks may be created by libxl when starting a domain.
In order to support 4096 domains, similar to commit 27cd763500
,
increase the TasksMax setting in libvirtd.service to
4096 * 8 = 32768 tasks.
42 lines
1.3 KiB
SYSTEMD
42 lines
1.3 KiB
SYSTEMD
# NB we don't use socket activation. When libvirtd starts it will
|
|
# spawn any virtual machines registered for autostart. We want this
|
|
# to occur on every boot, regardless of whether any client connects
|
|
# to a socket. Thus socket activation doesn't have any benefit
|
|
|
|
[Unit]
|
|
Description=Virtualization daemon
|
|
Requires=virtlogd.socket
|
|
Requires=virtlockd.socket
|
|
Before=libvirt-guests.service
|
|
After=network.target
|
|
After=dbus.service
|
|
After=iscsid.service
|
|
After=apparmor.service
|
|
After=local-fs.target
|
|
After=remote-fs.target
|
|
Documentation=man:libvirtd(8)
|
|
Documentation=http://libvirt.org
|
|
|
|
[Service]
|
|
Type=notify
|
|
EnvironmentFile=-/etc/sysconfig/libvirtd
|
|
ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS
|
|
ExecReload=/bin/kill -HUP $MAINPID
|
|
KillMode=process
|
|
Restart=on-failure
|
|
# At least 1 FD per guest, often 2 (eg qemu monitor + qemu agent).
|
|
# eg if we want to support 4096 guests, we'll typically need 8192 FDs
|
|
# If changing this, also consider virtlogd.service & virtlockd.service
|
|
# limits which are also related to number of guests
|
|
LimitNOFILE=8192
|
|
# The cgroups pids controller can limit the number of tasks started by
|
|
# the daemon, which can limit the number of domains for some hypervisors.
|
|
# A conservative default of 8 tasks per guest results in a TasksMax of
|
|
# 32k to support 4096 guests.
|
|
TasksMax=32768
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
Also=virtlockd.socket
|
|
Also=virtlogd.socket
|