Брза процена брзине диска помоћу резервне копије
Dmitry Kuzmenko, 30.05.2019, ib-aid.com
Наша техническая поддержка периодически получает вопрос (который также задают на форумах) - «похоже, наши диски медленные, как это подтвердить»?
Чаще всего этот вопрос задают пользователи виртуальных машин, где администратор баз данных не имеет доступа к настройкам дисковой подсистемы или даже не знает её характеристик.
Конечно, скорость диска можно измерить разными инструментами, от простого CrystalDiskMark до более сложного IOMeter. Но самые чистые результаты можно получить, когда приложения не работают с диском. В противном случае результаты могут различаться, а при высокой нагрузке тестирование может снизить производительность системы.
Более того, системные администраторы могут запретить установку стороннего программного обеспечения, даже на короткий период времени.
Однако резервное копирование обычно выполняется на всех таких системах (кроме тех, кто использует резервное копирование на уровне виртуальной машины для резервирования Firebird, что неправильно - см. #11 здесь в «12 распространённых ошибок при резервном копировании баз данных").
Резервное копирование (gbak -b -g) - это чтение всех данных из базы данных и запись (последовательно) этих данных в файл резервной копии. С точки зрения операций чтения/записи, это комбинация случайного чтения и последовательной записи.
Файл резервной копии обычно составляет 60%-70% от размера базы данных. И, из-за версионирования и структуры страниц базы данных, чтений больше, чем записей.
Поскольку файл резервной копии обычно размещается на другом физическом диске, общая скорость резервного копирования будет зависеть от скорости случайного чтения базы данных и скорости последовательной записи диска резервной копии. Конечно, вы можете разместить базу данных на HDD, а резервную копию делать на SSD, но это будет очень неэффективно, поэтому мы считаем, что скорость диска резервной копии почти равна скорости диска базы данных, не намного выше или ниже.
Чтобы упростить оценку скорости, мы взяли только размер файла резервной копии и разделили его на время резервного копирования. Результат будет в «мегабайтах в секунду». Но, чтобы оценить полученное значение в сравнении с другими системами, требуется некое эталонное измерение.
Мы взяли средний настольный компьютер в качестве эталона, с базой данных на RAID1 из 2 SATA3 HDD, и резервной копией на отдельном SATA3 HDD (скорость последовательного чтения этого RAID1 составляет около 180 МБ/сек, и ~150 МБ/сек для HDD резервной копии).
Здесь резервная копия базы данных размером 31 ГБ имеет размер 21 ГБ, и резервное копирование в однопользовательском режиме (никто не работает на этом компьютере) занимает 18 минут, скорость резервного копирования составляет 19 мегабайт в секунду.
Итак, поскольку это не мощный сервер, а просто настольный компьютер (собранный 2 или 3 года назад), мы можем использовать эту скорость резервного копирования как эталон, считая её нормальной и, возможно, минимально допустимой для производственных систем.
Далее мы проанализировали скорость резервного копирования на 30 различных серверах под нашим управлением, где размер файла резервной копии не менее 5 гигабайт.
| Производительность | Скорость, МБ/сек | Комментарии и примеры |
|---|
| Быстро | 50-70 | Были некоторые системы с резервными копиями от 38 до 150 гигабайт. Резервное копирование базы данных 124 ГБ за 42 минуты - это быстро. | | Средне | 20-50 | Здесь средняя скорость составляет около 80 гигабайт за 30-40 минут. Это нормально, и наш настольный компьютер показывает результат, который может соответствовать этому диапазону. | | Медленно | 10-20 | 463 гигабайта за 11 часов, 80 гигабайт за 2 часа, 293 гигабайта за 5 часов - это медленно, даже наш тестовый настольный компьютер быстрее. | | Очень медленно | Ниже 10 | Это как 8,5 гигабайт за 1 час. Очень медленно. |
Понятно, что на некоторых изученных системах резервное копирование не выполняется при нулевой нагрузке на сервер. Но в любом случае, оно выполняется при минимальной нагрузке на сервер.
Чтобы узнать, как низкая нагрузка может повлиять на скорость резервного копирования, мы запустили 2 одновременных резервных копирования на том же настольном компьютере. Оба заняли 19 минут со скоростью 18 мегабайт в секунду. Это 93% от однопользовательского резервного копирования, что не так много (снижение на 7%) для одиночных HDD. Если у вас SSD, вы можете не заметить разницы, даже если запустите 3-4 резервных копирования одновременно.
В целом, скорость резервного копирования 20 мегабайт в секунду и ниже может быть причиной для беспокойства.
В этом случае либо диск резервной копии слишком медленный, а резервное копирование должно выполняться как можно быстрее. Либо диск базы данных слишком медленный, и общая производительность системы хуже, чем нужно.
Как увеличить скорость резервного копирования
Многие не используют gbak на полной скорости, и иногда можно увеличить скорость резервного копирования с помощью одного переключателя -se service_mgr, чтобы использовать менеджер служб внутри движка Firebird.
Рекомендуемая командная строка для быстрого резервного копирования следующая, как для Firebird 2.5, так и для Firebird 3.0:
gbak -se localhost:service_mgr -b -g -user USERNAME -pass password Disk:\Path\Database.fdb Disk:\Path\backup.fbk
Больше советов и приёмов, посвящённых общей производительности: