Space reconciliation passes by ten times the last pass's time (closes #250)
check / check (push) Canceled after 0s

The reconciliation pass reads a row and stats a file for every cached
file, and it ran on every eviction tick, so on a large cache a pass
longer than the tick was followed by the next one at once. It still runs
at startup and is considered on each tick, but it now starts no sooner
than ten times as long after the last pass ended as that pass took.
Eviction and the removal of expired negative cache rows still run on
every tick. The comments that bound the drift, and README.md, give the
new bound.

Model: opus-5-5
This commit is contained in:
2026-10-18 23:21:26 +00:00
parent 7f7df9f63c
commit 795cf2fe56
3 changed files with 51 additions and 23 deletions
+3 -1
View File
@@ -199,7 +199,9 @@ into place, so a crash leaves no file under its own name with part of its data.
When pixa starts, and every five minutes after, it removes each cached source or
transformed image whose file is empty, or not the size the database records for
it, with a warning naming the file; the next request for it fetches the source
or converts the image again.
or converts the image again. Looking for those files reads the database once for
every cached file, so after a look that took longer than 30 seconds, pixa waits
ten times as long as it took before looking again.
pixa's target is 1-5k r/s, which has not been measured at that rate (see Load
Test). Toward it, pixa keeps in memory the content types of the 10,000