[systemd-devel] journalctl --sync blocks when some app intensively log to stdout

Lennart Poettering lennart at poettering.net
Sat Dec 19 10:16:16 UTC 2020


On Fr, 11.09.20 09:39, Belisko Marek (marek.belisko at gmail.com) wrote:

> Hi,

Sorry for the late reply.

> and it blocks forever. I was looking into a similar issue:
> https://github.com/systemd/systemd/pull/1848 but this part is already
> included in the systemd we're using (v234) and it's about persistent
> logging. Any ideas on what we can check or what can cause this
> behavior?

This might simply be an event loop starvation issue, i.e. the sync
logic runs at "idle" priority, i.e. if there's no other event to
process anymore. However, if you keep bombarding the journal with log
events, then this means the sync logic can be starvaed out because
there's always something else to do.

Note that you are running a more than 3 year old systemd
version. Since then some work got merged into journald that
aggressively caches process metadata so that it doesn't have to be
reacquired on each log event. This means the work that needs to be
done per log event is drastically reduced, thus making the problem
less of an issue.

That said, even then the starvation issue might still exist. We
recently merged some feature work to the event loops we use that
allows to address certain forms of starvation. It's not used for
journald yet. Please file a bug on github about this if current
journald versions still show this behaviour for you, and we can look
in making use of this to make the sync stuff eventually complete even
if journald is under load.

Lennart

--
Lennart Poettering, Berlin


More information about the systemd-devel mailing list