해당 포스트는 다음글을 참조하여 작성하였습니다.
SAP HANA DB 에서 메모리 사용량에 대한 분석 방법에 대해서 SAP Notes 1969700 - SQL Statement Collection for SAP HANA 스크립트를 사용하여 메모리 사용량에 대한 하향식 조사를 수행하는 방법에 대해서 기록한다.
크게 다음 순서로 메모리 사용량에 대해서 분석한다.
분석에 필요한 SQL 구문은 아래 Notes 에서 다운받을 수 있으며, 사용방법에 대해서는 아래 포스트를 참조하기 바란다.
- SAP Notes 1969700 - SQL Statement Collection for SAP HANA
- SAP HANA DB SQL 구문 모음집__SQL Statement Collection for SAP HANA
메모리 분석에 첫째로, 메모리 사용량이 Peak 인 시간대를 특정해야 한다.
다음 SQL 구문을 사용하여 시간대를 확인할 수 있다.
HANA_Resources_CPUAndMemory_History
해당 SQL 구문의 Modification section 의 값을 다음 값으로 변경하여 수행한다.
BEGIN_TIME : <시작 일시>
END_TIME : <종료 일시>
AGGREGATION_TYPE : PEAK
AGGREGATION_BY : TIME
TIME 포맷은
YYYY/MM/DD HH24:MI:SS
이다.
출력된 결과에서, HANA_USED_PCT 값을 기반으로 메모리 사용량이 높은 시간대를 확인한다.
여기서는 출력을 확인한 결과,
2024/01/01 11:00:00 ~ 2024/01/01 11:10:00 시간대에 메모리 사용량이 Peak 인 상황으로 가정하도록 한다.
두번째로, 메모리 사용량 Peak 시, 메모리를 가장 많이 소비하는 Memory Pool 을 확인한다.
다음 SQL 구문을 사용하여 확인할 수 있다.
HANA_Memory_TopConsumers
해당 SQL 구문의 Modification section 의 값을 다음 값으로 변경하여 수행한다.
BEGIN_TIME : 2024/01/01 11:00:00
END_TIME : 2024/01/01 11:10:00
출력 결과는 메모리를 많이 사용한 순으로 정렬이 되며, DETAIL 필드를 확인하여 HEAP 메모리 할당자(Heap Allocator) 를 확인할 수 있다.
HEAP 메모리 할당자에 대한 내용은 다음 Notes 에서 간략하게 확인할 수 있다.
- SAP Notes 1999997 - FAQ: SAP HANA Memory -> 13. What can I do if a certain heap allocator is unusually large?
세번째로, 메모리 사용량 Peak 시, 실행 중인 Thread 를 확인한다.
다음 SQL 구문을 사용하여 확인할 수 있다.
HANA_Threads_ThreadSamples_FilterAndAggregation
해당 SQL 구문의 Modification section 의 값을 다음 값으로 변경하여 수행한다.
BEGIN_TIME : 2024/01/01 11:00:00
END_TIME : 2024/01/01 11:10:00
출력 결과로 해당 시간동안 수행된 Thread 에 대해서 다음과 같은 정보를 확인할 수 있다.