Wo legt Linux die Standardwerte für SHMMAX fest?


9

Ich frage mich nur, wo diese Werte eingestellt werden und was sie standardmäßig verwenden. Meins ist derzeit 18446744073692774399. Ich habe es nirgendwo eingestellt, wo ich es sehen kann.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

Antworten:


9

Die __initFunktion ipc_ns_initsetzt den Anfangswert von shmmaxdurch Aufrufen shm_init_ns, wodurch er auf den Wert des SHMMAXMakros gesetzt wird.

Die Definition von SHMMAXist in <uapi/linux/shm.h>:

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

Auf 64-Bit-Computern entspricht diese Definition dem gefundenen Wert 18446744073692774399.


0

Im laufenden Betrieb können Sie einfach in / proc / sys / kernel / shmmax echo!

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

Aber die meisten Leute bearbeiten /etc/sysctl.conf mit einer Zeile ähnlich der folgenden:

kernel.shmmax=your_new_value_here

Siehe die Manpage sysctl (8).


Das ist nicht die Frage. Wo sind die Standardeinstellungen festgelegt? Das heißt, wenn Sie nicht selbst an shmmax schreiben, wie lautet die Standardeinstellung?
Evan Carroll

1
Auf einigen Linux-Distributionen (RHEL 5 & 6, glaube ich, ist es eine) ist es in /etc/sysctl.conf festgelegt. Aber ich denke, die Standardeinstellung ist im Kernel-Code auf die theoretische Grenze eingestellt (ich schätze, das ist 2 ^ 64 - 1?).
Deathgrip
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.