Dove Linux imposta i valori predefiniti per SHMMAX?


10

Mi chiedo solo dove vengono impostati questi valori e quali sono predefiniti? Il mio è attualmente 18446744073692774399. Non l'ho impostato da nessuna parte che posso vedere.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

Risposte:


9

La __initfunzione ipc_ns_initimposta il valore iniziale di shmmaxchiamando shm_init_ns, che lo imposta sul valore della SHMMAXmacro.

La definizione di SHMMAXè in <uapi/linux/shm.h>:

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

Su macchine a 64 bit, tale definizione è uguale al valore trovato 18446744073692774399,.


1

Al volo puoi semplicemente fare eco in / proc / sys / kernel / shmmax!

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

Ma la maggior parte delle persone modifica /etc/sysctl.conf con una linea simile a:

kernel.shmmax=your_new_value_here

Vedi la pagina man sysctl (8).


Non è questa la domanda. Dove sono impostate le impostazioni predefinite? Cioè, se non scrivi a shmmax te stesso, che cosa fa di default?
Evan Carroll,

2
Su alcune distro Linux (RHEL 5 e 6 credo sia una) è impostato in /etc/sysctl.conf. Ma penso che il valore predefinito sia impostato nel codice del kernel al limite teorico (indovinando che è 2 ^ 64 - 1?).
Deathgrip
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.