SAP S/4 HANA와 ERP 6.0의 Memory 기초

SAP Memory Management에 대해서 설명을 드리기 전에 SAP Memory 설정하는 방법에 대해서 제가 4.6C를 하면서부터 혼자고 고민하고 자료 찾아가면서 공부한 내용인데 이러한 지식을 공유하고 좀더 SAP에 대해서 깊게 알아가면 좋을 것 같습니다. SAP Memory를 설명하기 위해서 자료를 찾는데 쉽게 설명할 수 있는 자료가 없어서 몇 가지 그림을 그려서 설명을 하도록 하겠습니다.

SAP ERP 6.0 과 S/4 HANA의 SAP Memory 설정하는 방법에는 변화된 내용이 있어서 차이가 발생합니다. 그래서 먼저 기존에 SAP ERP 6.0을 사용하고 있는 회사들이 많이 존재하여 ERP 6.0의 Memory 설정하는 방법에 대해서 먼저 설명으로 하고 S/4 HANA에서 변경되는 부분에 대해서 설명을 하겠습니다.

먼저 SAP ERP 6.0의 Memory 관리에 대해서 설명을 하겠습니다.정확하게 이야기 하면 SAP NetWeaver 7.4 이전 버전에 해당하는 것으로 SAP 4.6C, 4.7 Enterprise, SAP ERP 6.0 Ehp1 ~Ehp6까지 해당되는 내용입니다. NetWeaver 7.4에서 SAP Memory 설정이 바뀌게 되고 S/4 HANA가 사용하는 NetWeaver 7.5도 NetWeaver 7.4와 동일한 Memory 설정에 해당됩니다.

1. SAP가 ERP와 S/4 HANA의 출시 연도에 대한 내용입니다.

출시 년도 SAP ERP 제품 SAP Basis/Web AS, NetWeaver AS 주요 Core Business
1973 SAP R/98
1979 SAP R2
1992 SAP R/3 1.0A
1993 SAP R/3 2.0
1998 R/3 3.1I
1998 R/3 4.0B 4.0B
1999 R/3 4.5B 4.5B
1999 R/3 4.6B 4.6B
2000 R/3 4.6C 4.6C
2002 R/3 Enterprise 4.7×110 SAP BASIS 6.20 4.7
2003 R/3 ENTERPRISE 47X200 SAP BASIS 6.30 4.7
2004 SAP ERP 2004 SAP BASIS 6.40 / NetWeaver 2004 5.0
2005 SAP ERP 6.0(2005) NetWeaver 7.0(2004s) 6.0(다른이름 2005)
2006 SAP ERP 6.0 EHP1 NetWeaver 7.0 6.01
2007 SAP ERP 6.0 EHP2 NetWeaver 7.0 6.02
2007 SAP ERP 6.0 EHP3 NetWeaver 7.0 6.03
2008 SAP ERP 6.0 EHP4 NetWeaver 7.0 EHP1(7.01) 6.04
2010 SAP ERP 6.0 EHP5 NetWeaver 7.0 EHP2(7.02) 6.05
2011 SAP ERP 6.0 EHP6 NetWeaver 7.3 (7.30) 6.06
2013 SAP ERP 6.0 EHP7 NetWeaver 7.4 (7.40) 6.07
2016 SAP ERP 6.0 EHP8 NetWeaver 7.5 (7.50) 6.08
2017 SAP S/4 HANA 1709 NetWeaver 7.52 (7.52) S/4 HANA 1709

2.  SAP Application Server에서 사용하는 메모리에 대해서 설명을 하겠습니다.

SAP Memory 설정은 SAP Application Server에 대해서 설정하는 것으로 아래 그림과 같은 중간 부분에 해당되는 것입니다.

3. SAP NetWeaver AS System에서 사용자 PC의 SAPGUI로 접속하여 Transaction 을 실행 했을때 흐름을 보여주는 그림입니다. SAP Application Server에서 Extend Memory, Program Buffer, Roll Memory 사용하는 것을 볼 수 있습니다.

4. SAP NetWeaver 7.0에서 가장 많이 사용하게 되는 BSP(Business Server Page)를 활용하여 Web Browser를 이용하여 SAP Web Application Server를 접속 Web Page를 호출하여 사용하는 과정을 보여준 내용입니다.

지금까지 SAP Web Application Server가 사용자 요청을 처리하는 과정을 보았는데 여기에서 Memory를 활용하는 과정을 설명하였습니다.

  1. SAP Memory 설정에서 물리적인 메모리(Physical Memory), 가상 메모리(Virtual Memory), ABAP Memory 에 대한 용어를 설명하도록 하겠습니다. 우리가 여기에서 이해해야 할 것은 가상메모리(Virtual Memory)는 물리적 메모리(Physical Memory)와 운영체제의 스왑(Swap) 파일의 합이라는 것을 이해하시면 됩니다.

Virtual Memory = H/W의 물리적 메모리(Physical Memory) + SWAP 파일

Physical Memory = H/W에 장착되어 있는 실제 물리적인 메모리

ABAP Memory = SAP에서 사용하는 SAP Memory 입니다. 여기에는 Work Process 메모리, SAP Buffer, Extended Memory, Private Memory가 포함되어 있습니다.

  1. SAP에서 Memory를 사용하는 전체적인 관점에서 설명을 하는 그림입니다. 아래 그림의 왼쪽의 Global Memory는 공유 메모리로 모든 사용자가 접근이 가능한 Memory 영역입니다. Local Memory는 Work Process가 독점적으로 사용하는 영역으로 각 Work Process가 자기 자신의 메모리 영역(Memory Area)입니다.

  • 공유 메모리(Shared Memory) : 모든 SAP Work Process가 접근하는 Memory이다.(SAP Buffer, Extend Memory, Roll Buffer)
  • 로컬 메모리(Local Memory) : 각 SAP Work Process가 자기 자신 것을 가지고 있는 Memory로 ABAP Load, Data, Stack, Buffer for database transfer, Local roll area, Local paging area가 Local Memory 상주(존재)합니다.
  • SAP Buffer : 모든 사용자와 모든 SAP Work Process가 접근하는 메모리로 Program, buffered table content, PXA buffer, Nametab buffer, Calender buffer, Table buffer가 여기에 해당됩니다. Transaction ST02에서 모니터링 및 확인 할 수 있습니다.
  • Roll Buffer : User Context의 아주 작은 부분입니다.여기에는 User Name, Default values 값, User 권한(authorization)들이 Roll buffer에 저장됩니다. 로그인 사용자 당 한 개씩 할당 됩니다.
  • Extend Memory : User Context의 아주 큰 부분입니다.각 사용자의 Transaction data, 변수(Variable), List, Internal Table을 포함된 Open Transaction을 가지고 있습니다.
  • SAP Paging Area : ABAP Object에서 Extract과 같은 것과 Context-Independent Object인 Export같은 것을 가지고 있습니다. ABAP Command들이 SAP Paging Area에 해당되는데 명령어로 EXTRACT, IMPORT TO MEMORY, EXPORT FROM MEMORY, CALL TRANSACTION 같은 ABAP Command이 해당됩니다.
  • User Context : 각 사용자만이 가지고 있는 영역으로 User authorization, Set/Get Parameter, Internal table, Report list, Variable이 여기에 해당됩니다.
  • User-Independent Data : SAP Buffer에 포함하는 것으로 Program, Table정의, Filed 정의, Customizing Table이 여기에 해당됩니다.
  • Heap Memory : Extended Memory와 같은 Data Type을 포함하고 있습니다. 그러나 Extended Memory를 모두 사용한 이후에 Dialog Work Process가 더 많은 메모리를 사용하기를 원할 때 사용되는것이 Heap memory입니다. Heap Memory는 요구에 따라 할당(Allocated)되고 반환(Release)됩니다.
  1. SAP Roll Memory에 대해서 자세하게 설명하겠습니다.SAP 사용자가 SAP Application Server에 로그인을 하게 되면 사용자의 기본적인 정보인 User Name, Default values 값, User 권한(authorization)의 정보가 Work Process1으로 Copy하게 됩니다 이것을 Roll In 과정이라고 합니다.. 그리고 Transaction을 수행하고 작업이 모두 종료되면 사용자는 Work Process를 빠져 나오게 되는데(Exit) 이것을 Roll out 이라고 합니다.

  • Roll In : SAP 사용자가 새로운 Work Process를 사용할 때, User Context 정보가 Shared Roll Buffer에서 Local의 Roll area로 Copy되는 과정을 말합니다.
  • Roll Out : SAP Work Process는 사용자가 Transaction Step을 종료하게 되면 다른 사용자가 사용할 수 있도록 해야 합니다. 다른 사람이 사용할 수 있도록 하기 위해 Transaction Step을 종료한 사용자의 User Context 를 Local Roll Buffer에서 Shared Roll Area에 Copy하는 과정을 Roll out이라고 합니다.
  1. SAP Memory와 그에 대한 Parameter 설정에 대해서 설명하도록 하겠습니다. SAP 메모리 사용하는 것중에 대표적인 Heap Memory, Extended Memory, Roll Memory에 대한 SAP Parameter에 대한 내용을 그림과 Parameter로 설명하였습니다. SAP Parameter는 종류가 너무 많고 설정해야 하는 것들 또한 많습니다.. 오라클이나 MS SQL에 비하면 설정하는 내용이 복잡하고 이해하기 어렵게 되어 있습니다.

SAP Heap Memory main parameters :

– abap/heap_area_dia      : quotas of SAP heap memory that a dialog  process can allocated.

– abap/heap_area_nondia : quotas of SAP heap memory that a nondialog  process can allocated.

– abap/heap_area_total     : size that can be allocated in total by all work  process.

– abap/heaplimit           : Workprocess restart limit of heap memory

SAP Extended Memory main parameters

– em/initial_size_MB       : size of SAP extended memory allocated when   the SAP instance starts up

– em/blocksize_KB        : size block which split SAP Extended Memory

– ztta/roll_extension       : maximum size of a user context in the SAP Extended memory

SAP Roll area parameters

– ztta/roll_first              : First amount of roll area used in a dialog WP

– ztta/roll_area             : size of the local SAP Roll area in the work process

– rdisp/ROLL_SHM        : size of SAP roll Buffer

– rdisp/ROLL_MAXFS      : size of entire shared SAP roll area

  1. SAP Dialog Work Process가 사용하는 Memory 할당하는 과정에 대해서 설명한 그림입니다. Dialog Work Process에서 사용자가 Memory를 할당하는 순서와 Non-Work Process에서 사용자가 Memory를 할당하는 순서가 다르게 Memory를 할당하는 것을 설명한 내용입니다.

처음에 Roll Memory를 먼저 할당하고 다음에 Extended Memory를 할당합니다.그리고 마지막에 Heap Memory를 할당하는 순서로 진행됩니다.사용자 독립적인 데이터(User-Independent Data)는 모든 사용자가 접근하는 Memory 영역으로 SAP Buffer에 존재하는 프로그램, 테이블이 여기에 해당됩니다.그리고 User Context는 특정 사용자(Specific User)만 접근하는 Memory 영역으로 각 개인에 종속적인 Memory로 사용자 권한, Internal Table, Set/Get 파라미터들이 여기에 해당됩니다.

  1. Non-Dialog Work Process 에서 사용자가 Memory를 할당하는 순서를 설명한 그림입니다.

Non-Dialog Work Process는 Background, Spool 같은 Work Process로 처음에 Roll Memory를 사용하고 그 다음에 Heap Memory를 사용합니다. 그리고 마지막에 Extended Memory를 사용하는 순서로 진행됩니다.

  1. SAP에서 Memory를 지정하는 방법에 UNIX와 Windows 가 차이가 발생합니다.UNIX는 좀더 복잡한 방법으로 설정을 해야 합니다. 그러나 SAP NetWeaver 7.4 이상에서는 좀더 편하게 SAP Memory를 설정하도록 Parameter인 PHYS_MEMSIZE=80%이 소개 되었습니다. 하지만 이것은 SAP R/3 4.6C, 4.7 Enterprise, NetWeaver 7.0에 해당 되는 내용으로 다음과 같이 UNIX와 Windows 시스템에 설정하는 방법이 차이가 있습니다.

UNIX환경에서 SAP Memory 설정하는 Parameter 내용입니다.

Windows 환경에서 SAP Memory 설정하는 Parameter 내용입니다. Windows 시스템 환경에서는 Zero Administrator Memory Management가 나와서 파라미터 PHYS_MEMSIZE=90% 등으로 적당한 값(Value)을 설정할 수 있습니다.

  1. SAP NetWeaver 7.4 이후에 Roll Memory가 Extended Memory로 이동하였습니다.

Roll Area의 저장되는 모든 영역이 Extended Memory로 이동하여 Zero Administration Memory Menagement로 좀더 쉽게 메모리를 설정 할 수 있게 되었습니다.

그래서 SAP NetWeaver 7.4 과 그 이후에 사용하는 S/4 HANA 버전에는 아래 파라미터가 삭제가 되었습니다.

ztta/roll_first      :  Initial allocation from the roll area

ztta/roll_area      :  Total size of the roll area in bytes

rdisp/roll_SHM    :  Size of the roll buffer in 8 KB blocks

rdisp/roll_MAXFS  :  Size of the roll file in 8 KB blocks

Transaction Code ST02에서  Roll Area가 없어지는 것을 확인 할 수 있습니다.

아래는 SAP NetWevar 7.0, NetWeaver 7.3 등에 해당되는 것입니다.

아래는 SAP NetWevar 7.4 버전과 S/4 HANA 1610(NetWeaver 7.51)에는 Roll Area가 없어진 것을 확인 할 수 있습니다.

S/4 HANA 1709(NetWeaver 7.52)에서 Extended Memory가 세부적으로 Global Extended Memory, Shared object, Table Buffer가 추가 되었습니다.