На уровне сервера приложений SAP AS ABAP существует механизм буферизации. Этот механизм я описал в 4 постах:
Как вы помните из первого поста про память, на уровне инстанции SAP системы выделяют две области памяти: Shared Memory (память доступная для всех процессов) и Local Memory (индивидуальные области памяти для каждого рабочего процесса). Буферы SAP системы являются частью Shared Memory (рис. 1).
Table Buffer отображается и может быть проанализирован в транзакции ST02 (рис. 6).
Размер его (в Мб) может быть указан через новый параметр rsdb/tbi_buffer_area_MB. Значение параметра (по-умолчанию) равное "1", означает, что размер вычисляется по формуле:
Список областей Shared Memory без пулов выглядит так, как на рисунке 7.
Подробнее про это можно найти в SAP note # 1864189 - Incorrect display of Generic Key and Single Record Buffer in ST02 или по ссылке.
- SAP буферизация: общие сведения - описаны типы буферов, инструменты мониторинга и настройки, а также общие рекомендации.
- SAP Program buffer - генерация ABAP loads, параметры настройки SAP Program buffer (PXA), рекомендации по производительности.
- Буферизация таблиц на уровне сервера приложений SAP - I - виды буферизации таблиц, мониторинг, настройка.
- Буферизация таблиц на уровне сервера приложений SAP - II - проблемы табличного буфера в SAP, синхронизация буферов, использование транзакции ST10.
Как вы помните из первого поста про память, на уровне инстанции SAP системы выделяют две области памяти: Shared Memory (память доступная для всех процессов) и Local Memory (индивидуальные области памяти для каждого рабочего процесса). Буферы SAP системы являются частью Shared Memory (рис. 1).
Рис. 1. Области памяти в SAP AS ABAP инстанции. |
На уровне операционной системы (UNIX) области SAP Shared Memory создаются как отдельные единицы и имеют порядковый номер. Возможно их объединение в пулы, и, в этом случае, на уровне операционной системы выделяется одна область Shared Memory - пул (pool). Пулы также имеют порядковый номер. Мы, как администраторов SAP системы, можем использовать только пулы с номерами 10 и 40.
Для настройки областей SAP Shared Memory и пулов используются параметры вида:
ipc/shm_psize_nn = значение
Здесь nn - номер области или пула (обязательно две цифры). Например, ipc/shm_psize_07.
Если значение параметра равно "0", значит данная область исключена из пула. Например, ipc/shm_psize_13 = 0 означает, что 13 область исключена из 10 пула.
Если значение отрицательное, то это означает, что данная область включена в пул, номер которого указан в значении. Например, ipc/shm_psize_33 = -10 означает, что область с номером 33 перенесена в 10-й пул.
Положительное значение возможно только для пулов (10 и 40) и указывает их размеры в байтах.
Посмотреть все области можно в транзакции ST02, если перейти по пути "Detail analysis menu -> Storage -> Shared memory detail" (рис. 2).
Рис. 2. Список Shared Memories с номерами. |
В поле "Key" указан номер области. На этом экране так же можно увидеть какие области входят в 10 и 40 пулы.
В данном примере параметры пулов следующие (рис. 3).
Рис. 3. Размеры Shared Memory Pools. |
В этом и этом постах я уже упоминал про использование утилиты sappfpar. С её помощью можно проверить профиль инстанции (и соответственно, всю инстанцию) на корректность конфигурации памяти. Как я уже упоминал, программа входит в состав SAP Kernel и может быть вызвана с уровня операционной системы командой вида:
# sappfpar pf=/usr/sap/<sid>/SYS/profile/<instance_profile> check
В результатах работы программы можно найти список всех областей SAP Shared Memory с размерами и номерами, а также рекомендации по размерам пулов 10 и 40 (рис. 4).
Рис. 4. Проверка профиля инстанции утилитой sappfpar. |
Если программа выявит некорректные значения, то выдаст сообщения об ошибках и рекомендации (рис. 5).
Рис. 5. Рекомендации по конфигурации памяти от утилиты sappfpar. |
Такая организация/конфигурация используется во всех Unix системах. В SAP note # 1137734 - Assignment of memory areas, shared memories and pools можно найти подробности, а во вложении списки областей SAP Shared Memory для каждой операционной системы.
Стоит отметить, что конфигурация данных областей, кроме 10 и 40 пулов (ipc/shm_psize_10 и ipc/shm_psize_40), без четкого указания со стороны поддержки SAP не рекомендуется.
Настройка пулов очень важна, иначе иногда могут возникать проблемы (например, такие).
Настройка пулов очень важна, иначе иногда могут возникать проблемы (например, такие).
Как я уже упоминал в посте "SAP NetWeaver 7.4: особенности конфигурации памяти", в системах, начиная с версии SAP NetWeaver 7.4, в плане управления памятью появился целый ряд изменений и нововведений.
Отметим еще два:
Отметим еще два:
- Generic Table Buffer и Single Record Table Buffer были объединены в один - Table Buffer.
- Shared Memory Pools (параметры ipc/shm_psize_10 и ipc/shm_psize_40) по-умолчанию деактивированы, но могут быть использованы, как и ранее.
Table Buffer отображается и может быть проанализирован в транзакции ST02 (рис. 6).
Рис. 6. Единый Table Buffer. |
Размер его (в Мб) может быть указан через новый параметр rsdb/tbi_buffer_area_MB. Значение параметра (по-умолчанию) равное "1", означает, что размер вычисляется по формуле:
Размер в байтах = (rttb/buffer_length * 1024 + zsca/table_buffer_area) * 1,1
Список областей Shared Memory без пулов выглядит так, как на рисунке 7.
Рис. 7. Список Shared Memories в SAP NetWeaver 7.4. |
Подробнее про это можно найти в SAP note # 1864189 - Incorrect display of Generic Key and Single Record Buffer in ST02 или по ссылке.
Буферы инстанции могут быть сброшены (обнулены) с помощью специальных команд, веденных в поле команд SAP нужной инстанции (рис. 8).
Существуют следующие команды:
Сброс буферов может быть уместен при обнаружении некорректности в их работе, но стоит помнить, что при выполнении обнуления буфера падает производительность системы (особенно это актуально для продуктивных систем). Выполняйте данные команды только со 100 % пониманием того, что вы делаете. Дополнительную информацию можно найти тут.
Существуют следующие команды:
- /$SYNC - сброс всех буферов, кроме Program Buffer,
- /$CUA - сброс CUA buffer,
- /$TAB - сброс TABLE buffer (двух или одного),
- /$NAM - сброс Nametab buffer,
- /$DYN - сброс Screen buffer,
- /$ESM - сброс Exp./ Imp. Shared Memory Buffer,
- /$PXA - сброс Program Buffer (PXA).
Рис. 8. Сброс табличного буфера. |
Сброс буферов может быть уместен при обнаружении некорректности в их работе, но стоит помнить, что при выполнении обнуления буфера падает производительность системы (особенно это актуально для продуктивных систем). Выполняйте данные команды только со 100 % пониманием того, что вы делаете. Дополнительную информацию можно найти тут.
Комментариев нет:
Отправить комментарий