Я исследую медленные проблемы приложений с новым оборудованием и получаю странные результаты. Я пытаюсь определить, что вызывает это поведение.

я использую

dd if=x.b1 of=x.b10 bs=8192 oflag=dsync 

файла 101 МБ имитирует, как наша база данных записывает на диск (флаг dsync был предложен нашим поставщиком базы данных), и в то время как обычные команды dd без опции dsync показывают 80-100 Мбит / с, с командой dsync я получаю результаты в диапазоне 160Кб / с-200Кб / с.

Такое поведение было просмотрено на нескольких устройствах, а также на жестких дисках разных моделей и в процессе очистки диска.

dd if=/dev/zero of=/dev/sda bs=8192 oflag=dsync

показывает более ожидаемую скорость 80-100 Мбит / с, что, по-видимому, говорит о том, что это что-то в нашей пользовательской ОС, что замедляет процесс. Мы запустили эти тесты под пользовательским SuseLinux, а также с OracleOS (32- и 64-битной), и мы продолжаем видеть эти очень низкие цифры.

Можете ли вы дать мне несколько идей о том, где проблема?

1 ответ1

2

Задание oflag=dsync для dd, что значительно замедлит скорость записи в выходной файл.

Из руководства по дд:

dsync

Используйте синхронизированный ввод / вывод для данных. Для выходного файла это вызывает физическую запись выходных данных при каждой записи.

После каждого блока 8 КБ dd будет ожидать физической записи данных на диск. Это обходит все кэши, включая аппаратный кэш на самом диске. Блок 8 КБ не начнет копировать, пока это не будет завершено.

Если скорость копирования составляет 200 КБ / с, а размер блока составляет 8 КБ, то это примерно 25 синхронизаций в секунду или 40 мсек. Это время довольно типично для жесткого диска.

Поставщик базы данных, вероятно, просит вас попробовать это, поскольку он использует синхронизированный ввод-вывод для журнала транзакций базы данных (чтобы обеспечить гарантии надежности ACID).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .