5 октября 2015 г.

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

В постах про память в SAP AS ABAP я уже рассмотрел следующие моменты:

Продолжим.

Мониторинг памяти в SAP AS ABAP инстанции производится с помощью транзакции ST02. Данная транзакция есть во всех версиях SAP систем (начиная с SAP_BASIS 46С точно) и, что немаловажно, между версиями нет больших отличий в интерфейсе и функциональности. На основном экране транзакции отображается информация о памяти в SAP инстанции (рис. 1).

Рис. 1. Основной экран транзакции ST02.


В данном контексте, интерес представляет таблица с заголовком "SAP Memory". В ней можно найти 4 строки, отображающих информацию о разных типах памяти. 

Roll area (рис. 2) - отображает количество используемой в данный момент Roll area (в процентном и абсолютном значениях), величину максимального использования области с момента старта SAP инстанции и сконфигурированные размеры областей - буфера (In Mem) и файла на диске (OnDisk).

Рис. 2. Информация о Roll area.

Page area (рис. 3) - отображается количество используемой памяти в данный момент (в процентном и абсолютном значениях), величина максимального использования области с момента старта SAP инстанции и сконфигурированные размеры частей - буфера (In Mem) и файла на диске (OnDisk).

Рис. 3. Информация о Page area.

Extended memory (рис. 4) - в этой строке отображается количество используемой в данный момент Extended memory (в процентном и абсолютном значениях), величина максимального использования данного типа памяти с момента старта SAP инстанции и максимальный сконфигурированный размер данной области.

Рис. 4. Информация об использовании Extended memory.

Heap memory (рис. 5) - показывает текущий и максимальный размеры использования Heap memory всеми пользователями с момента старта SAP инстанции.

Рис. 5. Heap memory.

Нажатие последовательности кнопок "Detail analysis menu -> SAP memory -> Quotas" приведет к экрану с квотами на выделение тех или иных областей SAP памяти (рис. 6). Вспоминаем выделение памяти для диалоговых и не-диалоговых рабочих процессов, описанных мною в этой части

Рис. 6. Квоты для рабочих процессов разных типов.

Нажав на данном экране кнопку "Mode list", можно перейти к экрану со списком режимов пользователей с величинами потребления памяти (рис. 7). Если в поле "Attchd" стоит символ "Х", то данный режим в данный момент времени работает на одном из рабочих процессов.

Рис. 7. Список режимов пользователей, работающих в системе.

Также для мониторинга использования памяти отдельными пользователями можно использовать транзакцию SM04. Для этого в транзакции необходимо настроить внешний вид, добавив столбец "Memory Consumption" (рис. 8) или выбрать пункт меню "Goto -> Memory" (рис. 9).
Рис. 8. Просмотр использования памяти отдельными пользователями - I.

Рис. 9. Просмотр использования памяти отдельными пользователями - II.

Для просмотра текущих значений параметров, которые отвечают за настройку памяти в SAP AS ABAP, необходимо на начальном экране транзакции ST02 выбрать последовательность кнопок "Detail analysis menu -> SAP memory -> Current parameters" (рис. 10).

Рис. 10. Текущие значения параметров системы, отвечающих за настройку памяти в SAP AS ABAP.

В первом посте на данную тему я определял понятие виртуальной памяти в SAP. Напомню, это сумма общей и локальной памяти в SAP AS ABAP инстанции. Выбрав последовательность кнопок "Detail analysis menu -> Storage" на начальном экране транзакции ST02, можно посмотреть суммарное значение виртуальной памяти для данной SAP инстанции (рис. 11).

Рис. 11. Размер виртуальной памяти в SAP.

Детали общей памяти для всех рабочих процессов доступны по кнопке "Shared memory detail". Можно выполнить суммирование памяти на данном экране и получить цифру из первого экрана (рис. 12).

Рис. 12. Детали общей памяти рабочих процессов в SAP AS ABAP.

Таким образом, в данном случае память складывается из 3-х частей: Extended memory, локальная и общая память рабочих процессов.

В вышеуказанных транзакциях следует учитывать, что на экранах отображаются данные только по текущей инстанции SAP системы. Если у вас SAP система состоит из нескольких диалоговых инстанций, то нужно осуществлять мониторинг памяти каждой по-отдельности, входя локально. Имя инстанции указано в верхней части экрана транзакции ST02 (рис. 1).

Мониторинг следует осуществлять после некоторого времени работы системы. Минимум 3-4 дня работы системы, а лучше неделя. Этот срок позволит собрать статистику по использованию различных типов памяти инстанцией SAP (поля MaxUse) (рис. 2).

Основные рекомендации:
  1. Необходимо стремиться в качестве расположения виртуальной памяти SAP (рис. 11) использовать оперативную память сервера, а не область подкачки (swap). Основная рекомендация - виртуальная память SAP должна быть меньше, чем 150 % от основной памяти сервера. В данном случае, необходимо учитывать память, которая выделяется инстанции базы данных (в случае работы центральной инстанции и инстанции базы данных на одном сервере) или другим приложениям. 
  2. На сервере должна быть сконфигурирована swap область (paging file) достаточного объема. SAP рекомендует использовать размер = 3 * (размер оперативной памяти). Для серверов с большим количеством оперативной памяти следует делать свою поправку, так как цифра по формуле получается очень большой.
  3. При выборе архитектуры сервера следует отдавать предпочтение 64-битной. Причины я указывал в первом посте.
  4. Величина максимального использования Roll area (поле MaxUse) должна быть не больше 80 % от размера буфера Roll area (In Mem) (рис. 2). То есть использование файла на диске для Roll area не рекомендуется.
  5. Величина максимального использования Extended memory (поле MaxUse) должна быть не больше 80 % от сконфигурированного размера (In Mem) (рис. 4). Всем активным пользователям должно с запасом хватать данного вида памяти.

5 комментариев:

  1. Спасибо, отличная серия!

    А вот если в ST02 в InMem для Extended Memory видим 512 288 000 при памяти на хосте и пейджспейсе в 32GB, то это как можно понять ? Бага или фича ?

    ОтветитьУдалить
    Ответы
    1. пришлите мне скриншот в почту - shibolov@gmail.com. И что за ОС.

      Удалить
  2. А какая память используется в buffer?
    Если мне нужно увелить, например, program buffer, от куда на эти нужды будет братся память? Из extended memory например или из нераспределенной памяти непосредственно сервера?
    Спасибо

    ОтветитьУдалить
    Ответы
    1. Посмотрите рисунок 12. Program Buffer входит в этот перечень. Это память, которая выделяется отдельно для всех видов буферов сервера приложений. Конечно же на уровне ОС она выделяется отдельно. Точнее скорее всего её забирает процесс dispatcher.

      Удалить