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

Как проверить производительность ввода-вывода в Linux?

8 ответов

Тестирование ввода-вывода и файловой системы - сложная тема. Ни один инструмент тестирования не подходит во всех ситуациях. Вот небольшой обзор о различных инструментах бенчмаркинга:

Блок хранения:

  • IOMeter - очень настраиваемый и позволяет координировать несколько клиентов. Требуется ПК с Windows для координации приложения. Разработано Intel. В Linux возьмите максимальные показатели более старых (по крайней мере, 2006.07.27 и более ранних) с долей соли, потому что метод представления не был оптимальным.

Файловая система (синтетическая):

  • FFSB - тест гибкой файловой системы. Очень аккуратный бенчмаркинг для Linux. Хорошая настройка рабочей нагрузки. Тестирование NFS (net-ffsb) немного несостоятельно.
  • Filebench - чрезвычайно мощный, но изначально разработанный для Solaris. Поддержка Linux не очень хорошая.
  • sysbench - В основном это инструмент для сравнения с БД, но также и основной инструмент для сравнения файловых систем.
  • Бонни - кажется устаревшим.
  • Бонни ++ - C++ порт Бонни. Легко, но, кажется, не очень настраиваемый.

Файловая система (рабочая нагрузка):

  • Почтовая марка - имитирует поведение ввода-вывода почтового сервера. Слишком маленький, чтобы подчеркнуть хорошие системы ввода-вывода.

Университет Стони Брук и IBM Watson Labs опубликовали в журнале "Транзакция хранилища" крайне рекомендованную статью о сравнительном анализе файловой системы, в которой представлены различные критерии и их сильные и слабые стороны: девятилетнее исследование сравнительного анализа файловой системы и хранилища. В статье четко указано, что результаты большинства тестов как минимум сомнительны.


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

Инструмент: fio

ссылка: http://freshmeat.net/projects/fio/

проверить физический диск IO:

    ./fio examples/disk-zone-profile 

установить параметр: последовательный r/w: rw= чтение или rw = случайная запись r/w: rw=randread или rw=randwrite

Если вам нужен быстрый способ без хлопот с установкой чего-либо. Это метод, который я использую для теста скорости записи:

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

И на выходе что-то вроде этого

root@rackserver:/# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 4.86922 s, 221 MB/s

Также: удалите тестовый файл после этого, чтобы восстановить дополнительное использованное пространство

Некоторое объяснение:

bs = block size
count = the no of blocks to be written

Настройте эти параметры, чтобы изменить размер файла, записанного в соответствии со спецификациями вашего сервера, и количество времени, которое вы хотите потратить на запись.

скорость чтения, предложенную уже gtsouk, может быть проверена с использованием /dev/null в качестве вывода.

dd if=/dev/sda of=/dev/null

Дайте этому поработать несколько минут и остановите его, нажав Ctrl+C. Он напечатает скорость передачи чтения вашего привода / контроллера. Это максимальная скорость чтения, которую вы можете получить с вашего диска.

SysBench

См. http://www.howtoforge.com/how-to-benchmark-your-system-cpu-file-io-mysql-with-sysbench

пример

sysbench --test=fileio --file-total-size=150G prepare

sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

Он также может тестировать процессор, память, потоки и производительность сервера базы данных,

Это круто

Или тестирование программного обеспечения, написанного на Java: http://www.dacapobench.org/

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

Параметры вашей системы:

  1. Запоминающее устройство: HDD, SSD (какой?), Raid (какой?)
  2. файловая система, размер блока, режим журнала
  3. файловый кеш, грязные пороги, объем памяти
  4. Планировщик ввода-вывода, его настройки
  5. количество процессоров
  6. версия ядра

Ваши параметры теста:

  1. читать или писать спектакль?
  2. последовательный или случайный?
  3. 1 поток или несколько?
  4. размер запросов
  5. оптимизировать пропускную способность или задержку запроса?

Существует отличная программа для тестирования блочного хранилища ввода-вывода в Unix, которая называется IORATE. Вы можете получить копию на iorate.org.

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

Взгляните на IOzone: http://www.iozone.org/

Если вы хотите прочитать технический документ, иллюстрирующий реальное использование кластера HPC, см. Этот PDF-файл, стр. 36: http://i.dell.com/sites/content/business/solutions/hpcc/en/Documents/Dell-NSS-NFS-Storage-solution-final.pdf

Другие вопросы по тегам