Merge pull request #25638 from bluca/rate_limit_config

pid1: add env var to override default mount rate limit burst
This commit is contained in:
Luca Boccassi
2022-12-06 02:07:47 +01:00
committed by GitHub
3 changed files with 18 additions and 2 deletions
+7
View File
@@ -283,6 +283,13 @@ All tools:
type as unsupported may not prevent loading some units of that type if they
are referenced by other units of another supported type.
* `$SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST` — can be set to override the mount
units burst rate limit for parsing `/proc/self/mountinfo`. On a system with
few resources but many mounts the rate limit may be hit, which will cause the
processing of mount units to stall. The burst limit may be adjusted when the
default is not appropriate for a given system. Defaults to `5`, accepts
positive integers.
`systemd-remount-fs`:
* `$SYSTEMD_REMOUNT_ROOT_RW=1` — if set and no entry for the root directory
+10 -1
View File
@@ -1909,6 +1909,7 @@ static void mount_enumerate(Manager *m) {
mnt_init_debug(0);
if (!m->mount_monitor) {
unsigned mount_rate_limit_burst = 5;
int fd;
m->mount_monitor = mnt_new_monitor();
@@ -1948,7 +1949,15 @@ static void mount_enumerate(Manager *m) {
goto fail;
}
r = sd_event_source_set_ratelimit(m->mount_event_source, 1 * USEC_PER_SEC, 5);
/* Let users override the default (5 in 1s), as it stalls the boot sequence on busy systems. */
const char *e = secure_getenv("SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST");
if (e) {
r = safe_atou(e, &mount_rate_limit_burst);
if (r < 0)
log_debug("Invalid value in $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST, ignoring: %s", e);
}
r = sd_event_source_set_ratelimit(m->mount_event_source, 1 * USEC_PER_SEC, mount_rate_limit_burst);
if (r < 0) {
log_error_errno(r, "Failed to enable rate limit for mount events: %m");
goto fail;
+1 -1
View File
@@ -1344,7 +1344,7 @@ create_empty_image() {
fi
# Partition sizes are in MiBs
local root_size=500
local root_size=1000
local data_size=50
if ! get_bool "$NO_BUILD"; then
if meson configure "${BUILD_DIR:?}" | grep 'static-lib\|standalone-binaries' | awk '{ print $2 }' | grep -q 'true'; then