Linux - 기본적으로 kernel.shmall의 값이 왜 그렇게 낮습니까?

Linux - 기본적으로 kernel.shmall의 값이 왜 그렇게 낮습니까?

저는 Linux에서 DB2를 실행하고 있으며 머신에 있는 대부분의 메모리를 공유 메모리 세그먼트에 할당해야 합니다.

이 페이지는 shmall/shmmax에 대해 내가 찾은 내용의 전형적인 내용입니다. http://www.pythian.com/news/245/the-mysterious-world-of-shmmax-and-shmall/

현재 시스템은 잘 돌아가고 있지만 기본적으로 공유 메모리가 이렇게 낮은 이유는 역사적, 철학적 이유가 있는지 궁금합니다. 즉, shmall이 머신의 최대 물리적 메모리를 기본값으로 설정하도록 하면 어떨까요?

즉, 응용 프로그램이 공유 메모리를 많이 사용하고 해당 설정을 변경해야 하는 경우 일반 관리자가 "자신으로부터 자신을 보호"해야 하는 이유는 무엇입니까? 내가 생각할 수 있는 유일한 것은 DB2가 사용할 수 있는 메모리 양의 상한을 설정할 수 있다는 것인데, 이는 특별한 경우입니다.

답변1

공유 메모리가 항상 보호되는 리소스는 아닙니다. 너무 많은 사용자가 공유 메모리를 할당할 수 있습니다. 또한 이를 할당한 프로세스가 종료될 때 자동으로 메모리 풀로 반환되지 않습니다. 이로 인해 공유 메모리 할당이 할당되었지만 사용되지 않을 수 있습니다. 이로 인해 명확하지 않은 메모리 누수가 발생할 수 있습니다.

공유 메모리 제한을 낮게 유지하면 공유 메모리(소량)를 사용하는 대부분의 프로세스를 실행할 수 있습니다. 그러나 잠재적인 피해는 제한적입니다. 많은 공유 메모리가 필요한 유일한 시스템은 데이터베이스 서버였습니다. 이는 일반적으로 요구 사항을 이해하는 시스템 관리자가 관리합니다. 그렇지 않은 경우 일반적으로 DBA는 필요성을 이해하고 적절한 구성 변경을 요청할 수 있습니다. 데이터베이스 설치 지침은 일반적으로 적절한 제한을 계산하고 설정하는 방법을 지정합니다.

데이터베이스가 정지되어 할당되었지만 사용되지 않은 공유 메모리가 많이 남아 있는 상황이 있었습니다. 이로 인해 시스템 사용자에게 문제가 발생하고 데이터베이스를 다시 시작할 수 없게 되었습니다. 다행히도 메모리를 찾아서 확보할 수 있는 도구가 있습니다.

관련 정보