[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] tools/xenstore: set oom score for xenstore daemon on Linux



commit f282182af32939107d47943aba242d3189ec6f90
Author:     Juergen Gross <jgross@xxxxxxxx>
AuthorDate: Tue Oct 12 15:41:47 2021 +0200
Commit:     Ian Jackson <iwj@xxxxxxxxxxxxxx>
CommitDate: Mon Oct 18 14:15:59 2021 +0100

    tools/xenstore: set oom score for xenstore daemon on Linux
    
    Xenstored is absolutely mandatory for a Xen host and it can't be
    restarted, so being killed by OOM-killer in case of memory shortage is
    to be avoided.
    
    Set /proc/$pid/oom_score_adj (if available) per default to -500 (this
    translates to 50% of dom0 memory size) in order to allow xenstored to
    use large amounts of memory without being killed.
    
    The percentage of dom0 memory above which the oom killer is allowed to
    kill xenstored can be set via XENSTORED_OOM_MEM_THRESHOLD in
    xencommons.
    
    Make sure the pid file isn't a left-over from a previous run delete it
    before starting xenstored.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
    Release-Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
---
 tools/hotplug/Linux/init.d/sysconfig.xencommons.in | 9 +++++++++
 tools/hotplug/Linux/launch-xenstore.in             | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in 
b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
index 00cf7f91d4..b83101ab7e 100644
--- a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
+++ b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
@@ -48,6 +48,15 @@ XENSTORED_ARGS=
 # Only evaluated if XENSTORETYPE is "daemon".
 #XENSTORED_TRACE=[yes|on|1]
 
+## Type: integer
+## Default: 50
+#
+# Percentage of dom0 memory size the xenstore daemon can use before the
+# OOM killer is allowed to kill it.
+# The specified value is multiplied by -10 and echoed to
+# /proc/PID/oom_score_adj.
+#XENSTORED_OOM_MEM_THRESHOLD=50
+
 ## Type: string
 ## Default: @LIBEXEC@/boot/xenstore-stubdom.gz
 #
diff --git a/tools/hotplug/Linux/launch-xenstore.in 
b/tools/hotplug/Linux/launch-xenstore.in
index 019f9d6f4d..1747c96065 100644
--- a/tools/hotplug/Linux/launch-xenstore.in
+++ b/tools/hotplug/Linux/launch-xenstore.in
@@ -59,11 +59,17 @@ test -f @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons && . 
@CONFIG_DIR@/@CONFIG_LEAF
                echo "No xenstored found"
                exit 1
        }
+       [ -z "$XENSTORED_OOM_MEM_THRESHOLD" ] || XENSTORED_OOM_MEM_THRESHOLD=50
+       XS_OOM_SCORE=-$(($XENSTORED_OOM_MEM_THRESHOLD * 10))
+
+       rm -f @XEN_RUN_DIR@/xenstored.pid
 
        echo -n Starting $XENSTORED...
        $XENSTORED --pid-file @XEN_RUN_DIR@/xenstored.pid $XENSTORED_ARGS
 
        systemd-notify --booted 2>/dev/null || timeout_xenstore $XENSTORED || 
exit 1
+       XS_PID=`cat @XEN_RUN_DIR@/xenstored.pid`
+       echo $XS_OOM_SCORE >/proc/$XS_PID/oom_score_adj
 
        exit 0
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.