GNU niceload will slow down a program when the load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. Then resumed again for some time. Then the load average is checked again and we start over.
Instead of load average niceload can also look at disk I/O, amount of free memory, or swapping activity.
Read more at : http://www.gnu.org/software/parallel/niceload.html