Мне нужно узнать о влиянии различных уровней дискового ввода-вывода на мое приложение. Для этого я ищу способ генерировать различную нагрузку на диск, пока я запускаю приложение в тестовом режиме.
В настоящее время мы получаем жалобы от пользователей на низкую производительность, однако информации, которую мы получаем, очень мало, поэтому мы пока не можем определить, где именно проблема. Ввод-вывод является основным подозреваемым, однако мы хотели бы знать наверняка.
Для начала меня бы устроило что-нибудь, чтобы создать настраиваемую непрерывную нагрузку на чтение или запись, например. грамм. из /dev/zero
в файл tmp или что-то в этом роде. Я знаю, что могу использовать dd
, но это сразу же доведет диск до предела, тогда как я бы хотел, чтобы какой-то дроссель выполнял разные тестовые прогоны с увеличивающимся объемом фонового трафика.
Чтобы сделать вещи немного более сложными, это должно работать на RedHat9, что означает ядро 2.4. Так что в идеале это был бы какой-то сценарий, который в любом случае использует имеющиеся по умолчанию инструменты.
Вы можете создать большой файл (например, 1 ГБ), а затем использовать rsync
скопировать файл. rsync
имеет встроенную опцию для ограничения полосы пропускания. Таким образом, вы можете скопировать файл со скоростью 10 КБ / с, 50 КБ / с, 2 МБ / с и т. Д.
Насколько я помню, Бонни может создать какую-то нагрузку: http://www.coker.com.au/bonnie++/ Если он не работает так, как вы хотите, составьте небольшой сценарий bash, который будет работать, используя различные утилиты, такие как dd, rm, ls (или упомянутый rsync).
Вы можете использовать скрипт-инструмент, чтобы нагружать диски правильным шаблоном. Например :
Оба позволяют точно выбрать, как сбалансировать чтение и запись, размер ввода-вывода и т. Д.
Если у вас есть тестовый режим, можете ли вы запустить несколько его экземпляров? Если это так, вы можете продолжать запускать копии, пока не получите что-то близкое к производственной нагрузке.
коврик это утилита для тестирования дисков, которая может помочь вам. Вы можете контролировать количество потоков, которые он использует для выполнения своих тестов, тем самым контролируя нагрузку на диск (диски) и систему. Он также позволяет вам контролировать, выполняет ли он свои тесты параллельно или последовательно, добавляя еще один уровень контроля.