]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: change TasksMax= default for system services to 15%
authorLennart Poettering <lennart@poettering.net>
Tue, 19 Jul 2016 15:29:00 +0000 (17:29 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 22 Jul 2016 13:33:13 +0000 (15:33 +0200)
As it turns out 512 is max number of tasks per service is hit by too many
applications, hence let's bump it a bit, and make it relative to the system's
maximum number of PIDs. With this change the new default is 15%. At the
kernel's default pids_max value of 32768 this translates to 4915. At machined's
default TasksMax= setting of 16384 this translates to 2457.

Why 15%? Because it sounds like a round number and is close enough to 4096
which I was going for, i.e. an eight-fold increase over the old 512

Summary:

            | on the host | in a container
old default |         512 |           512
new default |        4915 |          2457

man/systemd-system.conf.xml
src/core/main.c
src/core/manager.c
src/core/system.conf

index 8833e73c7296b93c5358e751e71ff8821133be6e..1bb40fd234aac4b34b3001fd2c675cb20bf801c5 100644 (file)
       <varlistentry>
         <term><varname>DefaultTasksMax=</varname></term>
 
-        <listitem><para>Configure the default value for the per-unit
-        <varname>TasksMax=</varname> setting. See
+        <listitem><para>Configure the default value for the per-unit <varname>TasksMax=</varname> setting. See
         <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-        for details. This setting applies to all unit types that
-        support resource control settings, with the exception of slice
-        units. Defaults to 512.</para></listitem>
+        for details. This setting applies to all unit types that support resource control settings, with the exception
+        of slice units. Defaults to 15%, which equals 4915 with the kernel's defaults on the host, but might be smaller
+        in OS containers.</para></listitem>
       </varlistentry>
 
       <varlistentry>
index 4c767a3c9d5aabad6a81fe8a2d05e9e86b81fe6e..c59228ad537cc0b60aef11053416022b7f075a33 100644 (file)
@@ -127,7 +127,7 @@ static bool arg_default_io_accounting = false;
 static bool arg_default_blockio_accounting = false;
 static bool arg_default_memory_accounting = false;
 static bool arg_default_tasks_accounting = true;
-static uint64_t arg_default_tasks_max = UINT64_C(512);
+static uint64_t arg_default_tasks_max = UINT64_MAX;
 static sd_id128_t arg_machine_id = {};
 
 noreturn static void freeze_or_reboot(void) {
@@ -1558,6 +1558,8 @@ int main(int argc, char *argv[]) {
         (void) reset_all_signal_handlers();
         (void) ignore_signals(SIGNALS_IGNORE, -1);
 
+        arg_default_tasks_max = system_tasks_max_scale(15U, 100U); /* 15% the system PIDs equals 4915 by default. */
+
         if (parse_config_file() < 0) {
                 error_message = "Failed to parse config file";
                 goto finish;
index a0181e2138e6c7b793b4eb8d581ca8743d964443..4d84a0b37e26ec6227c1e6524c350ff4953abf28 100644 (file)
@@ -569,7 +569,7 @@ int manager_new(UnitFileScope scope, bool test_run, Manager **_m) {
         m->exit_code = _MANAGER_EXIT_CODE_INVALID;
         m->default_timer_accuracy_usec = USEC_PER_MINUTE;
         m->default_tasks_accounting = true;
-        m->default_tasks_max = UINT64_C(512);
+        m->default_tasks_max = UINT64_MAX;
 
 #ifdef ENABLE_EFI
         if (MANAGER_IS_SYSTEM(m) && detect_container() <= 0)
index db8b7acd7866db5e1908dd6744327200b5e280fe..c6bb050aaccce4bc1524f8b85c31240dc4897e68 100644 (file)
@@ -42,7 +42,7 @@
 #DefaultBlockIOAccounting=no
 #DefaultMemoryAccounting=no
 #DefaultTasksAccounting=yes
-#DefaultTasksMax=512
+#DefaultTasksMax=15%
 #DefaultLimitCPU=
 #DefaultLimitFSIZE=
 #DefaultLimitDATA=