From 14a0c2a727dd71560c3cf18171378ccde6e14699 Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Tue, 14 Nov 2017 16:32:39 +0100 Subject: [PATCH] sysctl.d: set kernel.pid_max=4194304 on 64-bit systems For CONFIG_BASE_FULL Linux kernels, the maximum number of proc/thread IDs is set to 32768 by default. This default limit can be quite easily hit during recovery on nodes with high OSD counts. To avoid hitting the pid_max default limit, attempt to configure it to 4194304, which corresponds to the maximum limit possible on 64-bit CONFIG_BASE_FULL kernels. Fixes: http://tracker.ceph.com/issues/21929 Signed-off-by: David Disseldorp --- CMakeLists.txt | 2 ++ etc/sysctl/.gitignore | 1 + etc/sysctl/{90-ceph-osd.conf => 90-ceph-osd.conf.in} | 1 + etc/sysctl/CMakeLists.txt | 8 ++++++++ 4 files changed, 12 insertions(+) create mode 100644 etc/sysctl/.gitignore rename etc/sysctl/{90-ceph-osd.conf => 90-ceph-osd.conf.in} (58%) create mode 100644 etc/sysctl/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a9360b604c..52e80d70318 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -589,6 +589,8 @@ if(WITH_SYSTEMD) add_subdirectory(systemd) endif() +add_subdirectory(etc/sysctl) + include(CTags) option(CTAG_EXCLUDES "Exclude files/directories when running ctag.") add_tags(ctags diff --git a/etc/sysctl/.gitignore b/etc/sysctl/.gitignore new file mode 100644 index 00000000000..5529d37db99 --- /dev/null +++ b/etc/sysctl/.gitignore @@ -0,0 +1 @@ +90-ceph-osd.conf diff --git a/etc/sysctl/90-ceph-osd.conf b/etc/sysctl/90-ceph-osd.conf.in similarity index 58% rename from etc/sysctl/90-ceph-osd.conf rename to etc/sysctl/90-ceph-osd.conf.in index c5c64bb7052..96bd40ac693 100644 --- a/etc/sysctl/90-ceph-osd.conf +++ b/etc/sysctl/90-ceph-osd.conf.in @@ -1 +1,2 @@ fs.aio-max-nr = 1048576 +@sysctl_pid_max@ diff --git a/etc/sysctl/CMakeLists.txt b/etc/sysctl/CMakeLists.txt new file mode 100644 index 00000000000..93cd7771538 --- /dev/null +++ b/etc/sysctl/CMakeLists.txt @@ -0,0 +1,8 @@ +if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|arm|ARM") + # 4194304 is the maximum limit possible on 64-bit CONFIG_BASE_FULL kernels. + # Keep the default for 32-bit systems. + set(sysctl_pid_max "kernel.pid_max = 4194304") +endif() + +configure_file(90-ceph-osd.conf.in + ${CMAKE_CURRENT_SOURCE_DIR}/90-ceph-osd.conf @ONLY) -- 2.39.5