Onde o Linux define os valores padrão para o SHMMAX?

8

Estou apenas imaginando onde esses valores estão sendo definidos e para que eles são padronizados? O meu é atualmente 18446744073692774399. Eu não coloquei em nenhum lugar que eu possa ver.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
    
por Evan Carroll 14.06.2017 / 02:47

2 respostas

8

A função __init ipc_ns_init define o valor inicial de shmmax chamando shm_init_ns , que o define como o valor da macro SHMMAX .

A definição de SHMMAX está em <uapi/linux/shm.h> :

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

Em máquinas de 64 bits, essa definição é igual ao valor encontrado, 18446744073692774399 .

    
por 14.06.2017 / 04:40
0

Na mosca, você pode simplesmente fazer um eco em / proc / sys / kernel / shmmax!

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

Mas a maioria das pessoas edita o /etc/sysctl.conf com uma linha semelhante a:

kernel.shmmax=your_new_value_here

Veja a página do manual sysctl (8).

    
por 14.06.2017 / 03:47