¿Dónde establece Linux los valores predeterminados para SHMMAX?


10

Me pregunto dónde se establecen estos valores y a qué valores predeterminados. El mío es actualmente 18446744073692774399. No lo configuré en ningún lugar que pueda ver.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

Respuestas:


9

La __initfunción ipc_ns_initestablece el valor inicial de shmmaxmediante una llamada shm_init_ns, que lo establece en el valor de la SHMMAXmacro.

La definición de SHMMAXestá en <uapi/linux/shm.h>:

#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */

En máquinas de 64 bits, esa definición es igual al valor que encontró 18446744073692774399,.


1

¡Sobre la marcha puedes hacer eco en / proc / sys / kernel / shmmax!

# echo 20446744073692774399 > /proc/sys/kernel/shmmax

Pero la mayoría de la gente edita /etc/sysctl.conf con una línea similar a:

kernel.shmmax=your_new_value_here

Consulte la página del comando man sysctl (8).


Esa no es la pregunta. ¿Dónde se establecen los valores predeterminados? Es decir, si no escribe a shmmax usted mismo, ¿a qué está predeterminado?
Evan Carroll

2
En algunas distribuciones de Linux (RHEL 5 y 6, creo que es una) está configurado en /etc/sysctl.conf. Pero creo que el valor predeterminado se establece en el código del kernel al límite teórico (supongo que es 2 ^ 64 - 1?).
Deathgrip
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.