본문 바로가기

IT/SAP

[BC] SAP Memory Management(2) - SAP Memory Allocation

 
지난 글에서는 SAP 구조에 대해 알아봤다. 이제 SAP Memory 관리 이론에 대해 알아볼 시간이다.
 
 

SAP 메모리 할당은 운영체제, 작업 프로세스 유형(Dialog, Nondialog)에 따라 다르다

 

SAP Memory 대표적인 유형은 3가지다. 각 영역마다 역할이 있고 운영체제/작업유형에 따라 순서가 할당된다.

  • SAP Roll Area - User Context(Authorization, Set/Get Parameters, Interal Table, Report Lists)
  • SAP Extended Memory - Work Process
  • Private Memory - Work Process
 
sap momroy와 운영체제 리소스 매핑

 

프로세스를 실행하면 물리적 메모리를 할당하게 되는데 프로세스의 가상 주소 공간에 물리적 메모리 세그먼트를 연결하는 것은 가상 주소 공간에서 동일한 크기의 세그먼트를 예약하고 가상 주소를 물리적 주소에 매핑한다.

 

Heap

  • Roll area: 사용자 데이터, Authoriztation, Abap Pram, Object, Internal table
  • Paing: Memory for specific abap command
  • Data: 전역 변수
  • Text: Code

 

Roll Area

롤 영역은 작업 프로세스에 속하는 설정된(구성 가능한) 크기의 메모리 영역입니다. 작업 프로세스의 가상 주소 공간의 힙에 위치합니다. 작업 프로세스의 컨텍스트가 변경되면 데이터가 롤 영역에서 롤 파일이라는 공통 리소스로 복사됩니다. 반복적인 복사를 방지하기 위해 그 사이에 공유 메모리의 일부인 또 따른 롤 버퍼가 위치합니다.
 
Roll In/Out
Dialog Step이 실행될 때마다 공유 메모리의 Roll 버퍼와 Dialog 프로세스에서 ztta/roll_first 에 따라 할당된 메모리 영역 사이에서 Roll Action이 발생합니다. 그런 다음 이 사용자 컨텍스트에 속하는 공유 메모리의 영역에 액세스 합니다.
 
롤인: 교차 사용자 데이터가 작업 프로세스의 공통 리소스에서 롤인되고 그곳에서 처리됩니다.
롤아웃: 사용자별 데이터는 공통 리소스의 작업 프로세스에서 롤아웃 됩니다.(Dialog 종료 후)

 

 
 

Extended Memory

사용자 컨텍스트(새창)의 대부분은 확장 메모리(EM)에 저장됩니다. 이 메모리 스택의 페이지 관리는 운영 체제가 아닌 SAP 시스템에서 직접 수행됩니다. 이 확장 메모리는 명명되지 않은 매핑 파일로 구현됩니다.(AIX에서는 선택적으로 HP-UX에서는 공유메모리로). 이는 주소 공간이 페이징 파일을 사용하거나 운영 체제의 스왑공간을 배경 메모리로 사용한다는 의미입니다. 컨텍스트가 변경되면 확장 메모리에 있는 사용자 컨텍스트는 롤 영역과 마찬가지로 복사되지 않습니다. 대신 작업을 매핑하여 교대 작업 프로세스에 할당됩니다. 롤 영역을 줄일 수 있으므로 복사되는 데이터가 적고 확장 영역 매핑이 작업 직약적이지 않으므로 컨텍스트 변경이 더 빨라집니다. 모든 내부 테이블과 ABAP 변수는 직접적으로 다룰 수 있는 사용자 컨텍스트 영역에 완전히 위치합니다.

 

Private Memory

확장 메모리가 가득 차거나 작업 프로세스에 대한 제한을 초과한 경우 작업 프로세스는 힙 메모리를 할당합니다. 세스(Priv 모드)에서 처리할 수 없기 때문에 개인 메모리라고 합니다. 작업 프로세스를 다시 해제할 때까지 현재 사용자 컨텍스트를 처리하기 위해 작업 프로세스가 예약되어 있음을 의미합니다.
 
잘 이해는 안되지만, EM은 Shared, Heap memory는 Private 방식이라고 개념정리하고 가자
 
프로세스 유형/운영체제에 따라 할당 순서가 다르다

NTDiaRollEmHeap 
 Non DiaRollEmHeap 
Unix/LunuxDiaRollEmRollHeap
 Non DiaRollHeapEm 

7.0 version

 

     
     
     

    다시 파라미터 설정값을 보고
    실제로 어떻게 설정되어있는지 ST02 프로파일을 보면 값을 알 수 있다.

     
    설정된 파라미터로 메모리가 어떻게 할당되는지?

    em/initail_size_MB로 EM 사이즈 설정, ztta/roll_extension으로 wp 사이즈 설정
    wp가 점점 늘어나 EM을차지하는 모습
    heap memory 사용하겠지?

     

    결론

    SAP Memory는 대표적으로 3가지 유형이 있고, 운영체제, WP유형에 따라 할당 순서가 다르다. ST02에서 설정된 파라미터를 알 수 있다.
     
     
    이론은 알았으니 이제 실제로 이렇게 작동하는지 실습해보자
    [BC] SAP Memory Management(3) - 실습, RSMEMORY, Troubleshooting
     
     
     
     
     
     
     
    출저:
    https://help.sap.com/docs/SAP_NETWEAVER_731_BW_ABAP/f146e75588924fa4987b6c8f1a7a8c7e/4932eff3e92e3504e10000000a421937.html
    https://help.sap.com/docs/ABAP_PLATFORM/f146e75588924fa4987b6c8f1a7a8c7e/49325d4ee93934ffe10000000a421937.html?locale=ko-kr