Implements Tier-1 memory ceiling gate that enforces RSS budgets for PDF extraction, analogous to cargo-bloat for binary size. Changes: - CI: Add memory-ceiling template with cgroup MemoryMax (1.5 GB) - CI: Add cgroup MemoryMax enforcement to test-glibc (6 GB) and test-musl (4 GB) - CI: Add cgroup MemoryMax + libfuzzer rss/malloc limits to fuzz workflow - xtask: Implement memory-ceiling command with peak RSS sampling - Add perf fixtures (100-page, 10k-page) for memory testing - Add run-fuzz-with-limits.sh for local fuzz testing with memory caps - Register perf fixtures in PROVENANCE.md Memory budgets enforced: - Buffered 100-page PDF: < 512 MB - Streaming mode: < 256 MB (constant in page count) - Adversarial fixtures: < 1 GB hard ceiling Closes bf-1g1fd Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 10k-page.pdf | ||
| 100-page-vector.pdf | ||
| README.md | ||
Performance Test Fixtures
This directory contains PDF files used for performance and memory ceiling testing.
Memory Budgets
Per the plan (Phase 0 Quality Targets), the following memory budgets apply:
| Category | Target | Measurement |
|---|---|---|
| Peak RSS, 100-page vector PDF (buffered mode) | < 512 MB | RSS sampled at 10 ms intervals |
| Peak RSS, streaming/NDJSON mode (any page count) | < 256 MB, constant in page count | Must stay flat as page count grows |
| Peak RSS, adversarial fixtures | < 1 GB hard ceiling | Must not scale with payload size |
Fixtures
100-page vector PDF
100-page-vector.pdf- Synthetic 100-page PDF for buffered mode testing- Target: < 512 MB peak RSS
10k-page stress test
10k-page.pdf- Synthetic 10,000-page PDF for streaming mode validation- Target: < 256 MB peak RSS in streaming mode
- Must remain constant regardless of page count
Generating Fixtures
Fixtures can be generated using the generate_stress_pdf.py script in the tools directory.
python tools/generate_stress_pdf.py --pages 100 -o tests/fixtures/perf/100-page-vector.pdf
python tools/generate_stress_pdf.py --pages 10000 -o tests/fixtures/perf/10k-page.pdf