지난 글에서는 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
프로세스를 실행하면 물리적 메모리를 할당하게 되는데 프로세스의 가상 주소 공간에 물리적 메모리 세그먼트를 연결하는 것은 가상 주소 공간에서 동일한 크기의 세그먼트를 예약하고 가상 주소를 물리적 주소에 매핑한다.
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 방식이라고 개념정리하고 가자
프로세스 유형/운영체제에 따라 할당 순서가 다르다
NT | Dia | Roll | Em | Heap | |
Non Dia | Roll | Em | Heap | ||
Unix/Lunux | Dia | Roll | Em | Roll | Heap |
Non Dia | Roll | Heap | Em |
7.0 version
설정된 파라미터로 메모리가 어떻게 할당되는지?
결론
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
'IT > SAP' 카테고리의 다른 글
[BC] SAP ABAP 테스트 서버 가지고 놀기 (0) | 2024.04.24 |
---|---|
[BC] SAP Memory Management(3) - 실습, RSMEMORY, Troubleshooting (0) | 2024.04.15 |
[BC] SAP Memory Management(1) - SAP Architecture (1) | 2024.04.12 |
[ABAP]Excel Upload (0) | 2023.06.27 |
[SAP] BADI, USER EXIT 찾는 법, BADI Debug 안걸릴 때 (0) | 2022.10.26 |