I just learned the existence of nice (and ionice) which seems to be really interesting.
I just want to launch a process 'p_low' with less priority than my ususal one 'p_normal'.
What I was able to get from the wiki page (only source which shows me how the resource is distributed), is that:
a process run with nice +15 will receive 25% of the CPU time allocated to a normal-priority process: (20 − 15)/(20 − 0) = 0.25
So based on that I can provide 10% of the CPU time to my p_low process if "nice -18 p_low"
This is perfect IF MY 'p_normal' IS RUNING.
So question: is there a way to tell the scheduler to use the default niceness value, and only -18 when there is something else running?
In the worst case I can make a script which check if anything else is running, and "renice" my process, but it doesn't seem to be the best option to me...
EDIT:
ANSWER: As pointed out by @jilliagre in the comments below his answer:
if nothing else is running the command will get 100% of the CPU whatever the niceness given (-18, 0, +18, ...)
1 Answer 1
You are missing how nice works. It is simply a hint to the scheduler for it to prioritize some processes against others when there is a CPU bottleneck.
I there is nothing else running, whatever its niceness, your process will be granted all the CPU power so there is no need to change the niceness in that specific case.
-
@jilliagre, so I can basically simply launch my low priority script (p_low) with 'nice -18', right? -- if anything else run, it will allocate the full CPU power?Bast– Bast2016年02月02日 12:45:54 +00:00Commented Feb 2, 2016 at 12:45
-
nice -n -18
will make your process a high priority one, not low priority. Note that you'll need to be root to increase the priority. You probably wantnice -n 18 command ...
which will indeed leave more power to potential competing processes.jlliagre– jlliagre2016年02月02日 13:03:48 +00:00Commented Feb 2, 2016 at 13:03 -
@jilliagre, running 'nice -n 18' === 'nice -18' based on this page: thegeekstuff.com/2013/08/nice-renice-command-examples ...Bast– Bast2016年02月02日 13:12:08 +00:00Commented Feb 2, 2016 at 13:12
-
so basically, if I run 'nice -18 COMMAND' (OR 'nice -n 18'), would it execute COMMAND with 100% of the CPU time if nothing else is running?Bast– Bast2016年02月02日 13:13:34 +00:00Commented Feb 2, 2016 at 13:13
-
As already answered, if nothing else is running the command will get 100% of the CPU whatever the niceness given (-18, 0, +18, ...)jlliagre– jlliagre2016年02月02日 13:30:41 +00:00Commented Feb 2, 2016 at 13:30