본문 바로가기
카테고리 없음

[AWS] 왜 AWS 콘솔에서는 메모리를 모니터링할 수 없는가?

by james_janghun 2024. 11. 21.

면접 때 알려진 질문이 있다.

왜 EC2에서는 CPU와 네트워크 모니터링은 가능한데 메모리와 디스크는 불가능할까요?

 

그 이유는 하이퍼바이저와 OS 단에서 수집할 수 있는 정보가 차이나기 때문이다.

 

CPU

CPU는 하이퍼바이저 레벨에서 확인한다.

하이퍼바이저는 기본적인 가상화 제공 소프트웨어이다. 가상화이기 때문에 하이퍼바이저가 직접

Host의 CPU를 VM에게 vCPU로 할당하게 된다.

 

Guest OS는 하이퍼바이저에게 제공받는 시간 만큼 CPU를 사용하기 때문에 AWS에서는 하이퍼바이저에서 Guest OS에 제공하는 CPU의 값이 더 정확하다 판단되어 해당 값을 모니터링해서 표시하도록 설정하고 있다. (물론 Guest OS에서도 사용량 측정이 가능하다)

 

고객 입장에서도 하이퍼바이저에게 질의를 해서 값을 취득하는게 VM에 영향이 덜가기 때문에 효과적이다.

 

Memory

반면 메모리는 OS에서 기본적으로 가상메모리를 활용하기 때문에 하이퍼바이저에서 제공하는 Memory값은 적절하지 않다.

OS에서 동작하는 각 프로세스는 자신이 모든 메모리를 사용하는 것 처럼 동작하지만 실제로는 OS가 각 프로세스의 정보를 적절히 메모리에 적재하거나 디스크의 swap 영역에 배치해 메모리를 효율적으로 쓸 수 있게 계속 배분한다.

즉 OS단에서 다이나믹하게 움직이기 때문에 하이퍼바이저 단에서 측정하는 메모리 값은 고객이 사용하는 입장에서 의미있는 값은 아니다.

 

Disk

Disk 또한 마찬가지로 하이퍼바이저의 역할은 디스크를 할당하는 것에서 끝나는데, 실제로 이것을 파티셔닝해서 사용하는 것은 OS의 영역이다.

 

 

참조

https://everenew.tistory.com/464