Тестирование производительности ввода-вывода в 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/
Вам нужно указать, что вы тестируете, иначе тесты будут только вводить в заблуждение. Существуют различные аспекты производительности ввода-вывода, которые вы должны выбрать для оптимизации, и разные параметры для работы.
Параметры вашей системы:
- Запоминающее устройство: HDD, SSD (какой?), Raid (какой?)
- файловая система, размер блока, режим журнала
- файловый кеш, грязные пороги, объем памяти
- Планировщик ввода-вывода, его настройки
- количество процессоров
- версия ядра
Ваши параметры теста:
- читать или писать спектакль?
- последовательный или случайный?
- 1 поток или несколько?
- размер запросов
- оптимизировать пропускную способность или задержку запроса?
Существует отличная программа для тестирования блочного хранилища ввода-вывода в 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