Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I have an rsync cron job which is pushing the server load and triggering monitor alerts. If I set the job to be run with a high nice level, would that effectively reduce the impact it has on system load values?

share|improve this question

3 Answers 3

up vote 5 down vote accepted

It will not reduce your load.

It will only let other processes use CPU time more often if there is a possible resource contention (several processes "competing" for not enough available CPU time).

share|improve this answer
    
This is also the right answer if the original question is to be taken literally. –  M_dk Dec 17 '13 at 21:48

Changing the nice value will not directly reduce system load. It can however be used to leave more resources available to the remaining processes, which I suspect is what you really want.

From http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

Kernel decides how much processor time is required for a process based on the nice value. Possible nice value range is: -20 to 20. A process that has a nice value of -20 is very high priority. The process that has a nice value of 20 is very low priority.

So yes, you want to run the cron job at a higher level than the other processes if you want to make sure that other processes get priority.

To do this you want your cron script to be executed like this:

/bin/nice -n 10 /path/to/cron-script

This will run the cron script at at niceness increased by 10. You probably want to test a bit to find a nice (pun not intended) balance between the remaining processes and the execution time of the script.

See also How is nice working? and http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ for more details.

share|improve this answer

Changing the nice level of a process is unlikely to affect the system load value. The system load value is the average length of the run queue, which is basically the number of processes wanting to use the CPU.

If you are running a CPU-bound process (rsync isn't, but just for example), then it will always want to use CPU time whenever there is some available. Since it always wants to run, it will contribute a load value of 1.0 to the system load value. It doesn't matter what the process nice level is, because the average length of the run queue is unaffected by the order of processes in the run queue.

share|improve this answer
    
That is true. I however did guess about what the asker wanted. I am not sure I understand why you would want to keep the system load value low. Asking about niceness only really makes sense when considering other processes so went ahead with that answer. –  M_dk Dec 17 '13 at 21:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.