/explain/vacuum_cost_page_miss

vacuum_cost_page_miss

The price of reading a page from disk. Postgres 14 dropped the default from 10 to 2: the old value priced spinning disks where a random read cost real time, and on SSDs it made vacuum pay a 5× penalty for I/O that no longer hurts. A cluster carrying the old 10 (upgraded in-place, or copied config) throttles cold-cache vacuums for no reason.

DEMO — one vacuum pass, toy table14 GB heap · 1,740,000 pages
defaults (200 · 2 ms)1 min · 154.7 MB/s
sliders15 min · 15.5 MB/s
autovacuum_vacuum_cost_limit200
cost units the worker may spend before it sleeps · default 200
autovacuum_vacuum_cost_delay20 ms
how long it sleeps · default 2 ms since Postgres 12, 20 ms before
cost = pages × (0.55·hit + 0.25·miss + 0.20·dirty) · duration = cost / limit × delay
SEE ALSO
vacuum_cost_page_hitvacuum_cost_page_dirty← back to start
If you still run spinning storage, 10 remains an honest price; the robovac optimizer keeps it when the storage hint says hdd.
vacuum_cost_page_miss — robovac