
В настоящее время я выполняю различные задачи по разработке, которые на моей текущей системе выполняются медленно из-за производительности ввода-вывода.
Есть ли способ записывать дисковые операции при выполнении задач, потребляющих ввод-вывод, включая информацию о производительности (записи/секунду, чтения/секунду и т. д.), а затем воспроизводить их на новой системе, чтобы увидеть, какова будет производительность?(без необходимости повторного запуска той же команды для того же набора данных)?
Быblktrace,blkparseилифиопомочь мне в этом случае?
Например: предположим, что в моей системе я хочу провести бенчмаркинг
find -name "*.php" | xargs grep -r "test_string"
внутри папки, содержащей 50 000 файлов (на нескольких уровнях, конечно)
Я хотел бы захватить все дисковые операции, включая статистику, а затем воспроизвести их на другой системе, где нет папки с 50 000 файлов. По сути, просто симулировать операции и проверить, выполняются ли они быстрее.
Я пробовал захватить образцы диска с помощью
blktrace -d /dev/sda -o myfile.blk
но я не знаю, как я могу попытаться воспроизвести их с помощьюфио.
Это возможно?
Спасибо
решение1
Нет. Если вы хотите узнать, сколько времени займет выполнение той же задачи на другом оборудовании, вам нужно запустить ту же задачу на новом оборудовании.
Если вы хотите смоделировать задачу, то вам нужно будет придумать способ смоделировать любую работу, которую задача выполняет с данными после их считывания, в дополнение к попыткам чтения/записи тех же секторов диска.
решение2
Для воспроизведения blktrace
файла с помощью fio вам необходимо преобразовать его вblkparse
двоичный файл данных — см.фиоread_iolog
вариантЧтобы получить больше информации (replay_redirect
также может быть полезно).
Примечание:использование fio для повторного запуска воспроизведения, содержащего записи, УНИЧТОЖАЕТ данные в файле/диске, на котором оно воспроизводитсятак что будь осторожен!