RSMEMORY 프로그램을 사용한 SAP 메모리 할당 조정__Adjusting SAP Memory allocation Using RSMEMORY Program

감귤은탱귤·2024년 1월 19일
0

SAP BC - 중급

목록 보기
4/13
post-thumbnail

SAP Memory 관리는 파라미터를 통해서 이루어진다.

현재 시스템에 설정된 메모리 파라미터 설정은 ST02 티코드에서 한번에 확인이 가능하다.

Tcode : ST02
-> Current parameters

파라미터 변경은 RZ10 티코드에서 DEFAULT, Instance 프로파일을 수정하여 변경이 가능하다.
프로파일에 해당 파라미터 값이 없다면 Default 값으로 적용되고 있으니, 파라미터를 추가하여 변경값을 입력하면 된다.

SAP Memory 에 관한 전체적인 구조는 아래 글을 참조하기 바란다.



기본적인 로우레벨 메모리 파라미터는 현재 시스템의 물리 메모리(Physical Memory) 를 기반으로 자동적으로 계산이 되어 적용되고 있으며,
그 외 메모리 파라미터에 대해서 운영 환경에 따라 조정이 가능하다.

다만, 이러한 메모리 파라미터 대부분이 변경 후, 적용하기 위해서는 서비스 리스타트가 필요하다.

그래서 동적으로 메모리를 조정하기가 힘든데, 이때 RSMEMORY 프로그램을 사용하면 몇몇 파라미터에 대해서 간단히 조정할 수 있다.

RSMEMORY 를 통한 변경은 현재 로그인한 인스턴스 서버에만 적용되며, 해당 인스턴스 서버의 서비스가 중지 되기 전까지만 적용된다.



1. RSMEMORY 기본 정보

RSMEMORY 에서 변경 가능한 메모리 클래스는 다음과 같다.

  • Extended Memory (class 1)
  • Private Memory (HEAP memory) (class 2)

NW 7.4 이전 버전에는 ROLL memory (class 0) 도 가능하다.
NW 7.4 부터는 ROLL 영역이 EM 과 통합되었다.
자세한 내용은 다음 Notes 참조하기 바란다.

  • SAP Notes 2085980 - New features in memory management as of Kernel Release 7.40

이하 Extended Memory 는 EM,
Private Memory 는 HEAP 으로 명칭한다.

1-1. Quota dialog

Dialog 프로세스에 대한 메모리 조정은 이곳에서 정의된다.

메모리 클래스를 키값으로 메모리 파라미터 값을 변경할 수 있고, 해당 설정이 우선 적용된다.

  • EM
    ztta/roll_extension_dia
  • HEAP
    abap/heap_area_dia

1-2. Quota batch/update/spool

Non-Dialog 프로세스에 대한 메모리 조정은 이곳에서 정의된다.

  • EM
    ztta/roll_extension_nondia
  • HEAP
    abap/heap_area_nondia

1-3. Other parameters

그 외 다른 메모리 파라미터에 대해서도 설정할 수 있다.

  • abap/heap_area_dia
    1-1 Memory class 2 와 동일

  • abap/heap_area_nondia
    1-2 Memory class 2 와 동일

  • abap/heap_area_total
    HEAP Memory 전체 할당량을 설정

  • em/stat_log_timeout
    SAP 메모리 관리 시스템에서 통계 목적으로 사용자 Contexts 크기를 수집한다.
    해당 파라미터는 파일에 기록되는 시간 간격을 지정한다.
    Value 0 은 시스템이 덤프를 작성하지 않는다.

  • em/stat_log_size_MB
    통계 목적으로 수집될 사용자 Contexts 최대 크기 값.
    사용자 Contexts 최대 크기가 해당 값을 초과할 경우 통계목적으로 수집된다.

1-4. EG Memory (Global Extended Memory)

  • EG Memory 파라미터
    em/global_area_MB

Global Extended Memory 는 EM 의 전체 크기에서 파생된다.

EG 는 글로벌 데이터(사용자 또는 작업 프로세스와 연결되지 않는 데이터) 용으로 예약된 EM 의 일부이다.

ABAP 시스템에서 실제로 예약된 EG (RSMEMORY -> EG Overview 에 표시) 의 크기는 항상 em/global_area_MB 값 보다 높다.
ABAP 공유 객체를 위해 추가 공간을 예약하기 때문이다.
따라서 실제 EG 크기는 RSMEMORY-ER Overview 로 알수 있다.

1-5. 메모리 영역 확인

AP서버 인스턴스의 모든 사용자 목록과 해당 사용자의 메모리 요구 사항은 다음 메뉴에서 확인할 수 있다.

RSMEMEOY
-> 메뉴탭 Goto
-> EM/HEAP Areas

해당 화면에서 사용자가 사용하는 HEAP 과 EM 을 확인할 수 있고, 사용자 세션에 따라 EM 이 표시된다.

리스트 제일 마지막 Glo 필드에서 아직 사용 가능한 HEAP 과 EM 이 표시된다.



2. RSMEMORY 를 사용한 메모리 조정

2-1. 메모리 할당 방식

RSMEMORY 를 사용한 메모리 조정 전, 메모리 할당 방식에 대한 간단한 이해가 필요하다.

자세한 내용은 아래 글을 참조하기 바라며, 여기서는 간단한 설명으로 대체한다.

SAP Memory 전체적인 구조 2-2 참조

사용자는 세션별로 메모리(EM, HEAP) 를 할당받으며, 해당 메모리를 Workprocess 에 할당하여 ABAP 프로그램을 수행한다.

여기서 운영체제에 따라 Workprocess 에서 메모리를 사용하는 순서가 결정된다.

<Unix, Linux 의 경우>

  • Dialog
    1. EM
    2. HEAP
  • Non-Dialog (Batch, Update, Spool)
    1. HEAP
    2. EM

<Window, AIX 의 경우>

  • Dialog
    1. EM
    2. HEAP
  • Non-Dialog (Batch, Update, Spool)
    1. EM
    2. HEAP

Unix, Linux 의 경우는 사용자의 작업 유형과 여유 메모리 양에 따라서, 메모리 관리 전략을 짜야한다.


2-2. RSMEMORY 메모리 조정 예시

위 내용들을 바탕으로 다음은 각 상황에 따른 RSMEMORY 사용 예시를 들어 메모리 조정을 하도록 한다.

증상1)

사용자A 가 월 마감 프로그램을 프론트(Dialog) 로 수행하던 중, TSV_TNEW_PAGE_ALLOC_FAILED DUMP 가 발생하였다.
DUMP 내용을 확인하니, 기설정된 메모리 EM 2GB + HEAP 2GB 를 모두 사용하여 해당 DUMP 가 떨어지고 작업이 취소되었다.
해당 작업(월 마감) 은 더 이상 데이터를 축소할 수 없고, 반드시 이번달 내에 처리해야 한다.
때문에 이번 수행에만 임시로 메모리를 조정하여 해당 작업을 수행할 수 있게 하려고 한다.

증상1 해결)

✅ 현재 SAP 시스템 OS 는 Linux 로 가정한다.

Linux OS 에 사용자가 Dialog 작업을 수행하므로, 메모리 할당 순서는 EM -> HEAP 순서가 된다.

따라서, 모든 사용자가 처음부터 할당받는 EM 을 늘리기보다는, EM 사용 후 추가로 받는 HEAP 만 확장함으로써, 메모리 사용량이 많은 작업에 대해서만 메모리 사용의 유연성을 제공하기로 계획한다.
(HEAP 메모리를 임시로 2GB -> 4GB 로 확장)

RSMEMORY 프로그램 실행
-> Quota Dialog
-> Memory class : 2
-> Size [bytes] : 4294967296 (= 4GB)
-> 그외 나머지 값은 기본 설정 값이니, 수정하지 않고 오른편 Copy 버튼 클릭

메모리 설정 적용 후, 작업 재수행 지시.
이때, RSMEMORY 를 수행한 인스턴스에서 사용자가 작업을 수행해야 한다.
(다시 메모리 덤프 발생시, 추가 조정)

작업 완료 후, 메모리 설정값을 원복한다.

profile
SAP BC (2019 ~ )

0개의 댓글