16 сентября 2015 г.

Организация памяти в SAP AS ABAP - I

Данным постом я начинаю цикл статей посвященных производительности SAP систем.

Так как SAP система имеет трехзвенную архитектуру и работает на различных аппаратных и программных платформах, то производительность SAP системы зависит от многих факторов. Можно выделить следующие:
  • производительность и утилизация (оптимальное использование) аппаратной части,
  • производительность операционной системы,
  • производительность базы данных,
  • производительность сервера приложений SAP (AS ABAP, AS JAVA) в целом и его частей.

Поговорим о памяти. Как вы знаете, на уровне операционной системы есть два понятия:
  • физическая память (оперативная память, ОЗУ) - равна размеру физически установленной памяти в сервер.
  • виртуальная память - равна сумме физической памяти и размеру swap области (paging area, файл подкачки). 
Виртуальная память ограничена двумя факторами - размер аппаратных ограничений (сумма физической памяти и swap области) и логические ограничения архитектуры. В 32-х битной архитектуре один процесс может адресовать теоретически максимум 4 Гб (2³²).  В реальности это даже меньше: в зависимости от типа операционной системы - от 2 до 3,8 Гб. Со стороны SAP установка 32-х битных версий на разные операционные системы описана в SAP note 146528 - Configuration of R/3 on hosts with much RAM. В случае 64-х битной архитектуры это число фактически не ограничено (16 Эб). Для использования 64-х битной архитектуры аппаратного обеспечения необходимо, чтобы операционная система, база данных и SAP kernel были 64-х битные. С 2007 года все продукты компании SAP устанавливаются только как 64-х битные с поддержкой Unicode.

На уровне сервера приложений SAP (AS ABAP) выделяют собственное понятие виртуальной памяти, которое включает в себя два вида памяти (рис. 1):
  • shared memory - память доступная для всех процессов инстанции SAP AS ABAP,
  • local memory - память доступная только для одного рабочего процесса системы.

Рис. 1. Типы памяти в SAP: общая картина.

Shared memory содержит следующие области:
  • SAP буферы, которые содержат глобальные объекты для всех пользователей/процессов инстанции. 
  • SAP roll memory, которая располагается в двух областях: памяти (Roll buffer) и на уровне файловой системы (SAP roll file). Cодержит начальный контекст пользователя (имя, полномочия, значения по умолчанию и т.д.), который генерируется единожды при входе в систему. 
  • SAP paging memory так же состоит из двух частей - область в памяти (Paging buffer) и файл на уровне сервера приложений (SAP paging file). Содержит ABAP объекты (Data clusters и параметры для вызывающих программ и транзакций) во время выполнения операндов вида IMPORT/EXPORT FROM/TO MEMORY, SUBMIT REPORT, CALL TRANSACTION, CALL DIALOG и т.п. 
  • Extended memory содержит данные для отдельных пользователей и их запущенных транзакций (внутренние таблицы, списки и т.п.). Даже если пользователь не запустил ни одной транзакции, место в Extended memory он занимает, так как там хранится вторая часть контекста пользователя. 

Local memory содержит следующие области:
  • Local memory - локальные области для каждого рабочего процесса, которые содержат, например, SAP cursor cache (хранит и разбирает SQL запросы) и I/O буфер для передачи данных от и до базы данных.
  • Heap memory - выделяется по требованию, если рабочему процессу не хватает Extended memory. Освобождается по окончанию шага диалога.

Автор: Шиболов Вячеслав Анатольевич


2 комментария:

  1. Добрый день, Вячеслав, классная статья. Только у вас там опечаточка: shared memore.

    ОтветитьУдалить