Sun Solaris - это, наверное, самая широко используемая операционная система для серверов Интернета. К моменту создания книги Oracle использовал ее для написания программного обеспечения своей базы данных. Мы выделяем Sun Solaris из всех операционных систем, с которыми нам пришлось работать, за ее простоту использования, богатый набор команд и доступные инструментальные средства. Обычно все новые выпуски программного обеспечения Oracle
в первую очередь становятся доступными на платформе Solaris. Только что обнаруженным ошибкам требуются патчи, и в первую очередь они появляются на Solaris (если это возможно). Другие операционные системы обычно получают
исправленные (patched-up) версии программного обеспечения Oracle, которое
затем портируется. В нем обычно наблюдается меньше сбоев, потому что основные проблемы ко времени портирования уже зафиксированы и исправлены.
В среде Solaris необходимо ознакомиться с командами vmstat, sar, iostat, swap и mpstat. Найдите по соответствующим руководствам их основные ключи и те выходные данные, которые они генерируют. В разделе "Идентифицируйте
текущие узкие места ОС" главы "Метод, стоящий за безумием" обсуждаются
команды sar и vmstat. Команда swap сообщает о текущей деятельности по подкачке страниц, a mpstat - о статистике для каждого из процессоров. Эти команды могут оказать помощь при проверке производительности системы и идентификации возможностей настройки ОС. Еще одна команда - truss - отслеживает системные вызовы (внутренние команды ОС для команд пользователей). Это очень мощная команда для выяснения, что же делает Oracle при обслуживании запрошенных пользователем команд или операций, например
запросов ввода/вывода или любых из перечисленных выше команд. Мы особо
отмечаем эту команду, потому что она временно недоступна в других операционных системах в таком же легком для применения формате. Сопоставимые команды могут существовать, но так как АБД не является пользователем root, он ограничен в том, что ему позволено увидеть. Как АБД ему может оказаться необходимо использовать эту команду для определения тех немногих операций, которые не могут объяснить свое поведение. Кроме того, команда sysdef покажет все текущие значения параметров ядра, a dmesg позволит увидеть такие характеристики аппаратуры, как количество ЦП, тактовая частота, количество конфигурированной памяти и т. д. В следующем разделе рассматриваются некоторые
основные конфигурации и направления настройки для Solaris.
Асинхронный ввод/вывод
Асинхронный ввод/вывод, как это следует из названия, это метод выполнения ввода/вывода неблокированным способом, так, чтобы процессы не ждали завершения операции ввода/вывода (это особенно справедливо для операций записи). При успешном завершении, к примеру, операции записи, ОС возвращает приложению (в нашем случае - Oracle) статус или флаг "ввод/вывод закончен". Преимущества такого подхода заключается в том, что Oracle не требуется ожидать завершения операции записи на запоминающем устройстве.
В ОС Solaris асинхронный ввод/вывод реализуется двумя способами: с использованием библиотек пользователя (подход на базе потоков) и внутри ядра. Это верно для версий ОС, начиная с Solaris 2.3. В Solaris 2.4 и более поздних версиях поддержка асинхронного ввода/вывода в ядре (КАЮ, kernel asynchronous I/O) сделана доступной непосредственно в ядре. Здесь необходимо отметить,
что КАЮ в Solaris поддерживается только для сырых (raw) устройств и файлов Quick I/O фирмы Veritas, а не для нормальных файловых систем. Однако асинхронный ввод/вывод с использованием библиотек пользователей (потоков)
поддерживается и для файловых систем. Для активизации асинхронного ввода/вывода нужно установить на TRUE параметр инициализации Oracle DISK_ASYNNCH_IO. Обычной практикой является использование либо асинхронного ввода/вывода, либо нескольких программ записи базы данных. Таким образом, число процессов записи базы данных при использовании асинхронного ввода/вывода должно быть установлено равным
Замечание
Применяя асинхронный ввод/выводдля нормальных файловых систем, можно обнаружить ошибки КАЮ, причем будет казаться, что вызовы асинхронного ввода/вывода закончились неудачей. Но за кулисами API библиотек пользователя распределит и использует пул потоков для выполнения ввода/вывода асинхронным образом. Закончившиеся неудачей КАЮ вызывают сигналы условной переменной, проверяемой одним из потоков, которые затем выполняют системные вызовы ввода/вывода, чтобы произвести асинхронный ввод/вывод. Это в лучшем случае может быть названо фиктивным асинхронным вводом/выводом для нормальных файловых систем. По словам источников в Sun Microsystems, это характеристика, а не ошибка и она потенциально устраняет системный вывод, если устройство поддерживает КАЮ. Однако мы все еще верим, что у реализации остается пространство для маневра.
< Предыдущая | Следующая > |
---|