Linux는 SHMMAX의 기본값을 어디에 설정합니까?

Linux는 SHMMAX의 기본값을 어디에 설정합니까?

이 값이 어디에 설정되어 있고 기본값은 무엇인지 궁금합니다. 내 것은 현재 18446744073692774399입니다. 눈에 보이는 곳에는 설치하지 않았습니다.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

답변1

__init기능ipc_ns_initshmmax호출하여 초기값 설정shm_init_ns, 매크로 값으로 설정합니다 SHMMAX.

정의 SHMMAX는 다음과 같습니다.<uapi/linux/shm.h>:

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

64비트 컴퓨터에서 이 정의는 찾은 값과 같습니다 18446744073692774399.

답변2

/proc/sys/kernel/shmmax를 즉시 에코할 수 있습니다!

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

그러나 대부분의 사람들은 다음과 같은 줄을 사용하여 /etc/sysctl.conf를 편집합니다.

kernel.shmmax=your_new_value_here

sysctl(8) 매뉴얼 페이지를 참조하십시오.

관련 정보