PERF: 50k CalDAV reads raise mean RSS by 16–28% (#573) #711

Open
opened 2026-10-02 09:58:54 +00:00 by kayg · 0 comments
Owner

Evidence

Measured on the quiet perf VM with the 8 ms HDD emulation enabled. The comparison uses three completed baseline runs at c4a61e8cf090170f35b1bed3350d9de20c83ecd5 and two completed feature runs at f943e0dab500f69835462dd3e46b91fa117b9e9f. Each scenario has three request samples per run. Feature attempt B2 stopped during fixture creation at 25,000/50,000 entries, so it is excluded from the metric medians.

Scenario Baseline median mean RSS Feature median mean RSS Change Baseline median peak RSS Feature median peak RSS Change
PROPFIND, 50k 447,747,878 B 571,506,240 B +27.6% 536,039,424 B 634,955,776 B +18.5%
calendar-query, 50k 518,261,101 B 604,291,698 B +16.6% 576,417,792 B 698,275,840 B +21.1%
sync after 10k changes 545,973,820 B 632,935,097 B +15.9% 621,699,072 B 638,238,720 B +2.7%

This is a memory regression above 10% in the first two resource measures and all three mean RSS comparisons. Feature p95 latency improved substantially: PROPFIND 13,953 ms to 2,592 ms, calendar-query 6,646 ms to 2,265 ms, and sync 12,928 ms to 2,673 ms. The move visibility phase has no baseline result because the three baseline runs timed out at 120 s; feature p95 was 57,368.822 ms in B3 and 60,103.55 ms in B1.

Reproduction

Run bench/caldav-scale-573.py --entries 50000 --samples 3 --changes 10000 --batch-size 1000 --clients 50 with the optimized server builds at the two commits above. Use TMPDIR=/srv/hdd-emu/tmp, /root/hdd-emu.sh run-limited, and flock -w 14400 /root/perf.lock. Baseline and feature JSON files were /root/perf-rerun/output/caldav-A1.json through caldav-A3.json and caldav-B1.json, caldav-B3.json.

## Evidence Measured on the quiet perf VM with the 8 ms HDD emulation enabled. The comparison uses three completed baseline runs at `c4a61e8cf090170f35b1bed3350d9de20c83ecd5` and two completed feature runs at `f943e0dab500f69835462dd3e46b91fa117b9e9f`. Each scenario has three request samples per run. Feature attempt B2 stopped during fixture creation at 25,000/50,000 entries, so it is excluded from the metric medians. | Scenario | Baseline median mean RSS | Feature median mean RSS | Change | Baseline median peak RSS | Feature median peak RSS | Change | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | PROPFIND, 50k | 447,747,878 B | 571,506,240 B | +27.6% | 536,039,424 B | 634,955,776 B | +18.5% | | calendar-query, 50k | 518,261,101 B | 604,291,698 B | +16.6% | 576,417,792 B | 698,275,840 B | +21.1% | | sync after 10k changes | 545,973,820 B | 632,935,097 B | +15.9% | 621,699,072 B | 638,238,720 B | +2.7% | This is a memory regression above 10% in the first two resource measures and all three mean RSS comparisons. Feature p95 latency improved substantially: PROPFIND 13,953 ms to 2,592 ms, calendar-query 6,646 ms to 2,265 ms, and sync 12,928 ms to 2,673 ms. The move visibility phase has no baseline result because the three baseline runs timed out at 120 s; feature p95 was 57,368.822 ms in B3 and 60,103.55 ms in B1. ## Reproduction Run `bench/caldav-scale-573.py --entries 50000 --samples 3 --changes 10000 --batch-size 1000 --clients 50` with the optimized server builds at the two commits above. Use `TMPDIR=/srv/hdd-emu/tmp`, `/root/hdd-emu.sh run-limited`, and `flock -w 14400 /root/perf.lock`. Baseline and feature JSON files were `/root/perf-rerun/output/caldav-A1.json` through `caldav-A3.json` and `caldav-B1.json`, `caldav-B3.json`.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#711
No description provided.