nice
is a program found on
Unix and
Unix-like operating systems such as
Linux. It directly maps to a
kernel call of the same name.
nice
is used to invoke a
utility or
shell script
A shell script is a computer program designed to be run by a Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages. Typical operations performed by shell scripts include file manip ...
with a particular
CPU priority, thus giving the
process more or less CPU time than other processes. A niceness of -20 is the highest priority and 19 is the lowest priority. The default niceness for processes is inherited from its parent process and is usually 0.
Etymology
''Niceness value'' is a number attached to processes in *nix systems, that is used along with other data (such as the amount of
I/O done by each process) by the kernel process scheduler to calculate a process' 'true priority'which is used to decide how much CPU time is allocated to it.
The program's name,
nice, is an allusion to its task of modifying a process' niceness value.
The term ''niceness'' itself originates from the idea that a process with a higher niceness value is ''nicer'' to other processes in the system and to users by virtue of demanding less CPU powerfreeing up processing time and power for the more demanding programs, who would in this case be less ''nice'' to the system from a CPU usage perspective.
Use and effect
nice
becomes useful when several processes are demanding more resources than the
CPU
A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, and ...
can provide. In this state, a higher-priority process will get a larger chunk of the CPU time than a lower-priority process. Only the
superuser
In computing, the superuser is a special user account used for system administration. Depending on the operating system (OS), the actual name of this account might be root, administrator, admin or supervisor. In some cases, the actual name of t ...
(root) may set the niceness to a lower value (i.e. a higher priority). On Linux it is possible to change
/etc/security/limits.conf
to allow other users or groups to set low nice values.
If a user wanted to compress a large file without slowing down other processes, they might run the following:
$ nice -n 19 tar cvzf archive.tgz largefile
The exact mathematical effect of setting a particular niceness value for a process depends on the details of how the
scheduler is designed on that implementation of Unix. A particular operating system's scheduler will also have various heuristics built into it (e.g. to favor processes that are mostly I/O-bound over processes that are CPU-bound). As a simple example, when two otherwise identical CPU-bound processes are running simultaneously on a single-CPU Linux system, each one's share of the CPU time will be proportional to 20 − ''p'', where ''p'' is the process' priority. Thus a process, run with
nice +15
, will receive 25% of the CPU time allocated to a normal-priority process: (20 − 15)/(20 − 0) = 0.25. On the
BSD
The Berkeley Software Distribution or Berkeley Standard Distribution (BSD) is a discontinued operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berk ...
4.x scheduler, on the other hand, the ratio in the same example is about ten to one.
Similar commands
The related
renice
program can be used to change the priority of a process that is already running.
Linux also has an
ionice
program, which affects scheduling of I/O rather than CPU time.
See also
*
kill
*
ps
*
top
* ''ionice'' from
util-linux (see manual for disk storage I/O priorities)
References
External links
*
{{Core Utilities commands
Unix SUS2008 utilities
Unix process- and task-management-related software