Точное отслеживание производительности случайных операций ввода-вывода для планирования емкости


11

Там, где я работаю, у нас есть многочисленные «железные» серверы, которые используются для размещения множества виртуальных машин с использованием гипервизора Xen. Они обычно конфигурируются с 32 ГБ ОЗУ, процессорами с двумя ядрами и быстрыми дисками с объемами ввода-вывода.

Мы находимся в тот момент, когда существующая аппаратная конфигурация становится немного длиннее, и пришло время выходить на рынок и получать более крупные, быстрые и блестящие новые аппаратные средства.

Как уже упоминалось выше, существующий комплект был развернут с 32 ГБ ОЗУ, и это фактически ограничило количество виртуальных машин, которые мы можем развернуть на хосте.

Тем не менее, при исследовании нового оборудования становится очевидным, что вы можете получить все больше и больше оперативной памяти на одной машине с 64, 72 или даже 96 ГБ в одном шасси. Очевидно, это позволит нам получить больше машин для данного хоста, что всегда является победой. Проведенный до настоящего времени анализ показывает, что ограничивающий фактор теперь будет перенесен на дисковую подсистему.

Проблема сейчас в том, чтобы попытаться получить представление о том, где мы находимся ... Благодаря использованию мы знаем, что мы не ограничены с точки зрения пропускной способности ввода-вывода, тем более, количества случайных I Операции ввода / вывода, которые могут быть завершены. Мы знаем по анекдотическим причинам, что, как только мы достигнем этой точки, iowait перейдет к небесной ракете, и вся машина будет работать на собаках.

Теперь это суть вопроса, который я задаю. Кто-нибудь знает способ точного отслеживания / отслеживания существующей производительности ввода-вывода, в частности, в зависимости от количества выполняемых случайных операций ввода-вывода?

На самом деле я пытаюсь получить показатель: «эта конфигурация может успешно обрабатывать X количество случайных запросов ввода / вывода, и в настоящее время мы (в среднем) выполняем операции Y с пиком Z операций».

Заранее спасибо!

Ответы:


5

sarхорошо выполняет работу здесь; он будет собирать количество транзакций, а также число секторов, считываемых / записываемых в секунду, которые можно использовать для последующего воспроизведения рабочей нагрузки ввода-вывода с относительно приличной точностью (с точки зрения коэффициентов чтения / записи, а также размера транзакции, которая является определяющим фактором того, насколько «случайным» является ваш IO). Он не идеален, но, по моему опыту, он достаточно хорошо справляется с оценкой, на которую вы смотрите.


2

Таким образом, это похоже на проблему мониторинга и отчетности по емкости. Если вы собираетесь начать измерять статистику трендов, я бы пошел по всем направлениям, чтобы вы могли сравнивать, сопоставлять и т. Д.

Что касается инструментов, у вас есть ganglia, zenoss, nagios и т. Д. В мире открытых ресурсов, а также множество других продуктов вендоров.

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

Учитывая ваши запросы на использование ОЗУ, имеет смысл включить статистику памяти, использование подкачки и ЦП, чтобы вы могли сравнить их по всем параметрам за тот же период времени и посмотреть, какие из них ограничены и т. Д.

После того, как вы захватываете данные, вы можете хранить все это в хорошей большой БД для отчетов, возможно, рафинирующих исторических данных, например. сохраняйте каждые 5 секунд метрики в течение 6 месяцев, затем по минутам, затем по 5, затем по часам, по мере продвижения назад. Подобные вещи могут быть написаны на скриптах и ​​запускаться через cron, autosys и т. Д.

Эти отчеты дадут вам то, что руководство хочет - т.е. что-то с красивыми графиками.

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


Спасибо за ваш ответ. Самая большая проблема, которую я нахожу, - это точное отслеживание количества операций. То есть, все, с чем я сталкивался, сообщает о количестве перемещаемых данных, или о количестве iowait и т. Д. И т. Д. Это, кажется, не совсем подходит здесь
Кейран Холлоуэй

2

Мы используем collectl, так как можем собрать всю необходимую информацию в один файл и воспроизвести статистику при необходимости. Это позволит вам увидеть количество IOPS за интервал записи, переключение контекста, статистику памяти. Вы можете разбить это на диск или просто взглянуть на систему в целом. Collectl также поддерживает блеск.

Это отличный инструмент для обзора общей производительности системы. Удачи, по наблюдениям, SATA-диски обычно достигают 200-300 IOPS при произвольном доступе.


У кого-нибудь был большой опыт работы с дисками SAS 15K RPM?
Кейран Холлоуэй

2

Мы записываем и отображаем дисковый ввод-вывод точно так же, как и все остальные показатели:

  • Данные извлекаются из хостов с использованием SNMP. Наши NAS / SAN-боксы делают это изначально. Мы используем net-snmp на всех хостах Linux, который предоставляет эту информацию от USB-DISKIO-MIB .

  • Данные хранятся (в формате RRD) и отображаются с использованием Cacti . Некоторые шаблоны дискового ввода-вывода дают нам количество и размер транзакции, отображаемые в обычном текущем, среднем и пиковом формате.

Эти метрики не обязательно так же ограничены, как использование iostat/ dstat/ sarна хосте. Но это запуск и забывание, которое настраивается автоматически при вводе в эксплуатацию новой машины, хранится централизованно и остается доступным для дальнейшего использования.

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

На самом деле я пытаюсь получить метрику: «эта конфигурация может успешно обработать Х число случайных запросов ввода-вывода [..]».

Есть несколько проблем с этим:

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

  • Запись метрик даст вам очень хорошее представление о том, каковы ваши обязательства сегодня, как они меняются со временем и, следовательно, как они изменятся в будущем. То, что он не скажет вам, что потолок. По крайней мере, пока не стало слишком поздно. Чтобы определить это, вам нужно выполнить некоторые математические bonnie++расчеты (исходя из спецификаций вашего оборудования), провести бенчмаркинг (мне это нравится ), и полезно иметь некоторое логистическое представление о том, для чего эти домики используются / используются.


1

В зависимости от вашего внутреннего хранилища (IBM SVC / DS8000) вы можете напрямую получать статистику, относящуюся к случайным IOPS.

Для получения статистики с сервера вы можете использовать nmon . Это бесплатно (как в пиве). Первоначально разработанный IBM для AIX, также работает на Linux.


Все хранилище напрямую подключено, работает на хостах Debian. Все, что FOSS это хорошо.
Кейран Холлоуэй

1

Если люди используют SAR, я, по крайней мере, надеюсь, что вы будете отбирать данные каждые несколько секунд. Когда я использую коллекцию, я пробую один раз в секунду. Что касается измерения того, насколько хорошо вы делаете при случайном вводе / выводе, используйте такой инструмент, как dt Робина Миллера (google it), и вы можете легко сгенерировать МНОГО случайных операций ввода / вывода, а затем просто измерить с помощью collectl, чтобы увидеть, сколько вы может сделать в секунду. Типичный диск обычно делает максимум 200-300 операций ввода-вывода / сек, в значительной степени основанных на задержке вращения. Размер блока имел минимальный эффект, так как ожидание 1/2 оборота, чтобы диск оказался в нужном месте, подавляет все остальное.

Кстати, iowait является одним из самых неправильно понятых измерений. Он не имеет никакого отношения к загрузке процессора, это просто означает, что процессор ничего не делал во время ввода-вывода. На самом деле, если вы на 100% айовайт, это означает, что вы на 100% простаиваете!

-отметка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.