summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS18
-rw-r--r--man/custom-entities.ent.in1
-rw-r--r--man/systemd-system.conf.xml10
-rw-r--r--meson.build5
-rw-r--r--meson_options.txt2
-rw-r--r--src/core/main.c2
-rw-r--r--src/core/manager.c2
-rw-r--r--src/core/meson.build6
-rw-r--r--src/core/system.conf.in (renamed from src/core/system.conf)2
9 files changed, 30 insertions, 18 deletions
diff --git a/NEWS b/NEWS
index b799c19f3b..22372a8296 100644
--- a/NEWS
+++ b/NEWS
@@ -6,15 +6,15 @@ CHANGES WITH 238 in spe:
discussions with the upstream control group maintainers we learnt
that the negative impact of cgroup memory accounting on current
kernels is finally relatively minimal, so that it should be safe to
- enable this by default without affecting system performance too
- much. Besides memory accounting only tasks accounting is turned on by
- default, all other forms of resource accounting (CPU, IO, IP) remain
- off for now, because it's not clear yet that their impact is small
- enough to move from opt-in to opt-out for them, too. We recommend
- downstreams to leave memory accounting on by default, however in some
- situations it might be wise to revert this change of defaults, in
- particular on very resource constrained systems or when support for
- old kernels is a necessity.
+ enable this by default without affecting system performance. Besides
+ memory accounting only task accounting is turned on by default, all
+ other forms of resource accounting (CPU, IO, IP) remain off for now,
+ because it's not clear yet that their impact is small enough to move
+ from opt-in to opt-out. We recommend downstreams to leave memory
+ accounting on by default if kernel 4.14 or higher is are primarily
+ used. On very resource constrained systems or when support for old
+ kernels is a necessity, -Dmemory-accounting-default=false can be used
+ to revert this change.
CHANGES WITH 237:
diff --git a/man/custom-entities.ent.in b/man/custom-entities.ent.in
index 9ea92384aa..a1dbf7133f 100644
--- a/man/custom-entities.ent.in
+++ b/man/custom-entities.ent.in
@@ -6,3 +6,4 @@
<!ENTITY systemenvgeneratordir @SYSTEM_ENV_GENERATOR_PATH@>
<!ENTITY userenvgeneratordir @USER_ENV_GENERATOR_PATH@>
<!ENTITY CERTIFICATE_ROOT @CERTIFICATE_ROOT@>
+<!ENTITY MEMORY_ACCOUNTING_DEFAULT @MEMORY_ACCOUNTING_DEFAULT_ON_OFF@>
diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
index d875a3c46f..fca9690092 100644
--- a/man/systemd-system.conf.xml
+++ b/man/systemd-system.conf.xml
@@ -1,6 +1,9 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY % entities SYSTEM "custom-entities.ent" >
+%entities;
+]>
<!--
SPDX-License-Identifier: LGPL-2.1+
@@ -338,8 +341,9 @@
<varname>CPUAccounting=</varname>, <varname>BlockIOAccounting=</varname>, <varname>MemoryAccounting=</varname>,
<varname>TasksAccounting=</varname> and <varname>IPAccounting=</varname>. See
<citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for details on the per-unit settings. <varname>DefaultTasksAccounting=</varname> and
- <varname>DefaultMemoryAccounting=</varname> default to on, the other three settings to off.</para></listitem>
+ for details on the per-unit settings. <varname>DefaultTasksAccounting=</varname> defaults to on,
+ <varname>DefaultMemoryAccounting=</varname> to &MEMORY_ACCOUNTING_DEFAULT;,
+ the other three settings to off.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/meson.build b/meson.build
index e497924cb8..b4d5964bf1 100644
--- a/meson.build
+++ b/meson.build
@@ -172,6 +172,8 @@ if pamconfdir == ''
pamconfdir = join_paths(sysconfdir, 'pam.d')
endif
+memory_accounting_default = get_option('memory-accounting-default')
+
conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
@@ -217,6 +219,8 @@ conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlib
conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
+conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
+conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
conf.set_quoted('ABS_SRC_DIR', meson.source_root())
@@ -257,6 +261,7 @@ substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
+substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
#####################################################################
diff --git a/meson_options.txt b/meson_options.txt
index 48ee3f52a4..dca9dfc16c 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -53,6 +53,8 @@ option('debug-tty', type : 'string', value : '/dev/tty9',
description : 'specify the tty device for debug shell')
option('debug', type : 'string',
description : 'enable extra debugging (hashmap,mmap-cache)')
+option('memory-accounting-default', type : 'boolean',
+ description : 'enable MemoryAccounting= by default')
option('utmp', type : 'boolean',
description : 'support for utmp/wtmp log handling')
diff --git a/src/core/main.c b/src/core/main.c
index f518656af3..125c0f4ac6 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -135,7 +135,7 @@ static bool arg_default_cpu_accounting = false;
static bool arg_default_io_accounting = false;
static bool arg_default_ip_accounting = false;
static bool arg_default_blockio_accounting = false;
-static bool arg_default_memory_accounting = true;
+static bool arg_default_memory_accounting = MEMORY_ACCOUNTING_DEFAULT;
static bool arg_default_tasks_accounting = true;
static uint64_t arg_default_tasks_max = UINT64_MAX;
static sd_id128_t arg_machine_id = {};
diff --git a/src/core/manager.c b/src/core/manager.c
index 27b041c6d2..d588341717 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -673,7 +673,7 @@ int manager_new(UnitFileScope scope, unsigned test_run_flags, Manager **_m) {
m->unit_file_scope = scope;
m->exit_code = _MANAGER_EXIT_CODE_INVALID;
m->default_timer_accuracy_usec = USEC_PER_MINUTE;
- m->default_memory_accounting = true;
+ m->default_memory_accounting = MEMORY_ACCOUNTING_DEFAULT;
m->default_tasks_accounting = true;
m->default_tasks_max = UINT64_MAX;
m->default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
diff --git a/src/core/meson.build b/src/core/meson.build
index bc034082a5..a89a12232d 100644
--- a/src/core/meson.build
+++ b/src/core/meson.build
@@ -186,7 +186,8 @@ systemd_shutdown_sources = files('''
in_files = [['macros.systemd', rpmmacrosdir],
['triggers.systemd', ''],
- ['systemd.pc', pkgconfigdatadir]]
+ ['systemd.pc', pkgconfigdatadir],
+ ['system.conf', pkgsysconfdir]]
foreach item : in_files
file = item[0]
@@ -225,8 +226,7 @@ i18n.merge_file(
install : install_polkit,
install_dir : polkitpolicydir)
-install_data('system.conf',
- 'user.conf',
+install_data('user.conf',
install_dir : pkgsysconfdir)
meson.add_install_script('sh', '-c', mkdir_p.format(systemshutdowndir))
diff --git a/src/core/system.conf b/src/core/system.conf.in
index 51a6e83ecf..08cbe529ba 100644
--- a/src/core/system.conf
+++ b/src/core/system.conf.in
@@ -42,7 +42,7 @@
#DefaultIOAccounting=no
#DefaultIPAccounting=no
#DefaultBlockIOAccounting=no
-#DefaultMemoryAccounting=yes
+#DefaultMemoryAccounting=@MEMORY_ACCOUNTING_DEFAULT@
#DefaultTasksAccounting=yes
#DefaultTasksMax=15%
#DefaultLimitCPU=