Este artículo necesita citas adicionales para su verificación . ( noviembre de 2010 ) |
Desarrollador(es) | Laboratorios Bell de AT&T |
---|---|
Lanzamiento inicial | Noviembre de 1973 ( 1973-11 ) |
Sistema operativo | Unix y similares |
Plataforma | Multiplataforma |
Tipo | Dominio |
Licencia | coreutils : GNU GPL v3 4.4BSD : Licencia BSD |
nice
es un programa que se encuentra en sistemas operativos Unix y similares a Unix , como Linux . Se asigna directamente a una llamada del núcleo del mismo nombre. se utiliza para invocar una utilidad o un script de shell con una prioridad de CPU particular , lo que le otorga al proceso más o menos tiempo de CPU que a otros procesos. Un nivel de amabilidad de -20 es el nivel de amabilidad más bajo o la prioridad más alta. El nivel de amabilidad predeterminado para los procesos se hereda de su proceso padre y, por lo general, es 0. nice
Los sistemas han divergido en cuanto a qué prioridad es la más baja. Los sistemas Linux documentan una prioridad de 19 como la más baja, [1] los sistemas BSD documentan 20 como la más baja. [2] En ambos casos, la prioridad "más baja" está documentada como la que se ejecuta solo cuando nada más quiere hacerlo.
El valor de amabilidad es un número asociado a los procesos en los sistemas *nix, que es utilizado junto con otros datos (como la cantidad de E/S realizada por cada proceso) por el programador de procesos del núcleo para calcular la "prioridad real" de un proceso, que se utiliza para decidir cuánto tiempo de CPU se le asigna.
El nombre del programa, nice , es una alusión a su tarea de modificar el valor de amabilidad de un proceso.
El término amabilidad en sí se origina de la idea de que un proceso con un valor de amabilidad más alto es más agradable con otros procesos en el sistema y con los usuarios en virtud de que exige menos potencia de CPU, liberando tiempo de procesamiento y potencia para los programas más exigentes, que en este caso serían menos agradables con el sistema desde una perspectiva de uso de CPU. [3]
nice
Resulta útil cuando varios procesos demandan más recursos de los que la CPU puede proporcionar. En este estado, un proceso con mayor prioridad obtendrá una mayor porción del tiempo de CPU que un proceso con menor prioridad. Solo el superusuario (root) puede establecer el valor niceness en un valor menor (es decir, una prioridad más alta). En Linux, es posible cambiar /etc/security/limits.conf
para permitir que otros usuarios o grupos establezcan valores nice bajos. [4]
Si un usuario quisiera comprimir un archivo grande sin ralentizar otros procesos, podría ejecutar lo siguiente:
$ nice -n 19 tar cvzf archive.tgz archivo grande
El efecto matemático exacto de establecer un valor de amabilidad particular para un proceso depende de los detalles de cómo se diseña el planificador en esa implementación de Unix. El planificador de un sistema operativo particular también tendrá varias heurísticas incorporadas (por ejemplo, para favorecer los procesos que están principalmente limitados por E/S sobre los procesos que están limitados por la CPU). Como ejemplo simple, cuando dos procesos limitados por la CPU que de otra manera serían idénticos se ejecutan simultáneamente en un sistema Linux de una sola CPU, la porción del tiempo de CPU de cada uno será proporcional a 20 − p , donde p es la prioridad del proceso. Por lo tanto, un proceso, ejecutado con nice +15
, recibirá el 25% del tiempo de CPU asignado a un proceso de prioridad normal: (20 − 15)/(20 − 0) = 0,25. [5] En el planificador BSD 4.x, por otro lado, la proporción en el mismo ejemplo es de aproximadamente diez a uno. [ cita requerida ]
El programa relacionado renice
se puede utilizar para cambiar la prioridad de un proceso que ya se está ejecutando. [1]
Linux también tiene un ionice
programa que afecta la programación de E/S en lugar del tiempo de CPU. [6]