5.4. Capacidad de ajuste
Por favor lea esta sección para obtener un resumen de memoria, kernel y capacidad de sistema de archivos, los parámetros relacionados con cada uno y las concesiones al ajustar estos parámetros.
Para establecer estos parámetros de forma temporal durante el ajuste, 'echo' el valor deseado al archivo apropiado en el sistema de archivos proc. Por ejemplo, para establecer de forma temporal
overcommit_memory
a 1
, ejecute:
# echo 1 > /proc/sys/vm/overcommit_memory
Observe que la ruta al parámetro en el sistema de archivos proc, depende del sistema afectado por el cambio.
Para establecer de forma persistente estos valores, necesitará usar el comando
sysctl
. Para obtener mayor información, consulte la Guía de implementación, disponible en http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.
Ajustables de memoria relacionados con la capacidad
Cada uno de los siguientes parámetros se localiza en el sistema de archivos proc,
/proc/sys/vm/
.
overcommit_memory
- Define las condiciones que determinan si se acepta o niega una solicitud de memoria grande. Hay tres valores posibles para este parámetro:
0
— el parámetro predeterminado. El kernel realiza sobre-envío de memoria heurística al estimar la cantidad de memoria disponible y fallar solicitudes que son evidentemente inválidas. Infortunadamente, como la memoria se asigna mediante una heurística en lugar de un algoritmo preciso, este parámetro, algunas veces autoriza la sobrecarga de memoria disponible en el sistema.1
— el kernel realiza el manejo de sobre-envío de no memoria. Bajo este parámetro, la memoria potencial para sobrecarga aumenta, pero también el rendimiento para tareas intensivas de rendimiento.2
— el kernel niega solicitudes para memoria igual o mayor que swap y el porcentaje de RAM físico especificado enovercommit_ratio
. Este parámetro es mejor si desea un menor riesgo de sobreasignación de memoria.Nota
Este parámetro únicamente se recomienda para sistemas con áreas de swap más grandes que su memoria física.
overcommit_ratio
- Especifica el porcentaje de memoria RAM física que se tiene en cuenta cuando
overcommit_memory
se establece a2
. El valor predeterminado es50
. max_map_count
- Define el número máximo de áreas de mapas que un proceso puede usar . En la mayoría de los casos, el valor predeterminado de
65530
es el apropiado. Aumente este valor si su aplicación necesita asignar más de este número de archivos. nr_hugepages
- Define el número de páginas gigantes configuradas en el kernel. El valor predeterminado es 0. Solamente se pueden asignar (o desasignar) páginas gigantes si hay las suficientes páginas libres físicas contiguas. Las páginas reservadas por este parámetro no se pueden usar para otros propósitos. Puede obtener mayor información de la documentación instalada en:
/usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt
Ajustables de kernel relacionados con la capacidad
Cada uno de los siguientes parámetros se localiza en el sistema de archivos proc,
/proc/sys/kernel/
.
msgmax
- Define el tamaño máximo permitido en bytes de un mensaje individual en bytes de cualquier mensaje en la cola de mensajes. Este valor no debe exceder el tamaño de la cola (
msgmnb
). El valor predeterminado es65536
. msgmnb
- Define el tamaño máximo en bytes de una cola de mensajes. El valor predeterminado es
65536
. msgmni
- Define el número máximo de identificadores de cola de mensajes (y por lo tanto, el número máximo de colas). El valor predeterminado en máquinas de arquitectura de 64 bits es
1985
; para arquitectura de 32 bits, el valor predeterminado es1736
. shmall
- Define la cantidad total de memoria compartida en bytes que puede utilizarse en el sistema al mismo tiempo. El valor predeterminado en máquinas de arquitectura de 64 bits es
4294967296
; para arquitectura de 32 bits, el valor predeterminado es268435456
. shmmax
- Define el máximo segmento de memoria compartida por el kernel, en bytes. El valor predeterminado en máquinas de arquitectura de 64 bits es
68719476736
; para arquitectura de 32 bits, el valor predeterminado es4294967295
. Sin embargo, el kernel soporta valores mucho más grandes. shmmni
- Define el número máximo de todo el sistema de segmentos de memoria compartida. El valor predeterminado es
4096
tanto en arquitectura de 64 bits como en la de 32 bits. threads-max
- Define el número máximo de hilos (tareas) en todo el sistema que van a ser utilizados por el kernel al mismo tiempo. El valor predeterminado es igual al valor de kernel
max_threads
. La fórmula en uso es:max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE )
El valor mínimo dethreads-max
es20
.
Ajustables de sistema de archivos relacionados con la capacidad
Cada uno de los siguientes parámetros se localiza en el sistema de archivos proc,
/proc/sys/fs/
aio-max-nr
- Define el máximo número de eventos permitidos en todos los contextos asíncronos de E/S. El valor predeterminado es
65536
. Observe que al cambiar este valor no se preasigna o redimensiona ninguna estructura de datos de kernel. file-max
- Lista el número máximo de identificadores de archivos asignados por el kernel. El valor predeterminado coincide con el valor de
files_stat.max_files
en el kernel, el cual se establece al valor más grande, ya sea de(mempages * (PAGE_SIZE / 1024)) / 10
, oNR_FILE
(8192 en Red Hat Enterprise Linux). El aumento de este valor puede corregir errores ocasionados por la falta de identificadores de archivos disponibles.
Ajustables para matar un proceso en falta de memoria
Falta de memoria o una OOM, se refiere a un estado en computación donde toda la memoria disponible, incluido el espacio swap, ha sido asignada. Esta situación hace que el sistema entre en pánico y deje de funcionar. Sin embargo, la configuración del parámetro
/proc/sys/vm/panic_on_oom
a 0
instruye al kernel para que llame a la función oom_killer
cuando se presente una OOM. oom_killer
puede matar procesos no autorizados y el sistema sobrevive.
El parámetro a continuación puede establecerse por proceso, lo cual le otorga control sobre los procesos que la función
oom_killer
puede matar. Dicha función se localiza en el sistema de archivos proc, /proc/pid/
, donde pid es el número de ID de proceso.
oom_adj
- Define un valor de
-16
a15
que ayuda a determinar eloom_score
de un proceso. Entre más alto sea el valor deoom_score
, más probabilidad habrá de queoom_killer
mate el proceso. Si estableceoom_adj
a un valor de-17
se desactivará eloom_killer
para ese proceso.Importante
Cualquier proceso generado por el proceso ajustado heredará eseoom_score
de proceso. Por ejemplo, si un procesosshd
está protegido de la funciónoom_killer
, todos los procesos iniciados por dicha sesión SSH también se protegerán. Esto puede afectar la capacidad de la funciónoom_killer
para rescatar el sistema si se presenta una OOM.