SAP Memory 전체적인 구조 및 관리__SAP Memory Structure and Management

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

SAP BC - 중급

목록 보기
3/13
post-thumbnail

SAP 메모리에 대한 전체적인 구조와 관리 방법에 대해서 서술한다.

SAP 메모리는 크게 다음과 같은 유형이 있다.

Memory TypePhys. AssignLifetimeaddr. StabilityUser-Specific
SAP Shared Memory (SHM)All WorkprocessesABAP InstanceNoNo
Extended Segments Memory (ES)All WorkprocessesABAP TransactionsYes-
Extended Memory (EM)All WorkprocessesABAP TransactionsYesYes
Global Extended Memory (EG)All WorkprocessesABAP InstanceYesNo
PRIV Memory (HEAP)Process-specificABAP TransactionsYesYes
PROC MemoryProcess-specificABAP InstanceYesNo

자세한 내용은 help.sap.com 에서 확인 가능하다.

1. SAP Memory 유형

1-1. SAP Shared Memory (SHM)

SHM 은 모든 Workprocesses(작업 프로세스) 에서 공유되는 공유 메모리를 제공한다.
SHM 은 운영체제의 Shared Memory 를 기반으로 하며, Local SHM Segment 와 Global SHM Segment 로 구성된다.

Local SHM Segment : 하나의 AP Instance 의 모든 Workprocess 에서 사용될 수 있다.
Global SHM Segment : 동일한 Host 에서 실행되는 모든 Instance 의 모든 Workprocess 에서 사용될 수 있다.

1-2. Extended Segments Memory (ES)

ES 는 EM 과 EG 의 기초를 형성하는 단위이다.

ES 는 Segment 로 구성되며, AP Instance 의 모든 Workprocess 에서 사용될 수 있다.

ES Segment 는 동일한 크기의 ES Block 으로 구성되며, 기본값은 4MB 이다.

  • ES Block 파라미터
    • em/blocksize_KB

1-3. Extended Memory (EM)

EM 은 여러 Workprocess 가 엑세스하는 사용자 세션(사용자 컨텍스트) 의 대부분의 데이터가 저장된다.
시스템과 사용자의 상호작용이 대부분 처리되는 곳이다.

NW 7.4 부터는 ROLL 영역이 EM 과 통합되었다.
자세한 내용은 다음 Notes 참조하기 바란다.

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

운영체제에 따라 Workprocess 유형(Dialog, Non-Dialog) 의 EM 메모리 영역을 할당하는 순서가 달라진다.

<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

  • EM 파라미터
    • em/initial_size_MB : EM 전체 크기 설정
      • EM/TOTAL_SIZE_MB : AIX 에서의 EM 전체 크기 설정
    • ztta/roll_extension : Dialog, Non-Dialog Workprocess 에 할당할 수 있는 최대 EM 크기
    • ztta/roll_extension_dia : Dialog Workprocess 에 할당할 수 있는 최대 EM 크기
    • ztta/roll_extension_nondia : Non-Dialog Workprocess 에 할당할 수 있는 최대 EM 크기
    • ztta/short_area : 다음 roll-out 까지 단기적으로 사용가능한 메모리 크기, 해당 파라미터 크기대로 EM 최대 크기까지 메모리가 부여된다.

ztta/roll_extension* 할당 크기는 em/initial_size_MB 보다 작아야 한다.

기본적으로 Dialog 작업에서는 빠른 사용자 컨텍스트 전환을 보장하기 위해, Workprocess 에 EM 을 먼저 할당한다.
이 후, 메모리 사용량이 EM 최대 할당량에 도달하면, HEAP 을 할당한다.

Non_Dialog 작업의 경우, Unix(AIX 제외), Linux 에서는 HEAP 을 먼저 할당한다. 이 후, HEAP 이 최대 할당량에 도달하면 추가로 EM 을 할당한다.

Non-Dialog 작업에 대해서 HEAP -> EM 순으로 할당하는 이유에 대해서, SAP 에서는 Non-Dialog 작업에서는 빠른 사용자 컨텍스트가 필요하지 않으므로 후에 EM을 할당한다고 설명하고 있다.

1-4. Global Extended Memory (EG)

Global Extended Memory 는 EM 의 일부이다.
여기에는 사용자별 데이터가 포함되어 있으며, 모든 작업 프로세스에서 엑세스할 수 있다.

EG 는 글로벌 데이터(사용자 또는 작업 프로세스와 연결되지 않는 데이터) 용으로 예약된 EM 의 일부이며, SAP 커널 구성 요소들 간의 내부 통신에서 발생하는 관리 데이터만 EG 로 저장된다.

일반적인 EG 의 크기는 EM 의 5% 크기이며,
SAP 에서도 EG의 크기를 EM의 5~10% 크기를 추천한다. (물론 운영 환경에 따라 변경 할 수 있다.)

  • EG 파라미터
    • em/global_area_MB

1-5. PRIV Memory (HEAP)

HEAP 메모리는 할당되면 사용자 세션이 종료되어 컨텍스트가 Workprocess 를 해제할 때까지 현재 사용자 컨텍스트를 처리하기 위해서만 사용된다.

HEAP 메모리를 할당받게 되면 Workprocess 는 PRIV 모드로 들어가게 되며, 이동안 다른 사용자 컨텍스트를 처리할 수 없게 된다.

  • HEAP 파라미터
    • abap/heap_area_total : Workprocess 가 사용자 컨텍스트에 할당할 수 있는 최대 크기
      Phys. Memory 와 abap/heap_area_dia 크기에 따라 자동으로 계산된다.
    • abap/heap_area_dia : 모든 Dialog Workprocess 에 할당할 수 있는 최대 HEAP 크기
      (abap/heap_area_total 보다 작아야 한다.)
      (Default 값 : ztta/roll_extension)
    • abap/heap_area_nondia : 모든 Non-Dialog Workprocess 에 할당할 수 있는 최대 HEAP 크기
      (abap/heap_area_total 보다 작아야 한다.)
      (Default 값 : ztta/roll_extension)

abap/heap_area_dia, nondia 값은 total 보다 높으면 적용되지 않는다. 따라서, 각 파라미터 값은 total 보다 작아야 한다.
즉, total 보다 높은 값으로는 메모리를 할당할 수 없으며, HEAP total 은 모든 Workprocess 에서 총 HEAP 메모리를 제한한다.

기본적으로 Dialog 작업에서 EM 최대 할당량을 초과할 경우 HEAP 이 추가로 할당되는데,
이때 HEAP 최대 크기인 heap_area_total 의 여유량에 따라, heap_area_dia 내에서 메모리가 할당된다.
만약 HEAP 여유가 없다면, 추가로 할당할 메모리가 없으므로 Workprocess 가 EM 최대 할당량에 도달할 경우, 추가로 HEAP 메모리를 할당받지 못하고 메모리 DUMP 와 함께 작업이 종료된다.

이를 방지하기 위해 추가로 HEAP 파라미터를 설정할 수 있다.

  • HEAP 추가 파라미터

    • abap/heaplimit : Workprocess 에서 사용한 HEAP 크기가 해당 파라미터 값을 초과한다면, 현재 수행 중인 작업이 종료될 때, 해당 Workprocess 를 재시작한다. (OS SWAP 해제를 위해서 작동)

    • rdisp/max_priv_time : Workprocess 가 PRIV 모드에서 수핼될 수 있는 최대시간.
      단위지정이 없다면 기본단위는 초 단위이다.

    • rdisp/wppriv_max_no : PRIV 모드로 실행하는 Workprocess 최대 숫자
      이 제한이 있다면, 다음 PRIV Workprocess 가 들어올때, 가장 오랫동안 PRIV 모드에 있었던 Workprocess 가 종료된다.

      rdisp/wppriv_max_no 파라미터가 rdisp/max_priv_time 보다 우선순위가 높다

      0 설정 시, PRIV 모드로 전환되는 모든 Workprocess 가 종료된다.
      (즉 HEAP 메모리를 쓰지 않는다.)

1-6. PROC Memory

PROC 메모리는 HEAP 과 달리 사용자 세션에 관계없이 각 Workprocess 에 필요한 데이터(Temporary, Heap buffer 등등) 에 사용된다.

  • PROC 파라미터
    • em/proc_max_size_MB : 모든 Workprocess 에 대해서 점유할 수 있는 최대 PROC 메모리 크기


2. 사용자 세션

2-1. 사용자 컨텍스트(User Conetxt)

사용자 컨텍스트에는 사용자 세션에 속하는 데이터가 포함되어있다.

사용자 세션에서 ABAP 프로그램은 서버 Workprocess 에 의해 실행되고, EM 에 저장된 사용자 컨텍스트가 필요하다.

사용자 컨텍스트에는 다음 데이터가 포함되어 있다.

  • 사용자 데이터
  • Authorization 데이터
  • ABAP 변수
  • ABAP 오브젝트
  • Internal Table

2-2. 전체적인 User 에 대한 메모리 할당 방식

  • 사용자가 SAPGUI 를 통해 As ABAP 시스템에 로그인하면 별도의 User Session 이 시작된다.

  • 사용자가 새 SAPGUI창을 열면 해당 User Session 내에 새 ABAP Session이 열린다.

  • 사용자가 ABAP 프로그램을 실행하면 ABAP Session 내에서 새로운 내부 Session이 열린다.
    해당 내부 Session 에는 다양한 메모리 유형의 메모리 영역을 프로그램에 할당한다. 여기에는 프로그램 실행에 필요한 데이터가 포함된다.

  • 사용자가 수행한 ABAP 프로그램은 서버 내 Workprocess 에서 실행된다.
    Workprocess 는 사용자 Session Memory 에서 EM 메모리를 할당받는다.

  • 사용자가 수행한 ABAP 프로그램이 할당 받은 메모리(EM) 를 전부 사용하면, HEAP 여유가 있을때, HEAP 메모리를 추가로 할당받는다.


따라서 메모리 부여 순서에 대해 정리하면 다음과 같다. (Linux, Dialog 작업 예시)

  1. 사용자가 작업(ABAP 프로그램) 을 수행하면, Dispatcher 가 요청을 받아받은 후 Queue 로 요청을 넣는다.

  2. 이후 DIspatcher Queue에서 해당 작업의 순서가 되면, 유휴 Workprocess 로 작업을 할당하고, Workprocess 는 User Context 에서 권한을 확인 한 뒤, 사용자 세션으로부터 메모리(Dialog 작업이므로 EM)를 할당받아 수행한다.

  3. 작업량에 따라, ztta/short_area 크기 단위로 EM 최대치까지 메모리를 부여 받는게 가능하다.

  4. 부여받은 메모리가 EM 최대 할당치까지 도달하고도 메모리가 더 필요하다면, HEAP 메모리를 부여한다. (HEAP 여유가 있다면)

  5. EM 최대 할당량 + HEAP 최대 할당량까지 사용해도 메모리가 더 필요하다면, 더 이상 메모리를 부여하지 않고, DUMP 를 생성하고 작업을 종료한다.

profile
SAP BC (2019 ~ )

0개의 댓글