本系列基于 SAP S/4 HANA version 1709 - On Premise
本文基于 官方帮助文档 SAP Memory Management (BC-CST-MM) (https://help.sap.com/viewer/f146e75588924fa4987b6c8f1a7a8c7e/7.5.13/en-US/49325d4ee93934ffe10000000a421937.html)
目录
一、SAP 内存管理系统 的相关功能 (Functions of the SAP Memory Management System)
1.6 工作进程的虚拟内存空间(Virtual Address Space of a Work Process)
1.7 为操作系统释放SAP内存 (Release of SAP Memory for the Operating System)
二、特定操作系统下的内存管理(Platform-Specific Description of Memory Management)
本文目的(Use)
- 介绍了SAP内存管理系统(Memory Management System,MMS) 并解释了相关profile参数(profile parameters),及适合用户系统的最佳设置;
- 介绍了内存管理的基本功能,最佳的配置取决于使用的操作系统、硬件和网络资源、及系统的主要用途;
- 介绍了硬件和操作系统的需求,如何对内存进行监控,如何定位和解决相关问题。
一、SAP 内存管理系统 的相关功能 (Functions of the SAP Memory Management System)
1.1 基本介绍
一个ABAP程序通常运行在一个工作进程(Work Process)中(事务码 SM66或SM50 可查看 Work Process 的状态),Work Process 的运行需要内存,由操作系统分配内存,分配多少内存取决于 Work Process 的类型,及操作系统特点(在Linux系统中,以Linux进程体现,用 ps -ef|grep sap 查看),
ABAP程序 在 Work Process 中运行时,会直接访问 用户上下文(User context) 作为 ABAP程序 的上下文环境,User Context 的大小 会根据需要自动增加,其中的数据包括了 Extended Memory 中的内部表(internal tables),因此你可以访问User Context 中的所有数据,但 extract 和 export to memory 类型的数据仍保留在paging中(注:这段内容有些超前,可以在看完本文后回头在看)
在 Work Process 执行每个 ABAP程序时,需要访问两种数据:用户相关数据(User-specific Data) 和 用户无关数据(Non-user-specific data)
1) User-specific Data 包括了 ABAP变量、内部表(Internal tables) 等信息,内存调度器(Dispatcher) 会在每个会话步骤(Dialog step) 前 将 用户特定的数据(User-specific Data) 显示给 Work Process 供其操作,这个操作被称为 Roll-In; 在 Dialog step 结束后,会从Work Process中隐藏这些数据,这个操作被称为 Roll-out。

2) Non-user-specific Data 包括了 程序代码(Program code)、栈(Stack)、静态数据(Static data)、SAP 缓存(SAP buffers)、ABAP程序(ABAP programs)、表缓存(Table buffers) 等数据,这些数据Work Process可以一直访问 ,无需每次去Roll-In 和 Roll-Out
1.2 内存管理的基本概念
(注:此处介绍的更多的时操作系统层的内存管理机制,感兴趣的可以去看《深入理解Linux虚拟内存管理》)
-
虚拟内存(Virtual Memory) 所有支持SAP的操作系统均支持虚拟内存,一个系统进程(Process) 能使用分配给他的地址空间(Address Space),这些 Address Space 在操作系统进程间,是相互独立的
-
寻址空间(Address Space) 在64位操作系统中,内存地址范围位 0 ~ 2^64-1
-
内存分配(Memory Allocation) 内存分配分两步执行:1.在 Virtual Memory 中分配一个段(Segment); 2.将 Virtual Memory Segment 映射到物理内存 Segment 中。
-
Virtual Memory 又分为两类:
-
本地进程内存(Local Process Memory) 此类型的内存仅供当前Process使用,Process直接调用API即可申请,无需关心分配的细节。
-
共享内存(Shared Memory) 不同的 Process 可以访问同一内存,这段内存被称为 Shared Memory,不同于Local Process Memory,Shared Memory 内存的分配对 Process 而言是不透明的,且不同的操作系统会使用不同的处理方法、一般会创建一个对象用于管理这些用于共享的物理内存,Process从这个对象中映射全部或部分的内存地址空间(Adress Space)(注: SAP的扩展内存(Extend Memory) 就是一种 Shared Memory,下面有说明)。
1.3 SAP的内存的类型
内存管理系统会分配内存给 Work Process,主要分为两类:扩展内存(Extended memory) 和 私有内存(Private memory, 又称 堆内存(heap memory)),并通过相关的Profile参数控制每个内存的大小:


1153

被折叠的 条评论
为什么被折叠?



