Où Linux définit-il les valeurs par défaut pour SHMMAX?

10

Je me demande simplement où ces valeurs sont définies et à quoi elles correspondent par défaut? Le mien est actuellement 18446744073692774399. Je ne l'ai placé nulle part que je puisse voir.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
Evan Carroll
la source

Réponses:

9

La __initfonction ipc_ns_initdéfinit la valeur initiale de shmmaxen appelant shm_init_ns, ce qui la définit à la valeur de la SHMMAXmacro.

La définition de SHMMAXest dans <uapi/linux/shm.h>:

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

Sur les machines 64 bits, cette définition est égale à la valeur trouvée 18446744073692774399,.


la source
1

À la volée, vous pouvez simplement faire écho dans / proc / sys / kernel / shmmax!

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

Mais la plupart des gens éditent /etc/sysctl.conf avec une ligne similaire à:

kernel.shmmax=your_new_value_here

Consultez la page de manuel sysctl (8).

Deathgrip
la source
Ce n'est pas la question. Où sont définis les paramètres par défaut? Autrement dit, si vous n'écrivez pas vous-même sur shmmax, à quoi cela sert-il par défaut?
Evan Carroll
2
Sur certaines distributions Linux (RHEL 5 et 6 je crois en est une), elle est définie dans /etc/sysctl.conf. Mais je pense que la valeur par défaut est définie dans le code du noyau à la limite théorique (en supposant que c'est 2 ^ 64 - 1?).
Deathgrip