mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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@suse.com> Reviewed-by: Ian Jackson <iwj@xenproject.org> Release-Acked-by: Ian Jackson <iwj@xenproject.org>
This commit is contained in:
1 parent
c11b8d25fb
commit
f282182af3
2 files changed
+15
No files matched your search
@@ -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
|
||||
#
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||