SAP HANA DB 모니터링 하다보면 기존 RDBMS와는 다른 메모리 구조 때문에 어떤 지표를 가지고 모니터링 헷갈리는 경우가 있습니다. 저도 아직 HANA DB 초보 단계이기 때문에 공부도 해볼 Memory Architecture 대해 포스팅하는 시간을 가져볼까 합니다.

 

1. SAP HANA DB 메모리 구조 개요

우선 가시적으로 이해하기 쉽게 아래 그래프를 볼까요?

그림 출처: https://www.sap.com/documents/2016/08/205c8299-867c-0010-82c7-eda71af511fa.html

메모리 용어를 먼저 간략하게 설명을 해보겠습니다.

(1) Physical Memory: 설치된 물리 메모리

(2) Used Memory: HANA DB에서 현재 실제로 사용하고 있는 메모리

(3) Resident Memory: HANA DB 프로세스가 운영체제로부터 실제로 할당 받은 물리적인 메모리 총량

(4) Memory Pool: HANA DB에서 사용하기 위해 미리 잡아 놓은 메모리. Allocation Limit 도달하기 전까지 할당 가능

(5) Virtual Memory: HANA DB에서 사용하기 위해 운영체제로부터 할당 받은 메모리 총량 (Used Memory + Memory Pool)

(6) Allocation Limit: HANA DB 최대로 할당할 있는 메모리 크기

 

2. Used Memory vs Resident Memory vs Virtual Memory

가장 헷갈리는 부분은 Used Memory, Resident Memory, Virtual Memory 거예요. 우선 Used Memory HANA DB에서 현재 실제로 사용하고 있는 메모리입니다. 여기서 실제로 사용한다는 것은 물리 메모리를 점유하고 있다는 것은 아닙니다. 운영체제가 알고있는 실제 점유 메모리는 Resident Memory 입니다 (Memory Used 라고 부르기도 합니다). 실제로 운영체제로부터 할당 받은 메모리인 것이지요. 그렇다면 Virtual Memory 무엇이냐, HANA DB에서 생각?하는 할당 받은 메모리입니다. 실제로 Virtual Memory 만큼 물리메모리를 할당 받지는 않은 상태입니다.

 

3. HANA DB 메모리 할당/반환

HANA DB Memory Manager 갖고 있고, 현재 사용 중인 메모리, 필요한 메모리를 관리해 줍니다. 만약 Data 늘어나거나, 많은 연산이 일어나서 메모리가 필요해지면 Memory Pool에서 메모리를 할당 받습니다. Memory Manager Memory Pool 이미 자신이 가지고 있다고 생각하고 있으니까요. 그럼 HANA DB 그만큼의 메모리를 실제로 사용하니까 운영체제로부터 물리메모리를 할당 받겠죠? 그러면 Resident Memory 늘어납니다. 그럼 연산이 끝나거나 테이블을 스토리지 쪽으로 내려버리면 할당 받은 물리메모리를 반환할까요? 그렇지 않습니다. Memory Manager 할당 받은 메모리를 언젠가 다시 사용할 가능성이 있다고 생각하고 반환하지 않습니다. 그렇기 때문에 위의 그래프에서 확인할 있듯이 Resident Memory 그래프 변동이 Used Memory 그래프 변동을 따라가지 않는 이유입니다. (보다 깊은 이해를 위해서는 Linux Process 메모리 관리에 대한 이해가 필요합니다.)

SAP Note 2081473 - HANA Resident Memory : High Memory Usage 따르면, Resident Memory 사용량 과다에 대해서는 신경 필요가 없다고 합니다. Resident Memory 반환하는 방법에 대해서는 찾아보았는데, 그런 기능은 없는 같네요… 필요하지 않을까 싶은데..

 

참고자료:

https://help.sap.com/viewer/product/SAP_HANA_PLATFORM/

https://archive.sap.com/discussions/thread/3544491

https://blogs.sap.com/2014/10/20/further-explained-on-linux-free-memory-virtual-memory-resident-memory-vs-hana-used-memory-and-pool-memory/

https://www.sap.com/documents/2016/08/205c8299-867c-0010-82c7-eda71af511fa.html

https://launchpad.support.sap.com/#/notes/2081473

'SAP HANA' 카테고리의 다른 글

HANA Studio 접속 오류 (Invalid Credential)  (0) 2021.10.27
SAP HANA DB - Memory Architecture (Used Memory)  (0) 2021.06.28
SAP HANA DB - Replication Mode  (0) 2021.03.01
SAP HANA SDI (Smart Data Integration)  (0) 2021.03.01
SAP HANA Log mode  (0) 2021.02.27

+ Recent posts