[PATCH 3/3] Make LXC controller use a private dbus connection & close it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>

The LXC controller uses dbus to talk to systemd to create
cgroups. This means that each LXC controller instance has
a dbus connection. The DBus daemon is limited to 256
connections by default and we want to be able to run many
1000 of containers.

While the dbus limit could be raised in the config files,
it is simpler to make libvirt LXC controller close its
dbus connection once everything is configured.

Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
---
 src/Makefile.am          | 1 +
 src/lxc/lxc_controller.c | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/src/Makefile.am b/src/Makefile.am
index 201c268..e58d408 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2381,6 +2381,7 @@ libvirt_lxc_CFLAGS =				\
 		$(PIE_CFLAGS)			\
 		$(LIBNL_CFLAGS)			\
 		$(FUSE_CFLAGS)			\
+		$(DBUS_CFLAGS)			\
 		$(NULL)
 if WITH_BLKID
 libvirt_lxc_CFLAGS += $(BLKID_CFLAGS)
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index bb33c28..b881f17 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -64,6 +64,7 @@
 #include "virrandom.h"
 #include "virprocess.h"
 #include "virnuma.h"
+#include "virdbus.h"
 #include "rpc/virnetserver.h"
 #include "virstring.h"
 
@@ -2200,6 +2201,12 @@ virLXCControllerRun(virLXCControllerPtr ctrl)
         if (virLXCControllerConsoleSetNonblocking(&(ctrl->consoles[i])) < 0)
             goto cleanup;
 
+    /* We must not hold open a dbus connection for life
+     * of LXC instance, since dbus-daemon is limited to
+     * only a few 100 connections by default
+     */
+    virDBusCloseSystemBus();
+
     rc = virLXCControllerMain(ctrl);
 
     virLXCControllerEventSendExit(ctrl, rc);
@@ -2351,6 +2358,8 @@ int main(int argc, char *argv[])
 
     virEventRegisterDefaultImpl();
 
+    virDBusSetSharedBus(false);
+
     if (!(ctrl = virLXCControllerNew(name)))
         goto cleanup;
 
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]