Posts tagged ‘performance’

Оптимизация производительности. Часть 2. ??нструменты.

bitoniau: ??ногда на динамику автомобиля влияют не двигатель, трансмиссия и прочие умные штуки, а сгоревшая лампочка индикации затянутого ручника
bash.org.ru

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

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

Начните со статьи в этом блоге, а также детально просмотрите описание sysstat во встроенной документации, в частности в Data ONTAP Command Reference vol1 (должна быть в комплектной документации вашей системы).

С помощью вывода sysstat вы сможете “вчерне” оценить происходящее на системе, а также понять причины какого-то странного поведения. Например, высокая загрузка дисковой подсистемы по вводу-выводу, при отсутствии входного трафика с хостов, может говорить о идущем процессе дискового “скраббинга”, высокая нагрузка на CPU при этом – о возможно идущей активной фазе процесса дедупликации данных. Маленькая величина Cache Hit – о неэффективности использования кэша системы. Короткий Cache Age – о нехватке объемов кэша, вынуждающего постоянно его опустошать для новых данных. Характер сброса Consistency Points – о характере и объемах записываемых на систему данных.

Однако это, повторюсь, только черновые, общие признаки.

К более детальным диагностическим средствам следует отнести выводы команд statit и stats. Последняя является одним из самых детальных и подробных средств, к сожалению довольно слабо документированных и с визуально очень тяжело читаемым человеком выводом, ориентированным скорее на работу собственного техсаппорта NetApp, чем анализа силами конечного юзера. Для облегчения  использования вывода stats я уже публиковал в этом блоге неплохой набор скриптов на Perl, которые осуществляют разбор и вывод данных команды stats в “человекочитаемом” виде.

Но сперва подробнее рассмотрим, что мы можем извлечь с помощью sysstats и statit.

Допустим, мы наблюдаем вот такую картину на выводе sysstat: sysstat_out1.txt (поставьте моноширинный шрифт для просмотрщика данного файла, отключите переносы строки и расширьте окно, чтобы вся длинная строка вывода влезла).

Что вас должно насторожить?

Мы видим мультипротокольную систему (FAS3140A с двумя полками дисков SATA, обслуживающая roaming profiles (от 130 до 700MB размером) примерно 3000 (до 600 одновременно работающих) пользователей под Windows XP), загруженную, главным образом, чтениями  по CIFS (до полутора тысяч операций в секунду). Обратите внимание на сравнительно невысокую загрузку CPU и сравнительно высокий уровень Cache Hit (попадания запросов не на диск, а читающихся из кэша), но при этом странное поведение CP Time/CP ty, и, что самое важное, почти полную, около 90% загрузку дисковой подсистемы. Подозрительно при этом выглядят объемы операций, как видите, в основном это чтения, и при этом не превышающие 2500-4000 килобайт в секунду. При этом на той же системе периодически проскакивающие записи могут быть и до 20 мегабайт в секунду, то есть дело явно не в слабости дисковой части. Что-то не дает дискам “разогнаться”. Ограничивает производительностьявно не процессор или память, а именно непонятная, объективно ничем не вызванная перегрузка дисковой подсистемы, ограничившая трафик на уровне 4Mb/s с всей группы дисков.

Давайте посмотрим детальнее на картину на уровне физических дисков на выводе команды statit: statit-out1.txt

Мы видим, что aggregate наш состоит из двух RAID-групп -  rg0 и rg1, в кофигурации RAID-DP 11d+2p. Диски 0c.16, 1b.17 и 0c.29, 0c.33 – диски parity. Остальные – Data.

Что тут мы видим странного. Во-первых обратите внимание на величину использования дисков 0с.25, 26 и 28, по сравнению с остальными дисками data (для дисков parity действуют другие правила, на них пока не смотрите). При средней нагрузке по дискам группы в 35%, на этих дисках загрузка почти вдвое выше, около 75%. Также высока и величина latency, она почти втрое-вчетверо выше на этих дисках, достигая 60-70 миллисекунд, против 14-17 для остальных. В нормально же работающем aggregate нагрузка должна равномерно распределяться по всем дискам aggregate.

По видимому “больное место” мы обнаружили. Проблема – в этих трех дисках, именно их аномальное поведение и перегрузка, скорее всего, и является причиной проблем. Причин возникновения такого hotspot-а может быть несколько. Например это может быть неоптимальное расширение aggregate увеличением размеров RAID-групп, о чем я как-то уже писал, при этом наиболее активные данные могут оказаться на немногих добавленных дисках, и впоследствии, при обращении к этим данным, перегрузить их, либо это признак аппаратной неисправности, как диска, так и дискового интерфейса (например большое количество ошибок на FC-интерфейсе ухудшают его показатели по latency из-за retransmission).

??так, в соответствии с Top5, мы действительно нашли наш bottleneck в перегрузке какого-то отдельного диска (в данном случае сразу трех их), тормозящего всю подсистему.

Часто самые простые и “неромантичные” причины проблем являются и самыми частыми. Прежде чем вы начнете тюнинговать двигатель, подвеску и городить систему впрыска закиси азота, проверьте, не ездите ли вы с затянутым ручником :)

UPD: Когда этот пост уже был написан, пришло письмо с ответом на мой вопрос “чем же история закончилась?” от автора и администратора рассмотренной системы. В двух словах: Да, действительно, проблема была в этих трех дисках, они подняли кейс в поддержке, диски были заменены, и все заработало так, как должно было работать.

Оптимизация производительности. Часть 1.

Приходящим с opennet.ru по некорректно озаглавленной ссылке: эти статьи НЕ про оптимизацию произвдительности систем хранения в целом, а про специальные инструменты и средства оптимизации производительности конкретно систем NetApp FAS! Если у вас не NetApp FAS, то вам, кроме вот этой первой статьи, будет неинтересно!

С неделю уже закопался в материалы по оптимизации производительности систем хранения, причем не только NetApp, но, все же, главным образом. ?? решил подкинуть вам полезных сведений, тем более из опыта знаю, что множество админов систем хранения NetApp, увы, имеют, зачастую, самые базовые представления об диагностике и траблшутинге проблем производительности. ?? это при том, что, зачастую, системы хранения, даже в базовой поставке, не считая всяких мегакрутых штук типа DFM и Performance Advisor, имеют достаточно средств “загрузить” среднего админа мыслями.

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

  1. В первую очередь проверьте все уже известные проблемы (known issues) с софтом и оборудованием, которые часто перечисляют вендоры в документации и release notes. Вполне возможно, что ваша проблема с производительностью имеет хорошо известную причину и, соответственно, решение.
  2. Рассматривайте всю систему целиком. Не занимайтесь ускорением “на 5%” отдельно взятых подсистем ее, когда, возможно, куда большие “затыки” существуют на других участках. Выбирайте как цель оптимизации наиболее существеные в общей картине участки системы. Низкое быстродействие IT-системы в целом далеко не всегда вызвано только лишь невысокой производительностью хранилища базы данных.
  3. ??змеряйте и переконфигурируйте систему поэтапно.  Не пытайтесь объять необъятное и поменять сразу все. Разделите рассмотренную вцелом систему на компоненты, оцените вклад в производительность на каждом этапе, и улучшайте производительность постепенно, начиная с участков, дающих наибольший вклад.
  4. Делайте изменения в конфигурации по одному за раз. Если вы найдете причину и улучшите производительность системы, то, если изменений делалось много за раз, будет непросто найти что именно дало результат.
  5. Продумайте и распишите по шагам все процедуры изменений, и, что не менее важно, “путей отступления”, “отката” в исходное состояние в случае неудачи. ДО того, как вы начнете что-то менять!
  6. Не твикайте систему только ради того, чтобы потвикать! О-о… Даже и комментировать не стану :)
  7. Помните про “Закон убывающей доходности”. Начиная с какого-то этапа, каждая следующая ступенька относительного прироста производительности будет вам стоить все дороже и дороже.

Правильная настройка системы хранения, и системы в целом, куда входят сервера и ПО, зачастую может дать весьма серьезный результат прироста производительности. Так, например, в TR-3557 приводится вот такая картинка для результатов базы Oracle 10g на HP-UX, работающей по 10G Ethernet NFS, для настроек по умолчанию OS, и для правильных настроек:

image

Всегда ищите главное, наиболее существенное “бутылочное горло” системы, и начинайте оптимизацию именно с него.

По опыту Тома Гамильтона, Top5 таких “узких мест” для системы хранения это:

  1. “Затык” на уровне диска
  2. На уровне интерфейса к дискам FC-AL или SAS
  3. На уровне процессора контроллера или OS системы хранения
  4. “Потолок” сетевой карты или target-адаптера
  5. Проблемы настроек tread parallelism на клиенте

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

IOmeter – параметр Align I/Os

Я уже пару раз писал в этом блоге о чрезвычайно полезной программке IOmeter, предназначенной для нагрузочного тестирования и измерения производительности серверов, систем хранения и сети. К моему удивлению, эти две статьи приводят на мой скромный блог громное количство народу, так как, как оазалось, подробного описания использования IOmeter (а тем более на русском) в интернете просто нет. Программа же не вполне “интуитивно понятна”, и, зачастую, именно этим объясняется то, что такой замечательный, гибкий и удобный, и при этом абслютно бесплатный инструмент тестирования находится в определенном “загоне”.

Основная сложность с IOmeter заключается как раз в многочисленности и неочевидности его настроек, дающих ту самую гибкость, вдобавок нынешняя версия IOmeter приходит без каких-либо настроек по умолчанию. Я в предыдущей статье сделал попытку составить некий элементарный файл пресетов профилей нагрузок (“сервер баз данных OLTP”, “файл-сервер”, “веб-сервер”, и т.д.), который можно брать и пользоваться им в качестве основы для ваших тестирований. Однако многие параметры генерации нагрузки, и их смысл, все равно оставались для меня довольно туманными.

Недавно я пролистывал чрезвычайно полезный сам по себе блог Антонио Хосе Родригеса Нето, системного инженера бразильского отделения NetApp, специализрующегося на вопросах использования систем хранения NetApp и баз данных Oracle. В одном из постов я углядел любопытную рекомендацию относительно установки и использования параметра Align I/Os, которую обычно всегда оставлял по умолчанию. Этот параметр устанавливает смещение паттернов ввода-вывода, и значение по умолчанию его – 512 байт (sector boundary).

image

Neto справедливо указывает, что для современных систем хранения имеет смысл устанавливать его значение в 4096 байт, как более соответствующего структурам и нормам работы дискового хранилища, обычно располагающегося не на физическом диске как таковом, а на RAID-группе, имеющей более крупный размер элемента данных. В частности, в случае NetApp это блок WAFL, как раз и имеющий размер 4KB.

Кстати, по ссылке Neto демонстрирует тест FAS3140A на 96 дисках FC 300G 15K, при трех серверах load-generator под RedHat Linux, подключенных по 4Gb FC, и показывающего свыше 100K IOPS на нагрузке 4KB блоками и 100% random write. Очень впечатляющий результат.

Тесты производительности

Хорошо известно, что любимое занятие любого сисадмина есть мерянье пиписьками показателями производительности техники. С неистовой страстностью готов настоящий сисадмин меряться любыми “попугаями”, порождая на любом форуме многостраничные треды.
Не избежали такого поветрия и системы хранения.

Однако, для того, чтобы полученные результаты были сравнимы с результатами другой системы, следует тщательно разработать и последовательно использовать при измерении методику тестирования, ведь очевидно, что измерения в различных условиях дадут на выходе и несравниваемые результаты.
??менно по этой причине так важно использовать для тестирования общепринятый метод, адекватно отражающий практические условия использования. “Скорость копирования файла avi в тотал коммандере” мало что даст, например, для понимания того, что следует ожидать от системы, используемой для хранения OLTP-базы банных.

Я уже писал в свое время два поста о использовании для оценки проиводительности свободно распространяемой программы IOmeter, однако в мире “больших” систем использутся другие системы тестирования.

Так, NetApp официально использует для оценки производительности своих систем и публикует результаты для следующих тестовых пакетов:

Тест быстродействия сетевых файловых систем NFS  и CIFS (NAS): SPECmark’s SPEC SFS2008

Широко принятый и апробированный индустрией тестовый комплекс с большой историей, для имитации “приближенной к реальной жизни” нагрузки NAS-систем.

Storage Performance Counsil standard test (SPC-1, SPC-1/E)

Стандартный тест блочного (FC SAN) хранилища. Также, в соответствии с последними требованиями, разработан и тест оценки энергоэффективности системы хранения (SPC-1/E)

Microsoft ESRP (Exchange 2010 Solution Reviewed Program – Storage 3.0)

Не вполне “тест” (не позволяет валидное сравнение между различными вендорами, но широко поддержанный множеством производителей) тест “прикладного” уровня, с использованием MS Exchange 2007/2010, имитирующий использование системы для хранения почтовой базы MS Exchange.

Во всех этих тестах вы сможее найти системы NetApp, в том числе и самой новой, представленной в прошлом месяце серии FAS3200/FAS6200.

“Добро померяться” :)

na_stats – набор утилит для анализа производительности

Я уже писал, что лазая по пыльным закоулкам вебсайта NetApp порой находишь какой-нибудь пыльный ZIP, а в нем что-нибудь интересное, чего, может быть, и не ждал.

Вот, например, недавно обнаружил набор утилиток для снятия и реалтайм-контроля производительности системы, особенно полезной в том случае, когда у вас “на хозяйстве” ни DFM, ни Performance Advisor не имеется.

Утилитки написаны на Perl, и существуют в двух вариантах: для Linux в виде Perl-скрипта, и для Windows, в виде исполняемого файла (просто с уже вкомпилированным интерпретатором Perl, как я понял)

Утилита использует доступ через ssh или rsh к вашему файлеру и собирает вывод команды stats  консоли, отображая его в удобной, “человекочитаемой” форме.

В комплект утилит входят:

  • na_stats_viewer – выводит информацию о различных объектах команды stats, в удобной читаемой форме, пример фрагмента вывода утилиты на скриншоте.

image

  • na_diskstats_viewer – выводит статистику загрузки индивидуально по физическим дискам. Может быть полезна в поиске причин проблем произвдительности и ненормального поведения системы, например выявления hot spindles.

image

  • na_protostats_viewer – выводит статистику по протоколам (NFS, iSCSI, FC, CIFS)

image

Более подробное описание в приложенном к утилитам PDF.

Скачать можно тут: NA_STATS
??сточник на сайте NetApp: тут (для того, чтобы скачать с сайта, надо быть залогиненным)

MySQL 5.0 Performance Protocol Comparison

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

По результатам недавно опубликованного отчета о тестировании производительности работы базы данных MySQL 5.0.56 (InnoDB) на сервере HP DL580 G5 под RHEL4, с использованием трех протоколов доступа – FC, iSCSI и NFS, к системе хранения FAS3070 можно оценить эффективность использования передачи данных по этим трем протоколам.

MySQL 5.0 Performance Protocol Comparison

При тестировании использовался открытый тестовый пакет генерации нагрузки DBT-2 Rel.40 (Database Test Suite), генерировавший нагрузку профиля OLTP (16K random read/write в пропорции 57% read/43% write) для базы объемом 100GB. Больше подробностей можно узнать из приведенного документа. Также приведены подробные описания конфигов и использованных настроек всех компонентов.

Для затравки – один из измеренных результатов.

image

Тестировние показало, что использование iSCSI дало снижение всего на 9%, а NFS – всего на 16% относительно взятой за максимум производительности на FC. Результаты показывают, что широко распространившееся во времена MySQL 3.23 мнение, что NFS в базах MySQL непригоден для использования, уже не соответствует действительности. 
Любопытно, что того же мнения теперь придерживаются и “с той стороны баррикад”, в Sun/Oracle:
for MySQL on Linux over NFS, performance is great, right out of the box.

??нтересущимся рекомендую тщательно просмотреть отчет, там есть над чем подумать. Есть основания предполагать, что с более новым железом (все же FAS3070 это уже довольно старая система, c ONTAP 7.2.4) и с новым клиентским софтом (RHEL4, использовавшийся на хосте, имел ядро 2.6.9-42.EL.smp) разница может оказаться еще менее значительной.

Также интересующимся рекомендую обратить внимание на документы:

Linux (RHEL 4) 64-Bit Performance with NFS, iSCSI, and FCP Using an Oracle Database on NetApp Storage

Best Practices Guidelines for MySQL

Результаты тестирования FC и Software iSCSI под MS Hyper-V R2

Компания NetApp опубликовала результаты тестирования 4Gb FC и Software iSCSI по 1Gb Ethernet и 10Gb Ethernet в среде MS Hyper-V R2 с использованием своей системы хранения NetAp FAS3160A (система midrange-класса).

Тестирование производилось с помощью IOmeter (о котором я уже не раз писал в блоге), с 4 хост-серверов IBM x3550 (1x Quad-core Intel Xeon E5420, 2,5GHz), на каждом из которых бы установлен Windows 2008 R2 c Hyper-V role и 8 виртуальными машинами в каждом, с Windows 2008 64-bit Enterprise edition (итого 32 виртуальных машины). ??нтерфейсы каждого сервера: FC – QLogic QLE2462, Gigabit Ethernet – Intel PRO/1000 PT dual port, 10G Ethernet – Intel Ethernet Server Adapter X520, включались в коммутаторы Brocade 200E, Cisco 4948 Ethernet Switch и Fujitsu XG1200 соотвественно.
Особое внимание при тестировании уделялось получению результатов, приближенных к “боевым”, позволяющим использовать их для оценки реальной, “живой” инфраструктуры Hyper-V.

??спользовался паттерн: 100% Random, 75% Read, 4KB и 8KB Request size.

Тесты показали сравнительно незначительную разницу между всеми тремя вариантами (4Gb FC, 1Gb software iSCSI, 10Gb software iSCSI) как в IOPS, так и в Latency. Дополнительная загрузка задачи softwre iSCSI initiator составила 3-5 процентов, в том числе и на 512 outstanding IOs (очень высокая загрузка), и разница со значением загрузки при использовании FC уменьшалась с повышением объемов загрузки (Outstanding IOs).

Показательно почти полное отсутствие значимого отличия по быстродействию между 4Gb FC и 1Gb iSCSI на рассматриваемой задаче.
Отсутствие значительной разницы между 1Gb Ethernet и 10Gb Ethernet по видимому связано с тем, что Software iSCSI initiator на 10G Ethernet перестал быть эффективен, и, возможно, следует рассмотреть использование iSCSI HBA для таких высокоскоростных решений.
Также сравнительно небольшую разницу дает включение и использование Jumbo Frames как на 1G Ethernet, так и на 10G Ethernet, что скорее всего говорит о специфике Hyper-V R2 в этом вопросе.

Лимит по производительности системы хранения FAS3160A для такой конфигурации не был достигнут.

Подробности и полный документ по результатам –тут:
http://www.netapp.com/us/library/technical-reports/tr-3846.html

Тестирование FCoE и iSCSI на FAS3170

Компания Demartek, совместно с NetApp провела измерения производительности системы FAS3170, и опубликовала результаты в виде отчета.
??змерялся FCoE и iSCSI по 10G Ethernet.

Не бог весть какое тестирование с точки зрения методологии и всякого хайэнда, но почитать для общего образования может быть интересно.
http://www.netapp.com/us/library/research-papers/rp-unified-networking-evaluation.html

Отметьте, в документе авторы отчего-то называют парметр IOmeter - “# of outstanding IOs” как “queue depth”, кривые на графиках вызваны изменением его значения от 4 до 48 с шагом 4, для каждого из измерямых размеров блока.

Во что обходится производительность: NetApp и EMC

На днях EMC выкатило на тесты SPECmark (тесты производительности NAS enterprise-уровня), впервые с 2007 года, свой “суперболид” на базе симметрикса и “всех порвала!!!11″.
Впрочем, как выяснилось довольно скоро, не то чтобы совсем порвала, а так, понадрывала по краю ;)
По этому поводу блоггеры NetApp вовсю ехидничают.
Судите сами:
EMC Symmetrix V-MAX, 4x V-engines, 264GB cache total
96 штук 400GB EFD flash drives (это EMC-шные SSD) в двух RAID-1
3 штуки (2 active + 1 passive) Celerra NS-G8 Datamovers в качестве NAS Gateway, 8GB cache в каждой.
24-портовый коммутатор FC, чтобы всю эту кухню пересоединять между собой
Наддув, впрыскивание закиси азота, ксеноновые фары и брызговики Sparco.

?? все это счастье сисадмина, стоимостью не менее чем 6 миллионов долларов в ценах американского лиспрайса набирает аж 110621 спекмарковских попугаев по SPECsfs2008 в NFS (и 118463 в CIFS, которые никто почти и не меряет из участников).

Круто типа.
Но при этом еще в прошлом году NetApp публиковал результаты FAS6080, с ценой проекта едва ли вполовину EMC-шной, на обычных дисках (не SSD), и даже без Performance Accelerator, показавшей 120011 спекмарковских попугаев.
А результат в районе 60 тысяч, то есть вполовину EMC-шного “устройства для завоевания превосходства в датацентре” показывает довольно таки средненькая midrange FAS3160, причем при использовании PAM делает она это на всего лишь 96 дисках SATA (!)

Я уж не говорю, что по абсолютной величине их обгоняет, например система производства Huawei Symantec ;)

Материалы по теме:
Все опубликованные результаты SPECsfs2008
Ник Триантос: “Как потратить побольше, а получить поменьше”
Вон Стюарт: “Бенчмаркинг-жульничество*”
* “Жульничество”(Shenanigans) - один из любимых терминов Чака Холлиса, блоггера EMC, обычно в отношении NetApp.
Комменты к обоим вышеприведенным постам не только доставляют, но и служат интересными источниками подробностей, рекомендую.

Производительность iSCSI на 10G Ethernet

В блогах MSDN найден любопытный документ тестирования iSCSI на 10G Ethernet, с использованием MS Windows Server 2008, Hyper-V, и системы хранения NetApp FAS3070.
Даже несмотря на то, что использовался довольно старенький сторадж (3070 это топовая модель предыдущей midrange-линейки, в настоящий момент уже не выпускаемая, вся серия 3000 уже целиком заменена на 3100), и чисто “софтверный” iSCSI, результаты могут показаться любопытными тем, кто еще раздумывает “А насколько быстр на самом деле этот непонятный iSCSI?”

http://download.microsoft.com/download/F/B/3/FB38CA2C-6694-4D25-8452-4A28668A87F2/MSFT-NetApp-10G.docx

Следует отметить, что карты 10G Ethernet, например рассматриваемая в этом тестировании двупортовая Intel 10 Gigabit AF DA dual port Server Adapter по ценам Price.ru стоит ~770$, а вообще 10G адаптеры начинаются уже от 500$.