- 5+ nice & renice command examples in Linux [Cheat Sheet]
- How is nice command different from chrt command?
- How to check the nice value of running process
- Syntax to use nice command
- Different examples to use nice and renice command
- 1. nice command to set the priority of process
- 2. nice command to increase the priority of a process
- 3. nice command to decrease the priority of a process
- 4. renice command to change priority of existing process
- 5. renice command to change the priority of all processes of a specific group
- 6. renice command to change the priority of all programs of a specific user
- Conclusion
- What’s Next
- Further Reading
- How to Set Linux Process Priority Using nice and renice Commands
- Understanding the Linux Kernel Scheduler
- Understanding Process Priority and Nice Value
- How to Check Nice Value of Linux Processes
- Difference Between PR or PRI and NI
- How to Run A Command with a Given Nice Value in Linux
- Change the Scheduling Priority of a Process in Linux
- How To Set Default Nice Value Of a Specific User’s Processes
5+ nice & renice command examples in Linux [Cheat Sheet]
An instance of a program is called a process. When you run any program, it creates a new process. In a Linux system, multiple processes are running at any given time. Each running process has a priority that indicates how fast the system executes it. Processes with a higher priority are usually completed first than with a lower priority.
In Linux, nice command helps to run a program with modified scheduling priority. You can set the priority of the process before it is started using nice command. But you cannot change the priority of the running process with nice command. Therefore, we have renice command to modify the priority of the running process.
How is nice command different from chrt command?
If you are not aware already, chrt command is another way of manipulating the real-time attributes of a process including priority.
«nice» is an historic utility which was used in the early days of batch computing to be «nice» to other users and give up some CPU time. It’s still in use and useful and applies only to processes which run with the SCHED_OTHER policy on Linux.
«chrt» is a tool to change scheduling policy (SCHED_OTHER, SCHED_FIFO, SCHED_RR) and the priority of a process/task. With chrt you can either start a process with such a policy or modify an already running process/tasks policy. You need to have the permissions to do that.
So the main difference is that «nice» can only operate within the nice levels of the SCHED_OTHER policy while «chrt» can change the policy and the priority of a process/task.
How to check the nice value of running process
The nice value ranges from -20 (highest priority) to +19 (lowest priority).
You can check the nice value of the running process using ps command with -l option.
ubuntu@golinux:~$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 1608 1598 0 80 0 - 4845 do_wai pts/0 00:00:00 bash 0 R 1000 3337 1608 0 80 0 - 5013 - pts/0 00:00:00 ps
The NI column represents the nice value, whereas the PRI column represents the priority value.
You can also use the top command to view the nice value of processes.
Syntax to use nice command
The default nice value for processes created by a user is 0.
The syntax for the nice command is:
nice [OPTION] [COMMAND [ARG]. ]
Different examples to use nice and renice command
1. nice command to set the priority of process
You can use -n or —adjustment option to set the nice value of the process.
$ nice -n nice_value command
$ nice --adjustment=nice_value command
Sample Output:
To set the nice value of top command to 10, you can run the command below. It will execute the top command with a nice value of 10.
You can also set the nice value without -n option using a hyphen.
2. nice command to increase the priority of a process
You can use — argument to increase the priority of any process. You can only set the negative nice if you run the command with root or sudo user.
Sample Output:
Here, we assigned -10 nice value to ps -l command.
Or, you can specify a nice value with -n flag.
3. nice command to decrease the priority of a process
We can again use -n argument to decrease the priority of a process by using -n along with the process to start. Alternatively we can use — to decrease the priority.
4. renice command to change priority of existing process
You can change the priority of the running process with its process ID. The super-user can alter the priority of any process and set the priority to any value. -p or —pid option is used to specify process ID.
$ sudo renice -n nice_value -p process_id
$ sudo renice -n nice_value --pid process_id
Sample Output:
5. renice command to change the priority of all processes of a specific group
You can modify the priority of all processes belonging to a specific group using the following command.
$ sudo renice -n nice_value -g group_id
$ sudo renice -n nice_value --pgrp group_id
Sample Output:
ubuntu@golinux:~$ sudo renice -n 5 -g 218 218 (process group ID) old priority -1, new priority 5
6. renice command to change the priority of all programs of a specific user
The below command changes the priority of all processes owned by the specific user.
$ sudo renice nice_value --user |
Sample Output:
ubuntu@golinux:~$ sudo renice -n 10 -u ubuntu 1000 (user ID) old priority -11, new priority 10
Conclusion
The nice and renice commands enable users to change or alter the priority of processes in a Linux system. If you still have any confusion, do let us know in the comment section.
What’s Next
Further Reading
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
How to Set Linux Process Priority Using nice and renice Commands
In this article, we’ll briefly explain the kernel scheduler (also known as the process scheduler), and process priority, which are topics beyond the scope of this guide. Then we will dive into a little bit of Linux process management: see how to run a program or command with modified priority and also change the priority of running Linux processes.
Understanding the Linux Kernel Scheduler
A kernel scheduler is a unit of the kernel that determines the most suitable process out of all runnable processes to execute next; it allocates processor time between the runnable processes on a system. A runnable process is one which is waiting only for CPU time, it’s ready to be executed.
The scheduler forms the core of multitasking in Linux, using a priority-based scheduling algorithm to choose between the runnable processes in the system. It ranks processes based on the most deserving as well as the need for CPU time.
Understanding Process Priority and Nice Value
The kernel stores a great deal of information about processes including process priority which is simply the scheduling priority attached to a process. Processes with a higher priority will be executed before those with a lower priority, while processes with the same priority are scheduled one after the next, repeatedly.
There are a total of 140 priorities and two distinct priority ranges implemented in Linux. The first one is a nice value (niceness) which ranges from -20 (highest priority value) to 19 (lowest priority value) and the default is 0 , this is what we will uncover in this guide. The other is the real-time priority, which ranges from 1 to 99 by default, then 100 to 139 are meant for user-space.
One important characteristic of Linux is dynamic priority-based scheduling, which allows the nice value of processes to be changed (increased or decreased) depending on your needs, as we’ll see later on.
How to Check Nice Value of Linux Processes
To see the nice values of processes, we can use utilities such as ps, top or htop.
To view processes nice value with ps command in user-defined format (here the NI the column shows the niceness of processes).
Alternatively, you can use top or htop utilities to view Linux processes nice values as shown.
Difference Between PR or PRI and NI
From the top and htop outputs above, you’ll notice that there is a column called PR and PRI receptively which shows the priority of a process.
This, therefore, means that:
- NI – is the nice value, which is a user-space concept, while
- PR or PRI – is the process’s actual priority, as seen by the Linux kernel.
How To Calculate PR or PRI Values
Total number of priorities = 140 Real time priority range(PR or PRI): 0 to 99 User space priority range: 100 to 139
Nice value range (NI): -20 to 19
PR = 20 + NI PR = 20 + (-20 to + 19) PR = 20 + -20 to 20 + 19 PR = 0 to 39 which is same as 100 to 139.
But if you see a rt rather than a number as shown in the screenshot below, it basically means the process is running under real-time scheduling priority.
How to Run A Command with a Given Nice Value in Linux
Here, we will look at how to prioritize the CPU usage of a program or command. If you have a very CPU-intensive program or task, but you also understand that it might take a long time to complete, you can set it a high or favorable priority using the nice command.
$ nice -n niceness-value [command args] OR $ nice -niceness-value [command args] #it’s confusing for negative values OR $ nice --adjustment=niceness-value [command args]
- If no value is provided, nice sets a priority of 10 by default.
- A command or program run without nice defaults to a priority of zero.
- Only root can run a command or program with increased or high priority.
- Normal users can only run a command or program with low priority.
For example, instead of starting a program or command with the default priority, you can start it with a specific priority using following nice command.
$ sudo nice -n 5 tar -czf backup.tar.gz ./Documents/* OR $ sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*
You can also use the third method which is a little confusing especially for negative niceness values.
$ sudo nice -5 tar -czf backup.tar.gz ./Documents/*
Change the Scheduling Priority of a Process in Linux
As we mentioned before, Linux allows dynamic priority-based scheduling. Therefore, if a program is already running, you can change its priority with the renice command in this form:
$ renice -n -12 -p 1055 $ renice -n -2 -u apache
From the sample top output below, the niceness of the teamspe+ with PID 1055 is now -12 and for all processes owned by user apache is -2 .
Still using this output, you can see the formula PR = 20 + NI stands,
PR for ts3server = 20 + -12 = 8 PR for apache processes = 20 + -2 = 18
Any changes you make with renice command to a user’s processes nice values are only applicable until the next reboot. To set permanent default values, read the next section.
How To Set Default Nice Value Of a Specific User’s Processes
You can set the default nice value of a particular user or group in the /etc/security/limits.conf file. Its primary function is to define the resource limits for the users logged in via PAM.
The syntax for defining a limit for a user is as follows (and the possible values of the various columns are explained in the file):
Now use the syntax below where hard – means enforcing hard links and soft means – enforcing the soft limits.
Alternatively, create a file under /etc/security/limits.d/ which overrides settings in the main file above, and these files are read in alphabetical order.
Start by creating the file /etc/security/limits.d/tecmint-priority.conf for user tecmint:
# vi /etc/security/limits.d/tecmint-priority.conf
Then add this configuration in it:
Save and close the file. From now on, any process owned by tecmint will have a nice value of 10 and PR of 30.
For more information, read the man pages of nice and renice:
You might also like to read these following articles about Linux process management.
In this article, we briefly explained the kernel scheduler, process priority, looked at how to run a program or command with modified priority and also change the priority of active Linux processes. You can share any thoughts regarding this topic via the feedback form below.