When examining top
, htop
, or system monitoring tools on Linux systems, you'll encounter four primary CPU utilization metrics:
us: user time
sy: system time
ni: nice time
id: idle time
Nice time represents CPU cycles spent executing processes that have been manually assigned a non-default priority using the nice
command or setpriority()
system call. These processes run with adjusted scheduling priority (from -20 to 19, where lower numbers indicate higher priority).
Here's how to set process priority and observe nice time:
# Run a process with low priority
nice -n 19 ./long_running_script.sh
# Change priority of running process
renice +5 -p 1234
Monitoring nice time becomes particularly important when:
- Running background batch jobs
- Managing CPU-intensive tasks
- Optimizing system performance
Here's a Python script to monitor nice time percentage:
import psutil
def get_nice_time():
cpu_times = psutil.cpu_times_percent(interval=1)
return cpu_times.nice
print(f"Nice CPU time: {get_nice_time()}%")
High nice time percentages (consistently >10%) might indicate:
- Too many low-priority processes
- Incorrect priority assignments
- Potential system resource contention
To properly manage nice time:
- Use
nice
for non-critical processes - Monitor nice time trends (sudden spikes may indicate issues)
- Combine with I/O priority (
ionice
) for complete resource control
When monitoring system performance on Ubuntu servers or any Linux distribution, you'll encounter four primary CPU utilization metrics:
1. User - Time spent executing user-space processes 2. System - Time spent executing kernel-space processes 3. Nice - Time spent executing low-priority (niced) processes 4. Idle - Time when CPU was not executing any tasks
The "Nice" value represents CPU cycles consumed by processes that have been intentionally assigned a lower priority using the nice
command or setpriority()
system call. These processes voluntarily yield CPU resources to more important tasks.
Here's how to set process priority using the nice command:
# Run a process with low priority (niceness +10) nice -n 10 ./long_running_script.sh # Change priority of running process (PID 1234) renice +15 -p 1234
In C programming, you can adjust priority programmatically:
#include// Set current process to nice value of 10 setpriority(PRIO_PROCESS, 0, 10);
Common scenarios for niced processes include:
- Background batch jobs - Data processing tasks - Non-critical maintenance scripts - CPU-intensive but low-priority computations
Use these commands to monitor nice CPU utilization:
# Basic CPU stats mpstat -P ALL 1 # Detailed breakdown (including nice) sar -u 1 3 # Process-level view with nice values top -o %CPU
High nice CPU utilization typically indicates:
- System is properly prioritizing critical tasks - Background processes are behaving as intended - No immediate performance issues (unless nice % is extremely high)