]> git.lttng.org Git - lttng-tools.git/commit
Fix: Close per-process event notifier error accounting fds on registration
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 4 Nov 2024 18:26:50 +0000 (13:26 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 25 Nov 2024 20:22:25 +0000 (20:22 +0000)
commitd28587c57231e761fc4c58eb6aeaeb60e822c793
tree57424f42c8c1d9e791e807cc3f45b8499f8cc16d
parentea37569f8d76e8987a32c788301037031dfe3808
Fix: Close per-process event notifier error accounting fds on registration

On application registration, the event notifier error accounting file
descriptors are duplicated to send the error accounting counter objects
to the application.

Those are left open until the application unregisters.

There is one file descriptor per CPU, so on larger systems (228 CPUs
Intel or 192 CPUs AMD EPYC), this adds up to a lot of file descriptors
when the number of registered applications is large, which can result in
file descriptor exhaustion errors.

Moreover, the application unregistration is done from delete_ust_app(),
which is used from a call_rcu() worker thread, thus after an RCU grace
period delay. This means that a steady stream of short-lived
applications with a short enough lifetime could end up allocating more
file descriptors than can be closed.

Fix this by closing those file descriptors immediately after the objects
are sent to the application, similarly to what is done for the ring
buffer streams.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ia1bbc3ff09a20f37d069ade7e267fb043ea1ac7f
src/bin/lttng-sessiond/event-notifier-error-accounting.cpp
This page took 0.029166 seconds and 4 git commands to generate.