2 октября ClickHouse раскрыла устройство резервного копирования в Managed Postgres. Обычное чтение через Linux page cache загружает туда весь бэкап, хотя каждый блок нужен лишь один раз. Ради него ядро вытесняет данные, которые вскоре понадобятся запросам.
В тесте с базой 467 ГБ обычный бэкап выбросил из памяти все 40 ГиБ заранее прогретой таблицы. Задержка p99 выросла в 4,7 раза и оставалась повышенной после завершения копирования.
Переход на Direct I/O сохранил кэш, сократил нагрузку на CPU примерно на 14% и ограничил рост p99 до 1,5 раза. При этом бэкап занял почти столько же времени: 71 секунду против 70. Секрет — читать блоками размером во всю полосу RAID0; простое включение
O_DIRECT отключает упреждающее чтение и само по себе может замедлить копирование. Для инженеров это объяснение загадочных скачков задержки во время и после бэкапов: проблема может быть не в дисковой пропускной способности, а в загрязнении системного кэша.
Пруф: ClickHouse — 2 октября 2026 года
#postgresql #backup #directio #linux #nvme #performance #dataengineering
@data_engi