Швидка оцінка швидкості диска за допомогою резервного копіювання
Дмитро Кузьменко, 30.05.2019, ib-aid.com
Наша технічна підтримка періодично отримує питання (яке також ставлять на форумах) - «схоже, наші диски повільні, як це підтвердити»?
Найчастіше це питання ставлять користувачі віртуальних машин, де DBA не має доступу до налаштувань дискової підсистеми або навіть не знає її характеристик.
Звісно, швидкість диска можна виміряти різними інструментами, від простого CrystalDiskMark до складнішого IOMeter. Але найчистіші результати можна отримати, коли програми не працюють з диском. Інакше результати можуть відрізнятися, а за високого навантаження тестування може знизити продуктивність системи.
Більше того, системні адміністратори можуть заборонити встановлення стороннього програмного забезпечення, навіть на короткий період часу.
Однак резервне копіювання зазвичай виконується на всіх таких системах (окрім тих, хто використовує програмне забезпечення резервного копіювання на рівні VM для резервного копіювання 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
Більше порад і підказок, присвячених загальній продуктивності: