28 октября 2015 г.

SAP NetWeaver 7.4: особенности конфигурации памяти

Начиная с SAP Kernel 7.40 (ядро, которое поставляется в паре с системой SAP NetWeaver 7.4), в организации памяти в SAP AS ABAP были произведены два крупных нововведения:
  • упразднение SAP Roll memory,
  • введение Zero Administration Memory Management (ZAMM) для Unix систем. 

Как я уже упоминал в этом и этом постах, SAP Roll Memory состоит из SAP Roll buffer и SAP Roll file и служит для хранения контекста пользователя (имя, полномочия, значения по умолчанию и т.д.). Схемы выделения памяти для диалогового и не-диалогового процессов (в Unix системах), описанные мной тут, выглядят следующим образом:
  • диалоговый процесс: Roll memory (1) -> Extended memory -> Roll memory (2) -> Heap memory.
  • не-диалоговый процесс: Roll memory -> Heap memory -> Extended memory.

В SAP NetWeaver 7.4 схема выделения памяти значительно упростилась:
  • диалоговый рабочий процесс: Extended memory -> Heap memory.
  • не-диалоговый рабочий процесс: Heap memory -> Extended memory.

Описание схем можно найти в SAP note # 941735 - SAP memory management system for 64-bit Linux systems

Таким образом, SAP параметры ztta/roll_area, ztta/roll_first, rdisp/ROLL_MAXFS и rdisp/ROLL_SHM были удалены (источник). Напомню, что все параметры я перечислил в этом посте.

Все данные, которые раньше хранились в SAP Roll memory, теперь хранятся в Extended Memory.

В транзакции ST02 строка с SAP Roll memory присутствует в виде рудимента (рис. 1 и 2).

Рис. 1. Основной экран транзакции ST02 в системе SAP NetWeaver 7.4.

Рис. 2. Список SAP параметров для настройки памяти в SAP AS ABAP.

В системе появился отчет RSMEMORY (запуск через транзакцию SA38/SE38) (рис. 3), который позволяет настраивать схемы выделения памяти для диалоговых и не-диалоговых рабочих процессов (схема выделения будет действовать только для текущей инстанции и только до перезапуска). Подробности тут.

Рис. 3. Отчет RSMEMORY.

Вторая большая особенность системы на базе SAP Kernel 7.4x это введение ZAMM для Unix систем. До этого момента ZAMM был доступен для систем MS Windows (я описывал тут) и для 32-х битных Linux систем (подробности тут). 

ZAMM, в данном случае, настраивается аналогичным образом. Меняем значение параметра PHYS_MEMSIZE, если необходимо (по-умолчанию, равен размеру физической памяти, установленной на сервере)(рис. 4). 

Рис. 4. Параметр PHYS_MEMSIZE.

В отличие от систем на платформе MS Windows, Extended Memory в Unix статична: 
em/max_size_MB = em/initial_size_MB = 70 % от PHYS_MEMSIZE (рис. 5 и 6).

Рис. 5. SAP параметр em/initial_size_MB.

Рис. 6. SAP параметр em/max_size_MB.

Формулы для всех параметров, значения которых рассчитываются в рамках ZAMM, можно найти в SAP note # 2085980 - New features in memory management as of Kernel Release 7.40.

Стоит отметить еще пару моментов. Как я упоминал в этом посте, внутри Extended Memory выделяют область, которая называется Extended Global Memory (сокращенно EG). Данная область определяется параметром em/global_area_MB и составляет около 5-10 % от Extended Memory (SAP note # 1514752 - Extended Global Memory configuration). Начиная с SAP Kernel 7.40, в Extended Global Memory перенесли Table Buffer, который хранит записи таблиц на уровне сервера приложений SAP. И все это хранится в Extended Memory (рис. 7).

Рис. 7. Содержимое Extended Memory в SAP AS ABAP.

Таким образом, в новой версии SAP NetWeaver Extended Memory содержит больше областей, чем в предыдущих версиях. Это означает, что при равных значениях параметра em/initial_size_MB в ранних релизах и в SAP NetWeaver 7.4, в последней может наблюдаться недостаток данной памяти для работы пользователей. Особенно следует учитывать данную деталь в случае обновления системы до версии SAP NetWeaver 7.4 с предыдущих версий. На основном экране транзакции ST02 перенос Table Buffer в EG легко прослеживается (рис. 1).

Начиная с SAP NetWeaver 7.40 SPS08 (SAP Kernel 7.42), появляется новый вид памяти - PROC/Heap Memory, который принадлежит рабочим процессам (то есть является локальным), но не содержит контекст пользователя, как Heap Memory. Лимит, определяющий максимальное количество данной памяти для всех рабочих процессов, определяется параметром em/proc_max_size_MB. Значение по-умолчанию равно 0, что означает без ограничений. При введении ограничения рекомендуется выделять по 100 Мб на рабочий процесс. 


22 октября 2015 г.

Особенности конфигурации памяти в SAP AS ABAP на Linux

В прошлом посте я писал про особенности конфигурации памяти в ABAP инстанции SAP системы, работающей в среде операционной системе MS Windows. Особый упор был сделан на механизм упрощенной конфигурации или ZAMM. В этот раз рассмотрим среду Linux.

В операционной системе Linux доступны две разные системы управления памятью. Переключение производится посредством SAP параметра es/implementation:
  • MAP implementation (es/implementation = map).
  • STD implementation (es/implementation = std).

MAP implementation - в данном случае, только активный в текущий момент времени контекст пользователя виден в адресном пространстве рабочего процесса. Использование оптимально в 32-битной версии операционной системы. Возможно использование для систем на базе SAP Kernel 4.5B (уровень патча 731) и выше. Для SAP Kernel версий от 6.20 до 7.00 является системой по-умолчанию (es/implementation = map).

Для использования необходимо Linux ядро 2.4 и TMPFS, смонтированная под /dev/shm, так как SAP Extended Memory хранится в TMPFS.

Стоит отметить, что в данном случае, возможна активация Zero Administration Memory Management (ZAMM), как в операционной системе MS Windows

Как и в MS Windows, активируется через параметр PHYS_MEMSIZE, который устанавливается в зависимости от размера оперативной (физической) памяти. Возможна установка в процентном отношении ('100%', '50%', '25%'). В данном случае, сообщение об ошибке ('не цифровое значение') в RZ10 можно игнорировать. Большая часть параметров должна быть удалена из профиля, их установка будет выполнена в автоматическом режиме, в зависимости от параметра PHYS_MEMSIZE (рис. 1).

Рис. 1. Параметры SAP профиля, которые устанавливаются в рамках ZAMM.

Данную схему управления можно использовать и в 64-битной операционной системе, но это не рекомендуется. 

В ноте, помимо вышеуказанной информации, описано, как корректно монтировать TMPFS, в поддерживаемых SAP AG, версиях Linux.


STD implementation - в данном случае, используется схема управления памятью, как в Unix системах: все контексты пользователей видны в адресном пространстве одновременно. Начиная с SAP Kernel 7.10, в 64-битных Linux системах STD implementation активировано по-умолчанию. 

При STD implementation значение параметров SAP идентично классической Unix схеме. Про это я писал в посте - Организация памяти в SAP AS ABAP - III.

В данном контексте важными являются следующие параметры операционной системы Linux (настройка в файле /etc/sysctl.conf):
  • kernel.shmmax - не рекомендуется изменять значение, которое установлено по-умолчанию, так как оно уже достаточного размера.
  • kernel.shmall - не рекомендуется изменять значение, которое установлено по-умолчанию, так как оно уже достаточного размера.
  • TMPFS - хотя уже не используется для хранения SAP Extended Memory, но SAP рекомендует использовать значение равное 75 % от виртуальной памяти операционной системы (ОЗУ + swap).
В ноте описаны SAP параметры с их назначением, схемы выделения памяти (о которой я писал тут), а также, возможные ошибки в системе.


P.S. Коллеги, у кого системы работают на AIX (до SAP NetWeaver 7.40), помогите материалом для следующего поста: скриншоты, список нот, личные заметки. Знаю, что там есть своя специфика в работе механизма управления памятью, но сам никогда с системами на этой операционной системе не сталкивался. Спасибо. :)

19 октября 2015 г.

SAP NetWeaver AS ABAP 7.03 SP4 64-bit Trial

MiniSAP(старое название) - это SAP система, созданная прежде всего для разработчиков на ABAP, распространяется компанией SAP бесплатно, как Trial версия. Я про это писал в этом и этом постах.

Сегодня я хочу написать, как установить систему SAP NetWeaver AS ABAP 7.03 SP4 64-bit Trial. На данный момент это последняя версия ABAP Trial системы, которую можно скачать.

Доступна она, как и две предыдущие, по этой ссылке (необходима бесплатная регистрация на SAP SCN портале).

Требования к системе подросли, так как это уже 64-битная система:
  • Windows 7 Professional или Windows Server 2008 (64-бит).
  • минимум 2 Гб ОЗУ (желательно 4 Гб или больше),
  • файл подкачки 16 - 24 Гб (программа установки просит именно 24 Гб),
  • Intel Pentium III 1.1 GHz или выше,
  • 45 Гб на HDD (36 Гб занимает система с базой данных после установки), файловая система NTFS,
  • отсутствие установленной SAP системы и MaxDB инстанции.
Документацию по установке и использованию искать в файле start.htm в архиве с дистрибутивом.

Я устанавливал в виртуальную машину с 3 Гб оперативной памяти. Жесткого диска размером 80 Гб мне хватило (после установки свободно осталось всего 6 Гб). При этом paging file настроил размером 16 Гб.

В качестве операционной системы выбрал MS Windows 2008 64-bit ENG.

14 октября 2015 г.

ZAMM: упрощенная конфигурация памяти в MS Windows

В этом посте я приводил основные параметры инстанции SAP AS ABAP, которые отвечают за конфигурацию памяти.

Для операционной системы MS Windows, начиная с систем основанных на SAP BASIS 4.0, доступна упрощенная конфигурация памяти или «Zero Administration Memory Management» (сокращенно ZAMM). Целью данного нововведения было сокращение количества параметров, необходимых для конфигурации памяти, и, соответствующее, упрощение процедуры конфигурации оной.

ZAMM активируется через установку параметра PHYS_MEMSIZE.

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

Рис. 1. Значение параметра PHYS_MEMSIZE, равное размеру ОЗУ.

ZAMM базируется на динамическом изменении SAP Extended Memory, которая изменяется от размера указанного в параметре PHYS_MEMSIZE до лимита, указанного в параметре em/max_size_MB. Или пока выделение не остановит предел виртуальной памяти операционной системы MS Windows. Как я уже говорил, виртуальная память операционной системы это сумма оперативной памяти (физической памяти) сервера и файла подкачки (paging file или swap space). По-умолчанию, значения параметра em/max_size_MB - 20 000 Мб (32-битная архитектура), 100 000 Мб (64-битная архитектура) (рис. 2). В данном случае, очень важным является размер paging file, он должен быть достаточного размера. Рекомендации я приводил тут.

Рис. 2. Значение параметра em/max_size_MB.

Все остальные параметры, о которых я писал тут, вычисляются автоматически, устанавливать их вручную необходимости нет, хотя, это и возможно в рамках активной ZAMM.

SAP Heap memory имеет, в данном случае, меньшее значение, так как в MS Windows диалоговые и не-диалоговые рабочие процессы сначала используют Extended memory, а она, при использовании ZAMM, динамически расширяется.

SAP параметр ztta/roll_extension (размер квоты для одного пользователя в Extended memory),  установленный в значение 2 000 000 000, деактивируется, и используется значение параметра em/address_space_MB (по-умолчанию, 512 Мб для 32-бит и 4 Гб или 8 Гб для 64-бит) (рис. 3).

Рис. 3. Значение параметра em/address_space_MB.

В моем примере, настройка памяти, в рамках упрощенной конфигурации памяти (ZAMM) и не установленных вручную параметрах для памяти, выглядит так, как на рисунке 4.

Рис. 4. Конфигурация памяти в SAP с помощью ZAMM.

Подробности по ZAMM для Windows и примеры формул автоматического расчета остальных параметров памяти для разных версий SAP kernel  можно найти в SAP Note 88416 - Zero administration memory management for the ABAP server.


12 октября 2015 г.

Опрос: статистика по SAP платформам

В 2011 году я выкладывал статистические данные по количеству инсталляций SAP систем на те или иные платформы (операционная система и СУБД) в России. Данные эти были старые и  неполные (а сейчас и подавно).

А недавно я подумал, а почему бы нам не провести свой опрос.

Итак, прошу. Отметьте какие операционные системы, СУБД и версии SAP_BASIS (SAP NetWeaver) используются у вас на проектах. Интересуют больше всего продуктивные системы (игровые, песочницы просьба не включать). Ошибки с прошлым опросом учёл, в данном можно отметить несколько вариантов для каждого опроса.

Если выбрали пункт другое, напиши в комментарии что именно используется.




Спасибо. Результаты опроса будут после 10 ноября.

Обновление: в итоге, в голосовании участвовало 40 человек. Всем спасибо. Результаты разместил.


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


8 октября 2015 г.

Рабочие процессы в PRIV режиме

Как я описывал во второй части моего рассказа об организации памяти в SAP AS ABAP, последовательность выделения памяти диалоговому рабочему процессу следующая:
  1. Сначала для пользователя выделяется небольшой объем Roll area, который задается параметром ztta/roll_first (100-200 Кб).
  2. Если размер контекста пользователя растет, то используется память Extended memory через указатели (pointers). 
  3. Если контекст пользователя использует весь объем Extended memory, определенный в квоте на один шаг диалога (параметр ztta/roll_extension), то рабочий процесс начинает использовать локальную память в Roll area, до размера квоты, определенной параметром ztta/roll_area.
  4. Если рабочему процессу необходимо больше памяти, то она выделяется в области SAP Heap memory (локальная память). С данного момента рабочий процесс переходит в PRIV режим (private mode). 
  5. Если рабочему процессу необходимо SAP Heap memory больше, чем сконфигурировано в квоте, определенной параметром abap/heap_area_dia, то программа прерывается с дампом, сообщающем о нехватке памяти.

Таким образом, после того, как рабочий процесс использовал всю память, разрешенную квотами, в Roll area + Extended memory, ему выделяется память из области SAP Heap memory. С этого момента данный рабочий процесс переходит в привилегированный режим работы (PRIV mode) (рис. 1). Это означает, что данный диалоговый рабочий процесс будет закреплен за данным пользователем, то есть не будет выгружать его контекст (roll-out) до тех пор, пока пользователь не выполнит все шаги текущей транзакции.

Рис. 1. Рабочий процесс в PRIV режиме.

Рабочий процесс в PRIV режиме работает хорошо, но скорость работы других пользователей, а, следовательно, и производительность всей системы в целом, снижается, так как мультиплексирование рабочих процессов для данного рабочего процесса не работает. Снижение производительности будет тем больше, чем больше рабочих процессов находится в PRIV режиме.

В SAP системе такие процессы отслеживаются в транзакции SM50 (рис. 2).

Рис. 2. Рабочий процесс в PRIV режиме в транзакции SM50.

Выполнив в транзакции SM04 пункт меню "Goto -> Memory", можно также обнаружить данного пользователя, который использует SAP Heap Memory (рис. 3).

Рис. 3. Транзакция SM04: мониторинг использования SAP Heap memory пользователями.

Войдя в транзакцию ST02, на основном экране можно наблюдать текущее использование SAP Heap memory (рис. 4).

Рис. 4. Текущее использование SAP Heap memory.

Нажав комбинацию кнопок "Detail analysis menu -> SAP memory -> Mode list", можно обнаружить режим данного пользователя и информацию об использовании им памяти. Отсутствие пометки "X" в поле "Attchd" означает, что рабочий процесс в данный момент не выполняет никакой задачи от пользователя, но содержит его контекст и простаивает в PRIV режиме (рис. 5).

Рис. 5. Список режимов пользователей с информацией об использовании памяти.

При выделении рабочему процессу SAP Heap memory больше чем задано квотой (параметр abap/heaplimit), рабочий процесс отмечается для будущего рестарта на уровне операционной системы. В данном случае после окончания транзакции рабочий процесс выполняет рестарт. Данный процесс необходим для полного и корректного освобождения локальной памяти, занимаемой рабочим процессом (рис. 6). Особенно это актуально для Unix-like операционных систем.

Рис. 6. Рестарт рабочего процесса после PRIV режима.

Рабочие процессы, выполнившие рестарт по данной причине, не отмечаются флагом "Err" в транзакции SM50, но оставляют запись об этом в журналах рабочих процессов (dev_wX).

В системе необходимо избегать ситуаций перехода рабочих процессов в PRIV режим, прежде всего, выделяя достаточное количество Extended memory.

Так же есть дополнительные параметры, позволяющие контролировать ситуацию:

  • rdisp/wppriv_max_no (по-умолчанию, "(количество диалоговых рабочих процессов)-5" или "1") - определяет максимальное количество процессов в PRIV режиме, 
  • rdisp/max_priv_time (по-умолчанию, "600") - устанавливает ограничение по времени работы рабочего процесса в PRIV режиме. 

Если количество рабочих процессов, работающих в PRIV режиме, превышает количество, указанное в параметре rdisp/wppriv_max_no, и время работы рабочего процесса в PRIV режиме превышает значение, указанное в параметре rdisp/max_priv_time, то происходит сброс самой долго-работающей транзакции в рабочем процессе в PRIV режиме.

Подробности в SAP Note 79435: Automatic resetting from PRIV mode.

Данный механизм не действует на не-диалоговые рабочие процессы. Хотя, как я уже и описывал, они в первую очередь используют Heap memory, оставляя Extended memory для диалоговых рабочих процессов.



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


5 октября 2015 г.

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

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

Продолжим.

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

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