Redhat 커널 튜닝에서 shmmax 및 shmmni 매개변수 값 계산

Redhat 커널 튜닝에서 shmmax 및 shmmni 매개변수 값 계산

shmmax 및 shmmni 값을 계산하고 Redhat에서 처음으로 정의하는 방법입니다. 나는 그 뒤에 숨겨진 수학을 이해하고 싶습니다. 커널 매개변수에 큰 숫자가 보이는데, 이 큰 숫자는 무엇인가요? 물리적 메모리와 어떤 관련이 있습니까? 128GB RAM과 SHMMAX="123695063040"이 있습니다.

답변1

Red Hat 문서에 따르면https://access.redhat.com/solutions/1437883(액세스는 Red Hat 인증 고객으로 제한될 수 있습니다):

  • Red Hat Enterprise Linux 7.1에서는 kernel.shmmax 및 kernel.shmall의 기본값이 변경되었습니다.

  • Red Hat Enterprise Linux 7.1에서는 kernel.shmmax 및 kernel.shmall의 기본값이 업스트림 커널에 설정된 값과 일치하도록 변경되었습니다. kernel.shmmax 및 kernel.shmall의 새로운 기본값은 18446744073692774399로 설정됩니다.

  • 커널 코드에서 다음 공식을 사용하여 새 기본값을 계산합니다.

include/uapi/linux/shm.h
[...]
#define SHMMAX (ULONG_MAX - (1L<<24))    /* max shared seg size (bytes) */
#define SHMALL (ULONG_MAX - (1L<<24))    /* max shm system wide (pages) */

관련 정보