GNU/Linux >> Tutoriales Linux >  >> Linux

Linux /etc/security/limits.conf explicación

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 programadores de procesos en Linux. El predeterminado (CFQ) básicamente otorga la misma cantidad de intervalos de tiempo a cada proceso que desea ejecutarse y pone en cola las tareas ejecutables de tal manera que todos esperan en promedio la misma cantidad de tiempo para su turno. Existen algunas excepciones a esta regla, pero esa es la idea básica.

Otra clase de programador es el programador en tiempo real. El tiempo real es un poco diferente, en lugar de poner en cola las tareas ejecutables en un esquema de cola justo, el proceso en tiempo real obtendrá tiempo de CPU tan pronto como el proceso lo necesite, esto expulsa 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 amabilidad del proceso para que, al iniciar sesión, su proceso principal comience con cierta amabilidad, cualquier proceso secundario 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 de la competencia y se puede hacer que la experiencia del usuario sea más receptiva/interactiva para los valores de amabilidad más bajos y menos receptiva/interactiva si se aumenta la amabilidad.

Puede ser importante que los usuarios de inicio de sesión normales tengan una prioridad más baja que los demonios reparables, por ejemplo, o que la raíz tenga una prioridad más alta en el inicio de sesión que todo lo demás.

En cuanto a 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 como prioridad. Un rtprio más alto produce tareas de mayor prioridad.

Establecer esto en el archivoLIMITES.conf permite que las tareas en tiempo real se establezcan en una banda de prioridad particular sin necesidad de que root establezca el valor. Esto no tiene efecto en las tareas que no están configuradas para ejecutarse mediante un programador en tiempo real.

El valor 'nice' debería hacer lo mismo que 'rtprio' pero para la programación estándar de CFQ. Aunque nunca lo he probado. Establece el proceso inicial generado cuando PAM establece estos límites en ese valor agradable, un usuario normal puede ir a ese nivel agradable o superior sin necesidad de root para establecerlos. Si no renice explícitamente, significa que todos los procesos generados desde un shell desde ese inicio de sesión (por ejemplo) heredarán el valor agradable establecido en la forma de 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 el pid 1, a menos que se establezcan explícitamente, los límites de recursos se heredan del proceso principal, si no se han definido o anulado límites en ninguna parte, entonces la herencia de init es el predeterminado.

Otros valores

data 
maximum data size (KB) 

Cuando se inicializa un proceso, asigna algo de memoria conocida como "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 inicializados y la memoria asignada desde el montón. El límite controla la cantidad máxima asignada que puede tomar un proceso.

Es poco probable que alguna vez 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 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 cambiar. La memoria bloqueada en la memoria nunca se puede intercambiar y permanece residente. Este valor está estrictamente controlado porque las personas pueden abusar de él para privar de memoria a un sistema y provocar el intercambio. Por lo general, es útil con las 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 la cantidad de tiempo transcurrido desde que se inició el proceso. Es decir, un límite de tiempo de CPU de 1 minuto tardaría 1 minuto en consumirse si el proceso tuviera una utilización de CPU del 100 %, pero 2 minutos en consumirse si el proceso utilizado 50% de utilización.

¿Qué sucede cuando se excede la CPU?

El proceso recibe una señal de interrupción SIGXCPU que termina el proceso. Esto puede ser capturado por el proceso principal y manejado allí.

¿Solo un proceso o todo el usuario no puede usar la CPU?

Casi todos los límites a los que se hace referencia se manejan por proceso. Tiempo de CPU incluido. Los únicos que no lo son Creo que lo son el número total de inicios de sesión y el número total de procesos de ese usuario.

Algunas otras trampas con límites son:

  • El número máximo de 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.

Linux
  1. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  2. ¿Cómo se actualiza /etc/motd?

  3. Entendiendo el archivo /etc/xinetd.conf en Linux

  4. Comprender el archivo /etc/security/limits.conf

  5. Ejemplo de archivo /etc/mke2fs.conf

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

¿Cómo reiniciar automáticamente un proceso en segundo plano de Linux si falla?

¿Cómo configurar el swapiness por proceso para Linux?

¿Cuál es la conexión entre los directorios /etc/init.d y /etc/rcX.d en Linux?

Diferencia entre /etc/hosts y /etc/resolv.conf