Там, где я работаю, у нас есть многочисленные «железные» серверы, которые используются для размещения множества виртуальных машин с использованием гипервизора Xen. Они обычно конфигурируются с 32 ГБ ОЗУ, процессорами с двумя ядрами и быстрыми дисками с объемами ввода-вывода.
Мы находимся в тот момент, когда существующая аппаратная конфигурация становится немного длиннее, и пришло время выходить на рынок и получать более крупные, быстрые и блестящие новые аппаратные средства.
Как уже упоминалось выше, существующий комплект был развернут с 32 ГБ ОЗУ, и это фактически ограничило количество виртуальных машин, которые мы можем развернуть на хосте.
Тем не менее, при исследовании нового оборудования становится очевидным, что вы можете получить все больше и больше оперативной памяти на одной машине с 64, 72 или даже 96 ГБ в одном шасси. Очевидно, это позволит нам получить больше машин для данного хоста, что всегда является победой. Проведенный до настоящего времени анализ показывает, что ограничивающий фактор теперь будет перенесен на дисковую подсистему.
Проблема сейчас в том, чтобы попытаться получить представление о том, где мы находимся ... Благодаря использованию мы знаем, что мы не ограничены с точки зрения пропускной способности ввода-вывода, тем более, количества случайных I Операции ввода / вывода, которые могут быть завершены. Мы знаем по анекдотическим причинам, что, как только мы достигнем этой точки, iowait перейдет к небесной ракете, и вся машина будет работать на собаках.
Теперь это суть вопроса, который я задаю. Кто-нибудь знает способ точного отслеживания / отслеживания существующей производительности ввода-вывода, в частности, в зависимости от количества выполняемых случайных операций ввода-вывода?
На самом деле я пытаюсь получить показатель: «эта конфигурация может успешно обрабатывать X количество случайных запросов ввода / вывода, и в настоящее время мы (в среднем) выполняем операции Y с пиком Z операций».
Заранее спасибо!
источник
Мы используем collectl, так как можем собрать всю необходимую информацию в один файл и воспроизвести статистику при необходимости. Это позволит вам увидеть количество IOPS за интервал записи, переключение контекста, статистику памяти. Вы можете разбить это на диск или просто взглянуть на систему в целом. Collectl также поддерживает блеск.
Это отличный инструмент для обзора общей производительности системы. Удачи, по наблюдениям, SATA-диски обычно достигают 200-300 IOPS при произвольном доступе.
источник
Мы записываем и отображаем дисковый ввод-вывод точно так же, как и все остальные показатели:
Данные извлекаются из хостов с использованием SNMP. Наши NAS / SAN-боксы делают это изначально. Мы используем net-snmp на всех хостах Linux, который предоставляет эту информацию от USB-DISKIO-MIB .
Данные хранятся (в формате RRD) и отображаются с использованием Cacti . Некоторые шаблоны дискового ввода-вывода дают нам количество и размер транзакции, отображаемые в обычном текущем, среднем и пиковом формате.
Эти метрики не обязательно так же ограничены, как использование
iostat
/dstat
/sar
на хосте. Но это запуск и забывание, которое настраивается автоматически при вводе в эксплуатацию новой машины, хранится централизованно и остается доступным для дальнейшего использования.Мы используем эти данные, чтобы предупреждать нас о необычных тенденциях на оперативной основе и всегда оглядываться на них при выполнении планирования загрузки.
Есть несколько проблем с этим:
Довольно сложно отделить и количественно оценить случайный ввод-вывод от последовательного ввода-вывода. Поскольку принципиальное различие между ними заключается в физическом расположении блоков, хранящихся на диске. Вы можете сделать обоснованное предположение о размере транзакций, исходя из того, что множество мелких транзакций, вероятно, относится к маленьким файлам, разбросанным по всему диску. Но нет никаких гарантий. Это может быть последовательное чтение небольших объемов данных из одного файла или смежных блоков на диске.
Запись метрик даст вам очень хорошее представление о том, каковы ваши обязательства сегодня, как они меняются со временем и, следовательно, как они изменятся в будущем. То, что он не скажет вам, что потолок. По крайней мере, пока не стало слишком поздно. Чтобы определить это, вам нужно выполнить некоторые математические
bonnie++
расчеты (исходя из спецификаций вашего оборудования), провести бенчмаркинг (мне это нравится ), и полезно иметь некоторое логистическое представление о том, для чего эти домики используются / используются.источник
В зависимости от вашего внутреннего хранилища (IBM SVC / DS8000) вы можете напрямую получать статистику, относящуюся к случайным IOPS.
Для получения статистики с сервера вы можете использовать nmon . Это бесплатно (как в пиве). Первоначально разработанный IBM для AIX, также работает на Linux.
источник
Если люди используют SAR, я, по крайней мере, надеюсь, что вы будете отбирать данные каждые несколько секунд. Когда я использую коллекцию, я пробую один раз в секунду. Что касается измерения того, насколько хорошо вы делаете при случайном вводе / выводе, используйте такой инструмент, как dt Робина Миллера (google it), и вы можете легко сгенерировать МНОГО случайных операций ввода / вывода, а затем просто измерить с помощью collectl, чтобы увидеть, сколько вы может сделать в секунду. Типичный диск обычно делает максимум 200-300 операций ввода-вывода / сек, в значительной степени основанных на задержке вращения. Размер блока имел минимальный эффект, так как ожидание 1/2 оборота, чтобы диск оказался в нужном месте, подавляет все остальное.
Кстати, iowait является одним из самых неправильно понятых измерений. Он не имеет никакого отношения к загрузке процессора, это просто означает, что процессор ничего не делал во время ввода-вывода. На самом деле, если вы на 100% айовайт, это означает, что вы на 100% простаиваете!
-отметка
источник