From 24deda5a8985fb4efae82427456d13c5b879f2a1 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Fri, 3 Oct 2014 21:50:22 +0200 Subject: invoke setsid for each job This should cause each jenkins job to reside in its own session. Linux' automatic group scheduling should then cause jobs to be scheduled equally rather than processes. The expected result is that highly parallel jobs do not slow down single-cpu jobs. --- bin/common-functions.sh | 2 +- bin/setsid.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100755 bin/setsid.py (limited to 'bin') diff --git a/bin/common-functions.sh b/bin/common-functions.sh index 7664337b..fd524d44 100755 --- a/bin/common-functions.sh +++ b/bin/common-functions.sh @@ -24,7 +24,7 @@ if [ "${0:0:5}" != "/tmp/" ] ; then # this hack makes it possible to overwrite long running scripts # anytime...) echo "$(date) - start running \"$0\" as \"$TTT\" using \"$@\" as arguments." - $TTT "$@" + /srv/jenkins/bin/setsid.py $TTT "$@" exit $? # cleanup is done automatically via trap else diff --git a/bin/setsid.py b/bin/setsid.py new file mode 100755 index 00000000..32002ec7 --- /dev/null +++ b/bin/setsid.py @@ -0,0 +1,16 @@ +#!/usr/bin/python +"""backport of util-linux' setsid -w to Debian stable""" + +import os +import sys + +if __name__ == "__main__": + assert len(sys.argv) > 1 + pid = os.fork() + if pid == 0: + os.setsid() + os.execvp(sys.argv[1], sys.argv[1:]) + else: + cpid, status = os.wait() + assert cpid == pid + sys.exit(os.WEXITSTATUS(status)) -- cgit v1.2.3-70-g09d2