이슈 상황

Hypervisor에서 리눅스, 윈도우즈 VM에 동일한 메모리 사이즈로 할당하였는데 Mem Total이 다른 현상

 

환경

Hypervisor(ESXi/KVM 등)상의 리눅스/윈도우 VM에 각각 8G 메모리를 할당

 

확인 방법

  • 리눅스에서 확인

    ⇒ Total 값이 7821로 확인

  • 윈도우즈에서 확인

    ⇒ Total 값이 8191로 화인

같은 hypervisor에서 할당한 VM인데 OS에 따라 Mem Total 값이 다르게 확인된다.

 

원인

OS 별로 Mem Total을 표기하는 기준이 다르기 때문이다.

따라서 VM 뿐만 아니라 PM(Physical Machine)에서도 동일한 현상이 발생된다.

  • Linux Mem Total 표기 기준
    리눅스 서버의 Free (또는 /proc/meminfo) 에서 확인되는 Mem Total 값은 아래 메모리 공간을 제외하고 출력되는 값이다.
    - page 구조를 위한 커널의 예약된 공간
    - crashkernel을 위한 예약된 공간
    - HW 맵핑을 위한 예약된 공간 (CPU/Mem Numa Node 등을 위한)

     
  • Windows Mem Total 표기 기준
    리눅스와 달리 Mem Total에 H/W 예약공간만 제외하고 기타 커널을 위한 공간을 포함하여 표기함

 

리눅스 메모리 확인 방법

실제 설치된 메모리

  • 가상머신에서 확인 시

    가상 머신의 경우, 가상화 특성상 단일 메모리 Module 구조이므로 위와 같이 확인 시 한 줄만 출력될 것이다.

  • 물리머신에서 확인 시

    물리 머신의 경우, DIMM에 Memory가 꽂아진 수에 따라 여러개의 출력값이 확인 될 것이다. 이것을 합산한 값이 실제 설치된 메모리 값이다.
    위 시스템은 2G 메모리 2개를 설치하여 총 4G 메모리를 보유한 상태이다.

  • 또는 다음과 같이 확인 가능

    ⇒ 위와 동일한데 -t 17 옵션 (type 17 : Memory Device)을 통해 출력

    ⇒ 출력 라인을 모두 합산하여 Gigabyte 단위로 출력. 가상/물리 머신 모두 이 방법을 통해 출력하면 될 것이다.

    ⇒ 대용량의 메모리가 설치된 서버는 출력된 값이 GB이므로 위와 같이 수행

예약된 메모리

  • 가상/물리 머신 모두 동일하게 아래와 같이 확인 가능함

     

결론
 
이것은 OS의 Mem Total 표기법의 차이일 뿐 실제 OS별로 인식하는 설치된 메모리 사이즈는 차이가 없다.
 
 
[참조문서]
- Why MemTotal (and free total) don't match the actual RAM value of real configured memory
https://access.redhat.com/solutions/3006511
Linux - Why MemTotal not same the actual RAM value of real installed memory

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다