Динамическая, единообразно объявленная память совместного использования

Оценить
(0 голоса)

Чтобы позволить базам данных более гибко реагировать на события DR, в релизе 1/01 операционной системы Solaris 8 была введена модифицированная версия ISM, получившая название DISM (Dynamic ISM - динамическая ISM). DISM позволяет выполнять динамическое изменение размеров активных сегментов памяти совместного использования. DISM вызывается из программы при добавлении параметра SHM_PAGEABLE к вызову shmat(2).

Ожидания, связанные с ISM, базируются на том, что размер первоначального сегмента памяти будет приемлемым в течение всего срока жизни данного экземпляра базы данных. По контрасту сегменты DISM создаются очень большими только из некоторого подмножества памяти совместного использования, фактически применяемого базой данных в течение большей части времени. Тогда размер сегмента может динамически увеличиваться или уменьшаться до предела, установленного его начальным размером. Сегменты D1SM должны поддерживаться через область подкачки; если сегмент создан большего размера, чем это необходимо, то единственным расходом станет потраченное впустую дисковое пространство свопинга.

Процессы, присоединенные к сегментам D1SM, совместно используют структуры ядра для трансляции адресов точно так же, как это происходит с сегментами ISM. Память DFSM также блокируется, но эта блокировка выполняется приложением с помощью вызова mlock(3C), а не средствами операционной системы, как это имеет место для ISM. Поскольку блокировка выполняется приложением, то оно может заблокировать дополнительную память, когда сегмент должен увеличиваться в размере, и разблокировать ее, когда размер сегмента должен уменьшиться. Область подкачки должна иметь размер, достаточный для резервного копирования полного сегмента, так как память в данном случае автоматически не блокируется, поэтому DISM требует дополнительного дискового пространства подкачки по сравнению с ISM.

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

Во время написания этой книги сегменты DISM не могли воспользоваться поддержкой больших страниц памяти через MMU, поэтому при переходе от FSM к D1SM может быть зафиксировано некоторое снижение производительности. Снижение производительности будет небольшим для сегментов DISM размером до 4 Гбайт и будет постепенно нарастать по мере увеличения размера указанного сегмента. Это воздействие обычно может быть ослаблено путем добавления в случае необходимости большего количества ЦП. Для достижения максимальной производительности лучшим выбором является ISM, а для достижения максимальной гибкости в средах с высокими требованиями к работоспособности - DFSM.

Первым поставщиком систем баз данных, обеспечивающих поддержку DFSM, была корпорация Oracle с возможностью динамической SGA, реализованной в Oracle9i. Обратите внимание на то, что ранее для поддержки D1SM требовалось наложение заплат на операционную систему Solaris, но и для первого релиза Oracle9i (версия 9.0.1) также требуется заплата.

Менеджер, координирующий реконфигурации
Программа Ambassador
Оптимизация операционной системы Solaris для работы с базами данным
Планирование оптимизаций
Модификации диспетчерских таблиц

Добавить комментарий


Защитный код
Обновить