[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Работа с общей памятью

С помощью функций shmat() и mmap() файл можно напрямую разместить в памяти. Это позволяет избежать буферизации и вызова системных функций. Некоторые области памяти в системе выделяются под сегменты общей памяти. В AIX 4.2.1 и выше при выполнении 32-разрядных приложений сегмент 14 освобождается под сегмент общей памяти. Всего в системе применяется 11 сегментов общей памяти: с 3-12 и 14 (без учета сегментов, содержащих данные и код общих библиотек). Размер этих сегментов составляет 256 Мб. Приложения могут считывать данные из файла и записывать данные в файл, напрямую обращаясь к сегменту памяти. Таким образом, приложение может отказаться от системных вызовов чтения-записи, работая с указателями в этих сегментах.

Файлы и данные могут применяться несколькими процессами или нитями. При этом приложение должно синхронизировать доступ процессов или нитей к общим объектам. Например, общий сегмент памяти может применяться приложениями базы данных в качестве большого кэша буфера.

Для общих сегментов памяти пространство подкачки выделяется точно так же, как и для личных сегментов процессов. Если стратегия отложенного выделения пространства подкачки выключена, то пространство подкачки выделяется при обращении к страницам сегмента.

Расширенная общая память (EXTSHM)

По умолчанию любой общей области памяти, независимо от ее фактического размера, выделяется 256 Мб адресного пространства. В AIX 4.2.1 и выше поддерживается расширенная общая память, допускающая создание более мелких общих областей памяти (размером от 1 байта до 256 Мб). Однако для всех областей памяти выделяется целое число страниц физической памяти (размер страницы составляет 4096 байт). В системе с расширенной общей памятью число общих областей памяти не ограничено.

Расширенная общая память может применяться процессами, для которых установлена переменная среды EXTSHM=ON. Число общих областей памяти, которые может создать процесс, не ограничено. Процессы по-прежнему могут размещать файлы в памяти, однако при этом, как и раньше, будет выделяться адресное пространство, объем которого кратен 256 Мб (размеру сегмента). Изменить размер общей области памяти нельзя. Все вышесказанное справедливо и для процессов ядра. Если указанная переменная среды не установлена, то процессу доступно 11 сегментов памяти размером 256 Мб.

При работе с расширенной общей памятью следует учитывать следующие ограничения:


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]