rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
¿Por qué son diferentes?
Hay diferentes clases de planificadores de procesos en Linux. El predeterminado (CFQ) básicamente le da la misma cantidad de tiempo a cada proceso que desea ejecutar y pone en cola las tareas ejecutables de tal manera que todos esperen en promedio la misma cantidad de tiempo por su turno. Existen algunas excepciones a esta regla, pero esa es la idea básica.
Otra clase de planificador es el planificador en tiempo real. El tiempo real es un poco diferente, en lugar de poner en cola las tareas ejecutables en un esquema de colas justo, el proceso en tiempo real obtendrá el tiempo de CPU tan pronto como sea necesario para el proceso, esto desaloja un proceso en ejecución de la CPU para dejar espacio para el 'tiempo real 'proceso.
¿Qué valores pueden tomar?
Lo que hace 'prioridad' es alterar la simplicidad del proceso para que, al iniciar sesión, su proceso principal comience con una cierta amabilidad, cualquier proceso hijo que genere también comience con la misma amabilidad.
Esto tiene el efecto de hacer que sea más probable que se programe a favor de otros procesos competitivos y se puede hacer que la experiencia del usuario sea más receptiva / interactiva para los valores de bondad más bajos y menos receptiva / interactiva si se eleva la simpatía.
Puede ser importante que los usuarios normales de inicio de sesión tengan una prioridad más baja que los demonios reparables, por ejemplo, o que el usuario root tenga una prioridad de inicio de sesión más alta que todo lo demás.
En cuanto al tiempo real, la contención se maneja con el campo 'rtprio'. Si tiene dos tareas en tiempo real que desean ejecutarse, el valor 'rtprio' se usa para determinar cuál de los procesos elegir primero para prioridad. Un rtprio superior produce tareas de mayor prioridad.
Establecer esto en los límites.conf permite que las tareas en tiempo real se establezcan en una banda de prioridad particular sin necesidad de root para establecer el valor. Esto no tiene ningún efecto en las tareas que no están configuradas para ejecutarse utilizando un programador en tiempo real.
El valor 'agradable' debería hacer lo mismo que 'rtprio' pero para la programación CFQ estándar. Aunque nunca lo he intentado. Establece el proceso inicial generado cuando PAM establece estos límites en ese buen valor, un usuario normal puede ir a ese buen nivel o más alto sin necesidad de root para establecerlos. Si no renice explícitamente, significa que todos los procesos generados a partir de un shell a partir de ese inicio de sesión (por ejemplo) heredarán el valor agradable establecido en los límites.conf del proceso principal que se creó inicialmente.
¿Cuáles son los valores predeterminados?
Los límites `` predeterminados '': técnicamente, todos se establecen en lo que es pid 1 a menos que se establezca explícitamente, los límites de recursos se heredan del proceso padre, si no se han definido o anulado límites en ningún lugar, entonces la herencia de init
es la predeterminada.
Otros valores
data
maximum data size (KB)
Cuando se inicializa un proceso, asigna algo de memoria conocida como el 'segmento de datos' cuando el proceso se copia en la memoria, aquí es donde vive el espacio para los globales, tal vez algunos otros datos y memoria inicializados asignados del montón. El límite controla la cantidad máxima asignada que puede tomar un proceso.
Es poco probable que llegue a este límite porque malloc () rara vez usa en exceso el segmento de datos para almacenar datos.
fsize
maximum filesize (KB)
Literalmente, esto solo establece el tamaño máximo en el que se puede escribir un archivo como con ese usuario.
memlock
maximum locked-in-memory address space (KB)
Casi toda la memoria que ha adquirido una aplicación es 'desalojable'. Eso se puede intercambiar. La memoria bloqueada nunca se puede intercambiar y permanece residente. Este valor está estrictamente controlado porque las personas pueden abusar de él para privar a un sistema de memoria y provocar el intercambio. Por lo general, es útil con aplicaciones de seguridad (que nunca quieren que se intercambien sus páginas, y que se puedan leer desde la partición de intercambio).
cpu
maximum CPU time (minutes)
Esto representa la cantidad total de tiempo que un proceso puede consumir en una CPU. Un proceso que excede este valor es eliminado. Tenga en cuenta que esto NO es lo mismo que el tiempo transcurrido desde que se inició el proceso. Es decir, un límite de tiempo de procesamiento de 1 minuto tardaría 1 minuto en consumirse si el proceso tuviera un 100% de utilización de la CPU, pero 2 minutos en consumirse si el proceso utilizara un 50% de utilización.
¿Qué sucede cuando se excede la CPU?
El proceso recibe una señal de SIGXCPU
interrupción que finaliza el proceso. Esto puede ser atrapado por el proceso padre y manejado allí.
¿Solo un proceso o todo el usuario tiene prohibido usar la CPU?
Casi todos los límites a los que se hace referencia se manejan por proceso. Tiempo de CPU incluido. Creo que los únicos que no lo son son el número total de inicios de sesión y el número total de procesos realizados por ese usuario.
Algunos otros problemas con límites son:
- Max procesos incluye el número de subprocesos ligeros.
- El límite de RSS no hace nada y no lo ha hecho durante varios años, no tiene sentido establecerlo.