compat: add ionice to ckmake again
authorLuis R. Rodriguez <mcgrof@do-not-panic.com>
Thu, 20 Dec 2012 00:36:38 +0000 (16:36 -0800)
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>
Thu, 20 Dec 2012 00:39:53 +0000 (16:39 -0800)
This adds back the ionice settings on the make
call. The copying of content on the thread is not
yet reniced and although Python has utilities to
modify niceness and ionice there are privileged
requirements on the levels we want and I'm not too
sure yet how to resolve this in a reasonable way.

This for example fails:

p = psutil.Process(os.getpid())
delta = -20 - os.nice(0)
p.set_nice(delta)
p.set_ionice(psutil.IOPRIO_CLASS_RT)

This improves perfomance by about 1 minute.

real    17m53.079s
user    446m12.733s
sys     66m13.372s

Since ckmake is multithreaded now though it meant that
we had to copy the content of the code that we want to
compile for each kernel on a new directory. This work
is not reprioritized as it is nice so the best thing
I can think of is we renice the ckmake process our
ourselves and therefore children would properly inherit
the priority.

ionice -c 3 nice -n 20 ckmake

Can we do better without networking the solution ?

Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
bin/ckmake

index 97227763c00b202360c835217b4941b896a7f96c..34bfb09f0225ae27b713c6ee7ecca805b5845011 100755 (executable)
@@ -144,7 +144,8 @@ def process_kernel(num, kset):
                # XXX: figure out how to properly address logging
                # without this nasty ass hack.
                log = ' > %(log)s 2>&1' % { "log": log_file }
-               cmd = 'make ' + jobs + make_args + log
+               nice = 'ionice -c 3 nice -n 20 '
+               cmd = nice + 'make ' + jobs + make_args + log
 
                kset.baking(rel)