Попытка выжать максимальную производительность из 3PAR SAN с Qlogic HBA на наших серверах HP. Мы работаем на Centos 5.5 с последними обновлениями / ядром.
Может ли кто-нибудь дать полезные рекомендации или настройки для получения максимальных СЛУЧАЙНЫХ IOPS?
Сейчас мы находим около 290 случайных операций ввода-вывода в секунду и считаем, что это число должно быть намного выше.
Я работал над подобной настройкой, но в вашем вопросе отсутствует важная информация. Вот список вещей, на которые я бы посмотрел, чтобы выжать максимальную производительность из вашей установки.
В пути ввода-вывода блока есть несколько слоев, которые вы захотите рассмотреть отдельно. Мне нравится начинать снизу и продвигаться вверх по стеку.
В очень основные уровни от ОС до SAN следующие:
БИО -BLock IO Unit запрос отправлен из приложения. поскольку вы говорите о сервере БД, размер этого запроса, вероятно, будет несколько кратным размеру страницы, которую использует БД. (соберите некоторые данные iostat, чтобы узнать, каков средний размер запроса на устройство)
Устройство сопоставления / Multipath (/ dev / dm- *) -BIO отправлено на виртуальное устройство, созданное multipathd, если это то, что вы используете? -> Планировщик ввода-вывода на уровне виртуального устройства принимает решения на основе чтения или записи BIO и либо объединяет запрос в существующую очередь, либо добавляет запрос в новую очередь (здесь происходит больше логики, но это выходит за рамки этой области) -> Поскольку устройство управляется multipathd, решения по маршрутизации о том, как распределять BIO на нижележащие устройства, можно найти в /etc/multipathd.conf -> в этом файле конфигурации есть настраиваемые параметры, которые изменяют способ распределения модулей BIO по путям
Основные физические пути, составляющие виртуальное устройство / dev / sd * -> Как только BIO доставляются на эти базовые устройства -> здесь принимается больше решений в зависимости от параметров очереди -> BIO передаются на HBA
HBA -HBA (qlogic) имеет дроссель выполнения, который говорит, что карта может иметь x количество BIO в полете (на lun), прежде чем отклонять новые запросы
SAN -> Как только BIO передаются в SAN, вы теряете контроль над их очередью и принятием решений.
Поскольку вы спрашивали конкретно о своем HBA, я бы посмотрел на дроссель выполнения HBA и посмотрел, на что он установлен. Вы можете увидеть, достигли ли вы когда-либо максимума, следя за столбцом занятости:
cat /proc/scsi/sg/device_hdr /proc/scsi/sg/devices
Затем я бы начал с профилирования рабочей нагрузки вашей системы, собрав данные iostat и vmstat. Затем я бы попытался поиграть с параметрами multipath.conf, параметрами очереди sysfs, параметрами файловой системы и параметрами планировщика ввода-вывода, чтобы увидеть, приводят ли изменения на каждом из этих уровней к повышению производительности блочного ввода-вывода. Не забывайте вносить только одно изменение за раз и запускать не менее трех или около того тестов на каждое изменение при сборе данных.