How to Configure SAP HANA Memory Limits on SUSE Linux Enterprise Server

SAP HANA memory control on SUSE Linux Enterprise Server works best when you separate two different jobs: limiting what HANA may allocate, and protecting SAP workloads when the Linux host is under memory pressure. SAP HANA handles the first job with database parameters such as global_allocation_limit and statement_memory_limit. SUSE's systemd/cgroup-based Workload Memory Protection handles the second with MemoryLow on SAP.slice. These mechanisms complement each other, but they are not interchangeable.

This guide uses SAP HANA Platform 2.0 SPS 08 documentation and current SUSE Linux Enterprise Server for SAP Applications guidance available in October 2026. Before changing a production system, confirm that your exact HANA revision and SLES service pack are supported. SAP's installation guide points administrators to SAP Note 2235581 for supported operating systems: SAP HANA Server Installation and Update Guide.

Which memory control should you use?

ControlWhat it doesBest fitMain trade-off
global_allocation_limitCaps the memory SAP HANA can allocate on a host.Dedicated HANA hosts, co-located SAP systems, or environments where HANA must leave RAM for the OS and other services.Too low can cause allocation failures or poor performance; too high leaves less headroom outside HANA.
statement_memory_limitLimits memory used by an individual SQL statement.Mixed workloads where one large query should not consume a disproportionate share of memory.A low limit can abort legitimate analytical or administrative statements.
User-specific statement limitOverrides the global statement memory limit for one database user.Reporting, ad-hoc analytics, ETL, or other users with different risk profiles.Adds policy complexity and must be maintained as users and workloads change.
SUSE MemoryLow on SAP.sliceProtects a minimum amount of memory for SAP processes under cgroup v2 memory pressure.Hosts where non-SAP processes could compete with SAP for RAM.It is protection, not a HANA hard cap; setting it too close to physical RAM can starve system services.

SAP documents global_allocation_limit in MB. With the parameter left at its default value of 0, HANA calculates an automatic limit based on available physical memory; the SPS 08 Administration Guide describes the current formula as 90% of the first 64 GB plus 97% of each additional GB, with special handling for very small systems. The same guide states that changing the parameter does not require a restart. See SAP HANA Administration Guide 2.0 SPS 08.

Step 1: Measure host memory before setting a limit

Start on SLES by checking physical RAM, available memory, swap activity, and whether SAP processes are already grouped in SAP.slice. This gives you the boundary conditions before you decide how much memory HANA may use.

free -h
grep MemTotal /proc/meminfo
systemctl status SAP.slice

Do not choose a HANA limit simply by subtracting a fixed number of gigabytes from installed RAM. Reserve memory for the Linux kernel, SAP Host Agent, monitoring software, backup tools, cluster components, and any co-located application servers. If ABAP and HANA share a host, SAP explicitly requires the sizing of both systems to fit within physical memory and recommends coordinating HANA's global allocation limit with the ABAP PHYS_MEMSIZE setting: SAP Configuring Memory Settings.

В терминале SUSE Linux отображается состояние free -h, meminfo и SAP.slice перед изменением настроек памяти SAP HANA.
SUSE Linux checks for installed memory, current availability, and the SAP.slice cgroup before choosing a HANA allocation limit.

Step 2: Read the existing HANA memory parameters

Before changing anything, record the effective configuration. You can inspect M_INIFILE_CONTENTS from SAP HANA Database Explorer, Cockpit SQL console, or another authorized SQL client.

SELECT FILE_NAME, SECTION, KEY, VALUE, LAYER_NAME
FROM M_INIFILE_CONTENTS
WHERE FILE_NAME = 'global.ini'
  AND SECTION = 'memorymanager'
  AND KEY IN ('global_allocation_limit',
              'statement_memory_limit',
              'statement_memory_limit_threshold')
ORDER BY KEY, LAYER_NAME;

The layer matters. In multi-tenant systems, system-level and database-level settings can have different scope. Do not copy a command from a single-container example without checking whether you are connected to SYSTEMDB or a tenant database and which layer you intend to change.

Запрос к консоли SQL SAP HANA для получения значений параметров global_allocation_limit и statement_memory_limit в таблице M_INIFILE_CONTENTS.
The HANA SQL console is used to inspect existing memory-manager parameters before making changes.

Step 3: Set the global HANA allocation limit

Use global_allocation_limit when the objective is to bound HANA's total allocation. A value such as 180000 means 180,000 MB; it is only an example, not a universal recommendation. The correct number must come from sizing, workload history, high-availability requirements, and the memory that must remain available to the operating system and other processes.

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('memorymanager', 'global_allocation_limit') = '180000'
WITH RECONFIGURE;

The advantage of a lower global limit is predictable headroom outside HANA. The cost is less room for column-store growth, caches, intermediate query results, and service overhead. If the host is dedicated to HANA, the automatic default may be appropriate after sizing validation. If the host is shared, an explicit limit is usually easier to reason about because every resident workload has a defined budget.

В консоли SQL SAP HANA Database Explorer применяется ограничение глобального выделения памяти в 180000 МБ с помощью команды ALTER SYSTEM ALTER CONFIGURATION.
An example SYSTEM-layer change to global_allocation_limit; the numeric value must be replaced with the result of your own sizing.

Step 4: Decide whether to limit individual SQL statements

statement_memory_limit controls the maximum memory allocation for a single statement and is expressed in GB. SAP documents the default as 0, meaning no statement-specific limit. A finite value is useful when ad-hoc analytical queries or poorly filtered joins can consume a large portion of the global pool.

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('memorymanager', 'statement_memory_limit') = '5'
WITH RECONFIGURE;

Компромисс очевиден: более жесткий лимит защищает от параллельного выполнения, но может привести к прерыванию ресурсоемких запросов, допустимых для вашего бизнеса. SAP отмечает, что достижение лимита приводит к прерыванию запроса и может вызвать дамп памяти с compositelimit_oomопределенным именем. Подробности см. в разделе «Управление памятью» руководства по устранению неполадок и анализу производительности SAP HANA .

В SAP HANA Database Explorer в файле global.ini установлено значение statement_memory_limit равное 5 ГБ.
Пример ограничения в 5 ГБ на один запрос. Производственное значение следует проверить на соответствие обычным пиковым нагрузкам на запросы.

Шаг 5: Используйте пользовательские ограничения, если одно глобальное значение слишком грубое.

Ограничение на количество запросов в одном запросе просто в использовании, но оно рассматривает учетную запись ETL, используемую в течение ночи, так же, как и учетную запись пользователя для интерактивной отчетности. SAP поддерживает пользовательское ограничение STATEMENT MEMORY LIMIT, которое имеет приоритет над глобальным ограничением на количество запросов для этого пользователя.

ALTER USER REPORT_USER
SET PARAMETER STATEMENT MEMORY LIMIT = '2';

Этот подход часто лучше, чем снижение глобального лимита для всех. Например, можно ограничить создание отчетов по запросу, оставив при этом больший лимит для пакетных или административных учетных записей. Недостаток заключается в управлении: исключения необходимо документировать, проверять и удалять, когда они больше не нужны. SAP также документирует ограничения для запросов между базами данных и некоторых сценариев XS Classic, где более подходящими могут быть классы рабочей нагрузки. См. SAP Настройка пользовательских параметров для рабочей нагрузки .

В консоли SAP HANA SQL установлено ограничение на объем памяти для оператора REPORT_USER в 2 ГБ.
Ограничение объема памяти для отдельных пользователей позволяет изолировать пользователей, работающих с отчетами или выполняющих разовые задачи, без уменьшения объема памяти, выделяемого для каждой рабочей нагрузки.

Шаг 6: Защитите память SAP в SUSE с помощью MemoryLow, а не второго жесткого ограничения.

В SLES для приложений SAP компания SUSE рекомендует использовать защиту памяти рабочих нагрузок с помощью systemd и cgroup v2. Экземпляры SAP размещаются в SAP.slice, и SUSE заявляет, что для SAP HANA в качестве основы можно использовать глобальный лимит выделения памяти HANA MemoryLow.

sudo systemctl set-property SAP.slice MemoryLow=180G
systemctl show SAP.slice -p MemoryLow

MemoryLowЭто пороговое значение защиты: при нехватке памяти ядро ​​пытается защитить этот объем для cgroup. Это не то же самое, что и MemoryMax, и оно не заменяет собственный распределитель памяти HANA. Это различие важно, поскольку жесткое ограничение на уровне ОС может привести к иному режиму отказа, чем внутренние механизмы управления распределением памяти HANA.

Компания SUSE также предупреждает, что не следует устанавливать MemoryLowзначение, близкое к общему объему физической памяти или превышающее его, поскольку системным службам и другому установленному программному обеспечению также требуется память. Актуальные рекомендации можно найти в документе SUSE Workload Memory Protection for SLES for SAP 15 SP6 .

Настройка параметра SAP.slice MemoryLow в терминале SUSE на 180 ГБ и подтверждение значения с помощью systemctl.
В системе SLES MemoryLowобеспечивается защита SAP.slice во время перегрузки памяти хоста; при этом не устанавливается ограничение на объем выделяемой памяти, характерное для HANA.

Шаг 7: Убедитесь, что вы случайно не добавили конфликтующее ограничение cgroup.

После установки параметров MemoryLowпроверьте соответствующие свойства systemd. Если в вашей системе намеренно не используются параметры MemoryHighили MemoryMax, убедитесь, что они не были введены локальным модулем, системой автоматизации или несвязанной политикой настройки.

systemctl show SAP.slice | grep -E 'MemoryLow|MemoryHigh|MemoryMax'

Это особенно важно на общих хостах, управляемых автоматизацией конфигурации. Защита памяти рабочих нагрузок SUSE предназначена для защиты SAP от нагрузки со стороны рабочих нагрузок, находящихся за пределами защищаемой группы cgroup; она не может защитить системы SAP или экземпляры SAP друг от друга, если все они используют одну и ту же группу SAP.slicecgroup. Это означает, что определение размера на уровне приложения по-прежнему имеет значение, даже если защита cgroup включена.

Терминал SUSE отображает значения MemoryLow, MemoryHigh и MemoryMax для файла SAP.slice.
Анализ свойств файла SAP.slice помогает отличить предполагаемую защиту от недостатка памяти от любых отдельных настроек, определяющих максимальный или максимальный объем памяти.

Шаг 8: Проверьте настройки HANA и поведение мониторинга при реальной рабочей нагрузке.

Повторите запрос M_INIFILE_CONTENTSпосле внесения изменений и подтвердите нужный слой и значения. Затем отслеживайте работу системы в обычном режиме и при пиковой нагрузке. Конфигурация не считается успешной только потому, что SQL-запрос выполнился без ошибок.

SELECT FILE_NAME, SECTION, KEY, VALUE
FROM M_INIFILE_CONTENTS
WHERE FILE_NAME = 'global.ini'
  AND SECTION = 'memorymanager'
ORDER BY KEY;

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

SAP HANA Database Explorer отображает проверенные значения global_allocation_limit и statement_memory_limit из M_INIFILE_CONTENTS.
Окончательная проверка должна подтвердить заданные значения в HANA, после чего должно быть проведено наблюдение при репрезентативной рабочей нагрузке.

Выбор политики для распространенных схем развертывания

Выделенный производственный хост HANA

Отдавайте предпочтение собственному глобальному управлению распределением памяти HANA и оставляйте достаточный запас ресурсов ОС в зависимости от размеров SAP. Добавляйте ограничение на количество операторов только в том случае, если история рабочей нагрузки показывает, что отдельные операторы угрожают параллельному выполнению задач. Используйте SUSE, MemoryLowесли хотите защитить рабочую нагрузку SAP от нагрузки на память, не связанной с SAP, на хосте.

Сервер приложений HANA Plus на одном хосте

Используйте явно заданные бюджеты. Координируйте HANA global_allocation_limitс настройками памяти сервера приложений, например, с помощью параметров PHYS_MEMSIZE. Это менее гибко, чем позволить обеим сторонам свободно увеличивать объем памяти, но снижает риск того, что один компонент будет потреблять память, необходимую другому.

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

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

Системы высокой доступности (HA) или кластерные системы HANA

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

Распространенные ошибки, которых следует избегать

  • Функция MemoryLow рассматривается как жесткое ограничение. Она защищает память, но не ограничивает HANA этим объемом.
  • Установка параметра MemoryMax обусловлена ​​тем, что это звучит эквивалентно ограничению на выделение памяти в HANA. Однако семантика отличается, и жесткое ограничение, установленное операционной системой, может помешать управлению памятью в HANA.
  • Использование одного и того же ограничения на объем памяти для всех пользователей без подтверждения рабочей нагрузки. Запрос на формирование отчета и операция технического обслуживания могут иметь совершенно разные допустимые потребности в памяти.
  • В системах MDC игнорируется уровень конфигурации. Убедитесь, изменяете ли вы область действия SYSTEM, HOST или DATABASE, и на какую базу данных ориентирована ваша SQL-сессия.
  • Примерные значения копируются в рабочую среду. Приведенные здесь значения 180 ГБ и 5 ГБ являются демонстрационными, а не рекомендациями по выбору объема памяти.
  • Это не оставляет места для SUSE и вспомогательных сервисов. HANA — не единственный потребитель физической оперативной памяти.

Окончательная рекомендация

Используйте ограничения SAP HANA global_allocation_limitв качестве основного лимита памяти HANA, добавляйте их statement_memory_limitтолько тогда, когда необходимо контролировать риски отдельных запросов, и используйте политики для конкретных пользователей или классов рабочих нагрузок, когда разные рабочие нагрузки требуют разных ограничений. В SUSE Linux Enterprise Server для приложений SAP используйте это SAP.slice MemoryLowдля защиты рабочей нагрузки SAP от нагрузки на уровне хоста, а не пытайтесь дублировать лимит HANA с помощью жесткого ограничения cgroup.

Наиболее важный компромисс заключается в выборе между максимальной емкостью кэша/запросов HANA и достаточным запасом ресурсов хоста для поддержания работоспособности операционной системы и размещенных на ней сервисов. Окончательные расчеты следует основывать на размерах SAP и наблюдаемых пиковых нагрузках в производственной среде, а затем проверить работоспособность HANA и SLES после внесения изменений.

Оставить комментарий

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Узнайте, как восстановить потерянные разделы и файлы с помощью TestDisk и PhotoRec. Защитите исходный диск, проведите безопасное сканирование и сохраните восстановленные данные на другой диск.

Как сканировать QR-коды на настольном компьютере с Linux

Как сканировать QR-коды на настольном компьютере с Linux

Сканируйте QR-коды в Linux с помощью CoBang, используя веб-камеру или файл изображения. См. варианты установки, шаги настройки и решения проблем с доступом к камере Flatpak.

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Изменяйте настройки веб-камеры в Linux с помощью Cameractrls: настраивайте экспозицию, цвет, подавление мерцания и другие поддерживаемые параметры, а затем проверяйте совместимые видеорежимы.

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Установите PhpStorm на Linux с помощью JetBrains Toolbox или автономного архива tar.gz, а также через Snap и Arch AUR. Java уже включена в комплект.

Как создать резервную копию CD-ROM в формате ISO в Linux

Как создать резервную копию CD-ROM в формате ISO в Linux

Создайте образ CD-ROM ISO в Linux с помощью GNOME Disks или dd. Определите оптический привод, отслеживайте процесс копирования, проверяйте образ и узнавайте, когда поврежденный диск или аудиодиск требует использования другого инструмента.

Как вырезать изображение в Linux с помощью GIMP

Как вырезать изображение в Linux с помощью GIMP

Удаление фона фотографии в Linux с помощью GIMP: обведите контур объекта, удалите выделенный фон, сохранив прозрачность, и экспортируйте многоразовый PNG-файл.

Как установить Cisco Packet Tracer на Linux

Как установить Cisco Packet Tracer на Linux

Загрузите Cisco Packet Tracer 9.0.1 для Ubuntu 64-бит, установите DEB-пакет с помощью APT, примите лицензионное соглашение в Терминале и войдите в систему, чтобы начать лабораторную работу.

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно с официального сайта. Сравните пакеты для Windows, macOS и Linux, установите файлы данных и совершите свой первый полет.

Настольное приложение Google Tasks: как им пользоваться на компьютере

Настольное приложение Google Tasks: как им пользоваться на компьютере

Откройте Google Задачи в браузере, добавьте ярлык Chrome или запустите приложение, и управляйте задачами с указанием даты через Календарь и Gmail.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler сопоставляет MP3-клипы с клавишами клавиатуры и может зацикливать аудио. Узнайте, что делает эта старая бесплатная программа, на чем заканчиваются ее старые функции и что нужно проверить перед загрузкой.