Saltar al contenido

Explicación de Linux /etc/security/limits.conf

Mantén la atención porque en esta reseña encontrarás la solución que buscas.

Solució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 da 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 justa, el proceso en tiempo real obtendrá el tiempo de la CPU tan pronto como lo necesite el proceso, esto desalojará un proceso en ejecución de la CPU para dejar espacio para el ‘tiempo real ‘ proceso.

¿Qué valores pueden tomar?

Lo que hace la ‘prioridad’ es alterar la bondad del proceso para que al iniciar sesión su proceso principal comience con una cierta bondad, cualquier proceso secundario que genere también comience con la misma bondad.

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 para los usuarios de inicio de sesión normales tener una prioridad más baja que los demonios útiles, por ejemplo, o que el root tenga una prioridad más alta en el inicio de sesión que todo lo demás.

En cuanto al tiempo real, la disputa se maneja con el campo ‘rtprio’. Si tiene dos tareas en tiempo real que desean ejecutar, entonces el valor ‘rtprio’ se usa para determinar cuál de los procesos elegir como prioridad primero. Un rtprio más alto produce tareas de mayor prioridad.

Establecer esto en limits.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 con un programador en tiempo real.

El valor ‘agradable’ 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 los límites.conf del proceso padre que se creó inicialmente.

¿Cuáles son los valores predeterminados?

Los límites ‘predeterminados’: técnicamente, todos se establecen en lo que es 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 ningún lugar, 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 el ‘segmento de datos’ cuando el proceso se copia en la memoria, aquí es donde vive el espacio para los globales, quizás algunos otros datos inicializados y la memoria asignada 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 utiliza en exceso el segmento de datos para almacenar datos.

fsize 
maximum filesize (KB) 

Esto, literalmente, 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 “desahuciable”. Eso se puede cambiar. La memoria bloqueada en memoria nunca es intercambiable y permanece residente. Este valor está estrictamente controlado porque las personas pueden abusar de él para privar a un sistema de memoria y provocar un intercambio. Por lo general, es útil con aplicaciones de seguridad (que nunca quieren que se intercambien sus páginas y que se vuelvan legibles 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 se mata. Tenga en cuenta que esto NO es lo mismo que la cantidad de tiempo que ha 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 para consumir si el proceso utilizara el 50%.

¿Qué sucede cuando se excede la cpu?

El proceso recibe una señal de muerte. SIGXCPU que termina el proceso. Esto luego puede ser detectado por el proceso principal y manejado allí.

¿Solo un proceso o todo el usuario está excluido del uso de 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 ser 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:

  • Los procesos máximos incluyen 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.

Puedes añadir valor a nuestra información contribuyendo tu experiencia en las anotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *