Linux에 4096MB RAM 중 3832MB만 표시되는 이유는 무엇입니까?

Linux에 4096MB RAM 중 3832MB만 표시되는 이유는 무엇입니까?

저는 회사 개발 부서를 위해 여러 개의 64비트 RedHat VM(VMware vSphere)을 설정하고 있습니다. 대부분은 4096MB RAM으로 시작하지만 Linux는 3832MB만 인식하는 것 같습니다. 왜 이런지 말해 줄 수 있는 사람 있나요?

답변1

Linux가 RAM 블록을 사용하지 않는 데에는 여러 가지 이유가 있습니다.

  • Linux가 하드웨어 주변 장치에 속해 있음을 감지한 경우. 대부분의 컴퓨터에는 디스플레이를 위해 RAM이 필요하므로 일부 RAM은 그래픽 카드용으로 예약해야 합니다. 그래픽 카드에는 자체 RAM이 포함될 수도 있습니다. 그래픽 카드는 메모리 요구 사항이 상대적으로 높기 때문에 자체 RAM과 함께 번들로 제공되지 않는 경향이 있습니다(예외도 있음).
    최소한 VMware 및 VirtualBox는 비디오 메모리를 가상 머신에 할당된 메모리의 일부로 계산합니다. 비디오 메모리 크기는 VM 구성의 설정입니다.
  • Linux가 사용할 메모리 주소 범위는 커널 명령줄의 ad 매개변수를 통해 mem=…제한 될 수 있습니다.memmap=…
  • 때로는 커널이 일부 메모리를 사용하지 못할 수도 있습니다. RAM 인터페이스는 매우 표준적이므로 LPAE가 아닌 32비트 커널을 실행하고 4GB 이상의 RAM이 없으면 이러한 현상이 거의 발생하지 않습니다.
  • ECC 메모리의 경우 오류가 감지된 일부 범위는 사용할 수 없는 것으로 표시될 수 있습니다.

실제로 대부분의 경우 Linux에서 사용할 수 있는 메모리는 사용 가능한 RAM에서 비디오 메모리(및 다른 하드웨어 주변 장치에서 사용하는 메모리)를 뺀 것입니다. Linux 자체는 메모리를 커널에서 사용하는 메모리와 프로세스에서 사용할 수 있는 메모리의 두 부분으로 나눕니다. 대부분의 도구(예: free프로세스에 사용 가능한 총 메모리 양을 총계로 보고)

따라서 free총 용량이 3,832MB이고 해당(물리적 또는 가상) 머신에 4,096MB의 RAM이 있다면 이는 다음을 의미합니다.

4096MB - 3832MB = video memory (+ other hardware memory) + kernel memory

하드웨어와 코어 264MB는 합리적으로 보입니다. 나머지는 하드웨어와 커널에서 사용되므로 애플리케이션에 사용할 수 있는 공간은 3832MB입니다.

답변2

vSphere 클라이언트의 가상 머신에서 설정 편집을 클릭합니다. 하드웨어 탭에서 비디오 카드를 선택합니다. 오른쪽에 비디오 메모리가 보일 것입니다. 내 기본값은 8MB입니다.

관련 정보