One place Linux could still use some work is I/O scheduling. By default it's quite possible for one task to crater your system because it's churning through a lot of data. You can fix this both ahead of time and while a task is running with ionice.
ionice is part of the util-linux package and it allows you to set the I/O priority of a task. It's the obvious companion to the nice command that sets task processing priority. While there's a number of things you could do with it, the most common thing is to set a task to idle priority with ionice -c idle. Specifying -c 3 will do the same thing. And you can also do this to a running process using the -p flag, as in ionice -c 3 -p $PID.
I use a one-liner script/alias for running possibly objectionable processes called nicer which reads:
nice ionice -c idle $*
This runs the process with reduced task and I/O priority. It shouldn't matter whether you use nice or ionice first, as both task and I/O priority should be inherited by child processes.
If you want to change the task priority of a running process, look at renice.