Благодаря махинациям, описанным в прошлой части, у нас в распоряжении находится дамп дисковых операций (flatfile.bin.gz), а так же заготовка конфига для тестирования. Самое время натравить vdbench на какое-нибудь блочное устройство.
3. Воспроизведение нагрузки
На тестируемой системе устанавливаем vdbench, копируем на нее flatfile. Допустим, жертвой vdbench'а будет устройство c0t2d0s0. В таком случае файл (назовем его prof.vd), описывающий тест vdbench может выглядеть следующим образом:
sd=sd1,lun=/dev/rdsk/c0t2d0s0,replay=(438086664192)
wd=wd1,sd=sd1
rd=run1,wd=wd1,elapsed=120,interval=1,replay=/root/flatfile.bin.gz
Здесь:
lun=/dev/rdsk/c0t2d0s0 - подопытный диск
replay=/tmp/dump/flatfile.bin.gz - путь до flatfile-а с дампом io. В нем присутствует информация обо всех устройствах, находившихся на исходной системе.
replay=(438086664192) - идентификатор конкретного устройства исходной системы
elapsed=120 - время теста в секундах
interval=1 - интервал снятия статистики
Это то, что осталось от шаблона после внедрения в него конкретики и ликвидации всяческих излишеств.
Тут важно не допустить ошибки в параметре lun, указывающем на тестируемое устройство, ибо после запуска vdbench все данные будут утеряны. Понятно, что это устройство должно быть не меньше того, с которого снимался trace dump (точнее оно должно быть "не меньше" самого большого адреса, встретившегося при записи dump'а).
Все, запускаем vdbench с указанием папки для сохранения результатов /tmp/ou:
bash-3.2# ./vdbench -f prof.vd -o /tmp/ou
Vdbench distribution: vdbench502
21:30:58.813 Created output directory '/tmp/ou'
....
21:31:05.180 Replay selected i/o count: 1270; traced elapsed time 125.48 seconds; traced i/o rate: 10.121313
21:31:07.009 Starting RD=run1; I/O rate (Replay): 10; elapsed=120; For loops: None
Во время тестирования на терминал будет сыпаться статистика:
Oct 30, 2011 interval i/o MB/sec bytes read resp resp resp cpu% cpu%
rate 1024**2 i/o pct time max stddev sys+usr sys
21:31:08.355 1 188.00 1.55 8654 100.00 23.077 108.748 16.716 33.7 22.8
21:31:09.160 2 1.00 0.01 8192 100.00 27.664 27.664 0.000 48.0 28.6
21:31:10.146 3 106.00 0.69 6868 100.00 11.898 45.332 11.048 37.0 26.0
21:31:11.109 4 0.00 0.00 0 0.00 0.000 0.000 0.000 27.3 17.2
....
21:31:32.068 25 0.00 0.00 0 0.00 0.000 0.000 0.000 26.0 18.0
21:31:33.056 26 80.00 0.67 8819 100.00 18.612 52.915 11.711 24.0 20.0
21:31:34.066 27 5.00 0.02 4915 100.00 23.969 40.755 15.044 28.0 24.0
21:31:35.117 28 152.00 1.38 9498 100.00 8.857 50.690 8.927 32.0 26.0
21:31:36.128 29 74.00 0.39 5548 100.00 17.903 104.232 15.676 29.0 21.0
21:31:37.061 30 5.00 0.03 6451 80.00 9.707 15.954 5.498 27.0 20.0
....
21:33:05.071 118 10.00 0.05 5324 100.00 13.705 27.686 7.271 20.0 16.0
21:33:06.065 119 0.00 0.00 0 0.00 0.000 0.000 0.000 20.0 17.0
21:33:07.064 120 1.00 0.00 3072 0.00 0.692 0.692 0.000 20.0 17.0
21:33:07.107 avg_2-120 8.82 0.05 5850 80.76 17.685 872.112 49.210 23.4 18.4
21:33:07.964 Vdbench execution completed successfully. Output directory: /tmp/ou
4. Картинки!!!
После завершения теста, в каталоге /tmp/ou нас будут поджидать html файлы с результатами. Хотя стоит отметить, что изучение их содержимого может довольно быстро наскучить, так как представляет из себя необъятного размера таблицы. Гораздо приятнее разглядывать красочные картинки. Для этого можно использовать swat (да-да, тот с помощью которого записывался dump).
Тут все просто. Запускаем Swat Trace Facility (swat -t), далее в File->SetTraceDirectory выбираем папку с результатами vdbench, переходим во вкладку Reporter и жмякаем File->LoadTraceDate. Все, теперь можно разглядывать всякие графики с пропускными способностями, очередями к дискам, iops'ами, а так же просматривать прочие полезные репорты.

К примеру, отобразить на одном графике соотношение операций чтения/записи и размер очереди:
