6. SAP内存管理(一)(Memory Management) - SAP S/4 Basis Learning

本系列基于 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)

目录

本文目的(Use)

一、SAP 内存管理系统 的相关功能 (Functions of the SAP Memory Management System)

1.1  基本介绍

1.2 内存管理的基本概念

1.3 SAP的内存的类型

1.4 用户上下文(User Context)

1.5 工作进程(Work Process)

1.6 工作进程的虚拟内存空间(Virtual Address Space of a Work Process)

1.7 为操作系统释放SAP内存 (Release of SAP Memory for the Operating System)

介绍(Use & Integration)

控制功能点(Feature)

二、特定操作系统下的内存管理(Platform-Specific Description of Memory Management)



 

本文目的(Use)

  1. 介绍了SAP内存管理系统(Memory Management System,MMS) 并解释了相关profile参数(profile parameters),及适合用户系统的最佳设置;
  2. 介绍了内存管理的基本功能,最佳的配置取决于使用的操作系统、硬件和网络资源、及系统的主要用途;
  3. 介绍了硬件和操作系统的需求,如何对内存进行监控,如何定位和解决相关问题。

 

 

一、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参数控制每个内存的大小:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值