Di mana Linux menetapkan nilai default untuk SHMMAX?

10

Saya hanya ingin tahu di mana nilai-nilai ini sedang diatur dan apa nilai defaultnya? Milik saya saat ini 18446744073692774399. Saya tidak mengaturnya di tempat yang dapat saya lihat.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
Evan Carroll
sumber

Jawaban:

9

The __initfungsi ipc_ns_initmenetapkan nilai awal shmmaxdengan memanggil shm_init_ns, yang menetapkan untuk nilai SHMMAXmakro.

Definisi dalam SHMMAXadalah <uapi/linux/shm.h>:

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

Pada mesin 64-bit, definisi itu sama dengan nilai yang Anda temukan 18446744073692774399,.


sumber
1

Dengan cepat Anda hanya dapat menggema ke / proc / sys / kernel / shmmax!

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

Tetapi kebanyakan orang mengedit /etc/sysctl.conf dengan garis yang mirip dengan:

kernel.shmmax=your_new_value_here

Lihat halaman manual sysctl (8).

Deathgrip
sumber
Bukan itu pertanyaannya. Di mana pengaturan default? Yaitu, jika Anda tidak menulis untuk shmmax sendiri, apa fungsinya?
Evan Carroll
2
Pada beberapa distro Linux (RHEL 5 & 6 saya percaya adalah satu) diset di /etc/sysctl.conf. Tapi saya pikir defaultnya diatur dalam kode kernel ke batas teoritis (menebak itu 2 ^ 64 - 1?).
Deathgrip