From f85e0ba353c71fc5c8bacebe006e68bebf2af024 Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Fri, 17 Mar 2017 12:54:30 -0700 Subject: [PATCH] Enable Kernel Samepage Merging by default In an effort to reduce memory consumption enable KSM by default. The biggest win here is when using libvirt with nova or ironic with its fake baremetal instances. In theory any process that runs duplicates with mergeable memory will benefit though. Change-Id: I4c5addfd3e83b6516023b36cbaabd5169f0d5ceb --- stack.sh | 16 ++++++++++++++++ stackrc | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/stack.sh b/stack.sh index 20cdc1dfcc..504d94f148 100755 --- a/stack.sh +++ b/stack.sh @@ -1006,6 +1006,22 @@ init_service_check # Save configuration values save_stackenv $LINENO +# Kernel Samepage Merging (KSM) +# ----------------------------- + +# Processes that mark their memory as mergeable can share identical memory +# pages if KSM is enabled. This is particularly useful for nova + libvirt +# backends but any other setup that marks its memory as mergeable can take +# advantage. The drawback is there is higher cpu load; however, we tend to +# be memory bound not cpu bound so enable KSM by default but allow people +# to opt out if the CPU time is more important to them. + +if [[ "ENABLE_KSM" == "True" ]] ; then + if [[ -f /sys/kernel/mm/ksm/run ]] ; then + sudo sh -c "echo 1 > /sys/kernel/mm/ksm/run" + fi +fi + # Start Services # ============== diff --git a/stackrc b/stackrc index 61501b5696..b53f791380 100644 --- a/stackrc +++ b/stackrc @@ -104,6 +104,14 @@ if [[ "$USE_SYSTEMD" == "True" ]]; then USE_SCREEN=False fi +# Whether or not to enable Kernel Samepage Merging (KSM) if available. +# This allows programs that mark their memory as mergeable to share +# memory pages if they are identical. This is particularly useful with +# libvirt backends. This reduces memory useage at the cost of CPU overhead +# to scan memory. We default to enabling it because we tend to be more +# memory constrained than CPU bound. +ENABLE_KSM=$(trueorfalse True ENABLE_KSM) + # When using screen, should we keep a log file on disk? You might # want this False if you have a long-running setup where verbose logs # can fill-up the host.