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.