IOMeter2 v1.1.0

    Совершенно неожиданно для меня вышла стабильная версия мультиплатформенного гнератора синтетической нагрузки IOMeter2 v1.1.0. IOMeter часто применяют для тестов дисковой подсистемы, хотя он также может генерировать нагрузку на сеть. Интерфейс совершенно не притерпел изменений. В предыдущей статье я тестировал СХД NetApp FAS подключённый по FC4 к хосту на стабильной версии IOMeter2 2008-06-22-rc2.

    При нагрузочном тестировании не забывайте, что нужно оптимально настроить цепочку:
    СХД -> Сеть (Ethernet / FC) -> Хост ( Windows / Linux / VMware ESXi ) -> Приложение.
    Чтобы получить наилучшие результаты как в синтетически тестах, так и на реальных данных. Одного сервера может оказаться не достаточно чтобы нагрузить СХД.

    Из важных нововведений:
    • Поддержка Windows UAC.
    • Пофикшен Windows Disk detection, позволяющий работать с новыми дисками. Диск с таблицей разделов GPT в качестве блочного устройства по-прежнему не поддерживается.
    • Data randomization — появилось три варианта, сильно отличающихся генерируемым патерном случайности.
    • К сожалению не все старые версии конфигов совместимы с новой версией IOMeter2, привожу патерны нагрузки для новой версии чуть ниже.



    Для Outstanding I/O максимальное значение может быть 256, тогда как 128 означает высокую нагрузку схожую с высоконагруженными БД.


    Устанавливаем максимальный размер тестового файла «Maximum Disk Size» (0 означает все свободное пространство на диске), значение задаётся в секторах, к примеру 20971520 сектора (где один сектор равен 512 Byte, так 20971520 секторов дадут 10 GByte). И задаём патерн нагрузки в поле «Write IO Data Patern». Стоит отметить, что IOMeter умеет работать с блочным устройством (т.е. без файловой системы) для которого создана таблицей разделов MBR, так и «поверх» файловой системы на диске. В случае запуска теста «поверх» файловой системы, IOMeter'у необходимо создать тестовый файл, что может занимать существенное время и зависит от значения «Maximum Disk Size». При работе с блочным устройством «напрямую», создание тестового файла не требуется, IOMeter немедленно запускает тест.

    Патерны нагрузки


    Все патерны: сервера БД, Web сервера, VDI и сервера виртуализации, для IOMeter в спойлере ниже. Запустите текстовый редактор и сохраните содержимое спойлера, в файл с расширением icf.

    iometer_v110_4k_ALL.icf
    Version 1.1.0
    'ACCESS SPECIFICATIONS =========================================================
    'Access specification name,default assignment
    Default,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,67,100,0,1,4096,0
    'Access specification name,default assignment
    4 KiB; 100% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,100,0,0,1,4096,0
    'Access specification name,default assignment
    4 KiB; 75% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,75,0,0,1,4096,0
    'Access specification name,default assignment
    4 KiB; 50% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,50,0,0,1,4096,0
    'Access specification name,default assignment
    4 KiB; 25% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,25,0,0,1,4096,0
    'Access specification name,default assignment
    4 KiB; 0% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,0,0,0,1,4096,0
    'Access specification name,default assignment
    4 KiB aligned; 100% Read; 100% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,100,100,0,1,4096,0
    'Access specification name,default assignment
    4 KiB aligned; 50% Read; 100% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,50,100,0,1,4096,0
    'Access specification name,default assignment
    4 KiB aligned; 0% Read; 100% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,0,100,0,1,4096,0
    'Access specification name,default assignment
    16 KiB; 100% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    16384,100,100,0,0,1,4096,0
    'Access specification name,default assignment
    16 KiB; 75% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    16384,100,75,0,0,1,4096,0
    'Access specification name,default assignment
    16 KiB; 50% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    16384,100,50,0,0,1,4096,0
    'Access specification name,default assignment
    16 KiB; 25% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    16384,100,25,0,0,1,4096,0
    'Access specification name,default assignment
    16 KiB; 0% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    16384,100,0,0,0,1,4096,0
    'Access specification name,default assignment
    32 KiB; 100% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    32768,100,100,0,0,1,4096,0
    'Access specification name,default assignment
    32 KiB; 75% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    32768,100,75,0,0,1,4096,0
    'Access specification name,default assignment
    32 KiB; 50% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    32768,100,50,0,0,1,4096,0
    'Access specification name,default assignment
    32 KiB; 25% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    32768,100,25,0,0,1,4096,0
    'Access specification name,default assignment
    32 KiB; 0% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    32768,100,0,0,0,1,4096,0
    'Access specification name,default assignment
    64 KiB; 100% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    65536,100,100,0,0,1,4096,0
    'Access specification name,default assignment
    64 KiB; 50% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    65536,100,50,0,0,1,4096,0
    'Access specification name,default assignment
    64 KiB; 0% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    65536,100,0,0,0,1,4096,0
    'Access specification name,default assignment
    256 KiB; 100% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    262144,100,100,0,0,1,4096,0
    'Access specification name,default assignment
    256 KiB; 50% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    262144,100,50,0,0,1,4096,0
    'Access specification name,default assignment
    256 KiB; 0% Read; 0% random,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    262144,100,0,0,0,1,4096,0
    'Access specification name,default assignment
    All in one,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,5,100,0,0,1,4096,0
    4096,5,75,0,0,1,4096,0
    4096,5,50,0,0,1,4096,0
    4096,5,25,0,0,1,4096,0
    4096,5,0,0,0,1,4096,0
    4096,5,100,100,0,1,4096,0
    4096,5,50,100,0,1,4096,0
    4096,5,0,100,0,1,4096,0
    16384,4,100,0,0,1,4096,0
    16384,4,75,0,0,1,4096,0
    16384,4,50,0,0,1,4096,0
    16384,4,25,0,0,1,4096,0
    16384,4,0,0,0,1,4096,0
    32768,4,100,0,0,1,4096,0
    32768,4,75,0,0,1,4096,0
    32768,4,50,0,0,1,4096,0
    32768,4,25,0,0,1,4096,0
    32768,4,0,0,0,1,4096,0
    65536,4,100,0,0,1,4096,0
    65536,4,50,0,0,1,4096,0
    65536,3,0,0,0,1,4096,0
    262144,3,100,0,0,1,4096,0
    262144,3,50,0,0,1,4096,0
    262144,3,0,0,0,1,4096,0
    'Access specification name,default assignment
    Database pattern,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    8192,100,67,100,0,1,4096,0
    'Access specification name,default assignment
    Fileserver pattern (Intel),NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    512,10,80,100,0,1,4096,0
    1024,5,80,100,0,1,4096,0
    2048,5,80,100,0,1,4096,0
    4096,60,80,100,0,1,4096,0
    8192,2,80,100,0,1,4096,0
    16384,4,80,100,0,1,4096,0
    32768,4,80,100,0,1,4096,0
    65536,10,80,100,0,1,4096,0
    'Access specification name,default assignment
    Workstation pattern (StorageReview.com),NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    8192,100,80,80,0,1,8192,0
    'Access specification name,default assignment
    Webserver pattern (unknown),NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    512,22,100,100,0,1,4096,0
    1024,15,100,100,0,1,4096,0
    2048,8,100,100,0,1,4096,0
    4096,23,100,100,0,1,4096,0
    8192,15,100,100,0,1,4096,0
    16384,2,100,100,0,1,4096,0
    32768,6,100,100,0,1,4096,0
    66560,7,100,100,0,1,4096,0
    131072,1,100,100,0,1,4096,0
    524288,1,100,100,0,1,4096,0
    'Access specification name,default assignment
    VDI,NONE
    'size,% of size,% reads,% random,delay,burst,align,reply
    4096,100,20,80,0,1,4096,0
    'END access specifications
    'MANAGER LIST ==================================================================
    'Manager ID, manager name
    1,NetApp
    'Manager network address

    'End manager
    'END manager list
    Version 1.1.0



    Пример настройки патерна синтетической нагрузки для БД

    • Transfer Request Size: 8КB
    • Percent Read/Write Distribution: 67% read / 33% write
    • Percent Random/Sequential Distribution: 100% random
    • Align I/O on: всегда должен быть 4КB
    • Outstanding I/O: 128


    Align I/O on всегда должен быть 4К, как наиболее подходящий в случае с современными ОС и СХД. Так для Windows начиная с NT 4.0 для NTFS минимальное значение кластера 4KB, для EXT3/EXT4 на x86 платформе, размер блока по-умолчанию, часто, 4KB. Диски SATA работают с 4KB блоками информации. Размер блока для БД c нагрузкой OLTP, как правило рекомендуется устанавливать в значение от 2KB до 8KB, а для смешанных и DSS нагрузок рекомендуемое значение блока обычно выше (8 KB, 16 KB, or 32 KB). VMware VMFS-5 использует размер блока 1MB и sub-blocks в размере 8KB. Подробнее про настройки IOMeter. VMware VMFS-6 (начиная с vSphere 6.5) использует размер сектора 4К с эмуляцией 512 байт (512е).
    Всё вышенаписанное отниситься и к Transfer request size: нет смысла его делать меньше 4КБ.

    Другие генераторы нагрузки

    sio
    fio
    Oracle Orion
    MS SQLIO Disk Subsystem Benchmark Tool
    IOZone
    ATTO Disk Benchmark
    Intel NASPT — последовательные операции чтения/записи для NAS

    Сообщения по ошибкам в тексте прошу направлять в ЛС.
    Замечания и дополнения напротив прошу в комментарии
    Share post

    Comments 6

      +1
      Хороший бенчмарк, жаль так и не сделали для линукса нативный GUI
        0
        IOMeter разбит на две части: собственно сам генератор нагрузки (Dinamo) и GUI интерфейс, которые могут связываться по сети. Так что можно генерировать нагрузку на линукс машине, а смотреть на винде. Или попробовать запустить GUI под Vine.
          +1
          На практике сталкивался с тем, что при тестировании современных СХД при помощи IOMETR и использовании LUN как блочного устройства без создания на нем FS, получаешь совершенно непредсказуемые результаты. Если же все таки не лениться и создавать FS и тестовый файл на ней, то результаты обычно ближе к действительности и коррелируют с предварительными теоретическими расчетами.

          Я думаю свой эффект накладывают современные технологии кэширования на стороне СХД. И при «чистой» эмуляции I/O СХД стоит и ничего не делает, так как каким то образом понимает, что на самом деле никаких запросов к несуществующим данным не происходит. Может быть существует более правильное и научное объяснение данного эффекта, но к сожалению я его для себя не нашел.
            0
            Я встречал, когда на Windows 2008 без FS получалось лучше производительность.
            Хотя тестить без FS, наверное, действительно мало смысла, ведь в конечном счёте она там всё-равно будет.

            Просто нужно отдавать отчёт, что в некоторых ОС можно иметь много разных типов FS и каждая из них может давать свою кореляцию. Даже одна и таже FS, но разных версий (реализаций) может работать «лучше» или «хуже» и об этом нужно не забывать.
              +1
              Про различные версии FS с вами полностью согласен, но в таком случае имеет смысл проводить несколько тестов с интересующими FS. Кроме того, могу дополнить. Если взять тот же LInux, то там, в зависимости от профиля нагрузки, очень сильно на результат влияет выбранный IO sheduller (noop, anticipatory, deadline, cfq). И не всегда дефолтный [cfq] бывает оптимальным выбором :).
                0
                да, в современных СХД, как правило «noop» более предпочтителен.

          Only users with full accounts can post comments. Log in, please.