top
and ps lax
will display the current nice level of all the processes on the system in the NI
column.
An analogy for nice levels and CPU load
Think of the CPU as a cashier at a checkout counter at a supermarket. If you have a multi-core CPU, there are several of these.
Each counter has a queue of customers waiting to pay for their groceries. This is the run queue of the CPU.
The length of the queue is the current CPU load. That's the load on the person behind the counter at this moment.
A person in the queue may be nice to the people behind, being totally fine with letting them get past them in the queue if they really need to hurry.
The cashier at the counter still has the same amount to work to do, and still works at the same pace (100%, until the queue is empty), but the people in the queue will arrive at the counter in an order depending on, amongst other things, how nice they are to other people in the queue.
In your case, the supermarket may be quite empty, but there's this one single customer with his really big trolley that needs to check out, and the cashier is working as hard as they can to process all the stuff he's buying. He is very nice though... but that doesn't really matter, the cashier won't slow down to have time for a chat.
On a Unix system, as opposed to at a supermarket, the CPU will only handle a process for a slice of time before sending them back into the queue. This is so that one single process won't block others.
You may even squeeze in context switching into this analogy. This is when the CPU switches from handling one process to handling another, and it can be time consuming to do it too often. This is basically what happens in-between serving customers at the counter; the time taken for the processed groceries to be put into bags etc. and the time taken for the next customer to move forwards, say "hi" etc.
Note: I'm using "CPU" above where in some cases I should say "kernel". From a user experience point-of-view, there's no difference.
nice
is not meant to control the processing speed but the priority. If nothing else is running, then it remains the highest priority running task.