From fac99683a76bce04b8836b04b2c72b8cd9ec0ba0 Mon Sep 17 00:00:00 2001 From: Krister Johansen Date: Mon, 20 Aug 2018 17:44:40 -0700 Subject: [PATCH] Switch kernel hz to 1000. While investigating performance problems around 'docker run' times, it was observed that a large amount of time was spent in network namespace creation. Of that time, a large portion involved waiting for RCU grace periods to elapse. Increasing HZ causes the periodic timer to check for quiesced periods more frequently, which consequently reduces the amount of time RCU callers spend waiting for grace periods and in barrier waits. By itself, this change took the amount of time to execute a 'docker run hello-world' down to 570ms from over 2000ms on 4.14, and down to 390ms from 1260 on 4.17 and 4.18. Signed-off-by: Krister Johansen --- kernel/config-4.14.x-aarch64 | 6 +++--- kernel/config-4.14.x-s390x | 6 +++--- kernel/config-4.14.x-x86_64 | 6 +++--- kernel/config-4.17.x-x86_64 | 6 +++--- kernel/config-4.18.x-aarch64 | 6 +++--- kernel/config-4.18.x-s390x | 6 +++--- kernel/config-4.18.x-x86_64 | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/kernel/config-4.14.x-aarch64 b/kernel/config-4.14.x-aarch64 index 345d81315..dcab59f2a 100644 --- a/kernel/config-4.14.x-aarch64 +++ b/kernel/config-4.14.x-aarch64 @@ -514,10 +514,10 @@ CONFIG_HOTPLUG_CPU=y CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y # CONFIG_HZ_100 is not set -CONFIG_HZ_250=y +# CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y diff --git a/kernel/config-4.14.x-s390x b/kernel/config-4.14.x-s390x index 4fcdc1902..e10eee894 100644 --- a/kernel/config-4.14.x-s390x +++ b/kernel/config-4.14.x-s390x @@ -460,10 +460,10 @@ CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set # CONFIG_HZ_100 is not set -CONFIG_HZ_250=y +# CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_RANDOM=y CONFIG_KERNEL_NOBP=y diff --git a/kernel/config-4.14.x-x86_64 b/kernel/config-4.14.x-x86_64 index 20302fbf6..a2089d90c 100644 --- a/kernel/config-4.14.x-x86_64 +++ b/kernel/config-4.14.x-x86_64 @@ -616,11 +616,11 @@ CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_MIXED=y CONFIG_SECCOMP=y -CONFIG_HZ_100=y +# CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y # CONFIG_KEXEC is not set # CONFIG_KEXEC_FILE is not set diff --git a/kernel/config-4.17.x-x86_64 b/kernel/config-4.17.x-x86_64 index 5e4f1dfd9..990b8bac4 100644 --- a/kernel/config-4.17.x-x86_64 +++ b/kernel/config-4.17.x-x86_64 @@ -614,11 +614,11 @@ CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_MIXED=y CONFIG_SECCOMP=y -CONFIG_HZ_100=y +# CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y # CONFIG_KEXEC is not set # CONFIG_KEXEC_FILE is not set diff --git a/kernel/config-4.18.x-aarch64 b/kernel/config-4.18.x-aarch64 index c4b36320d..eaaf00fd2 100644 --- a/kernel/config-4.18.x-aarch64 +++ b/kernel/config-4.18.x-aarch64 @@ -520,10 +520,10 @@ CONFIG_HOTPLUG_CPU=y CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y # CONFIG_HZ_100 is not set -CONFIG_HZ_250=y +# CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y diff --git a/kernel/config-4.18.x-s390x b/kernel/config-4.18.x-s390x index 8e8492523..cc714e0f6 100644 --- a/kernel/config-4.18.x-s390x +++ b/kernel/config-4.18.x-s390x @@ -443,10 +443,10 @@ CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set # CONFIG_HZ_100 is not set -CONFIG_HZ_250=y +# CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_ARCH_RANDOM=y diff --git a/kernel/config-4.18.x-x86_64 b/kernel/config-4.18.x-x86_64 index 4499471b4..349894468 100644 --- a/kernel/config-4.18.x-x86_64 +++ b/kernel/config-4.18.x-x86_64 @@ -620,11 +620,11 @@ CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_MIXED=y CONFIG_SECCOMP=y -CONFIG_HZ_100=y +# CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y # CONFIG_KEXEC is not set # CONFIG_KEXEC_FILE is not set