# brk_bencher Resource monitoring for long-running Bitcoin indexing operations. ## What It Enables Track disk usage, memory consumption (current + peak), and I/O throughput during indexing runs. Progress tracking hooks into brk_logger to record processing milestones automatically. ## Key Features - **Multi-metric monitoring**: Disk, memory (RSS + peak), I/O read/write - **Progress tracking**: Integrates with logging to capture block heights as they're processed - **Run comparison**: Outputs timestamped CSVs for comparing multiple runs - **macOS optimized**: Uses libproc for accurate process metrics on macOS - **Non-blocking**: Monitors in background thread with 5-second sample interval ## Core API ```rust,ignore let mut bencher = Bencher::from_cargo_env("brk_indexer", &data_path)?; bencher.start()?; // ... run indexing ... bencher.stop()?; ``` ## Output Structure ``` benches/ └── brk_indexer/ └── 1703001234/ ├── disk.csv # timestamp_ms, bytes ├── memory.csv # timestamp_ms, current, peak ├── io.csv # timestamp_ms, read, written └── progress.csv # timestamp_ms, height ``` ## Built On - `brk_error` for error handling - `brk_logger` for progress hook integration