Skip to content

⚡ Bolt: Use sliding window concurrency in memory scanner#85

Open
acebytes wants to merge 1 commit intomainfrom
bolt-sliding-window-concurrency-8944042612882090748
Open

⚡ Bolt: Use sliding window concurrency in memory scanner#85
acebytes wants to merge 1 commit intomainfrom
bolt-sliding-window-concurrency-8944042612882090748

Conversation

@acebytes
Copy link
Copy Markdown
Contributor

@acebytes acebytes commented Apr 5, 2026

💡 What: Replaced the static array chunking approach in ProcessMemoryScanner.scanPIDs with a sliding window implementation using pids.makeIterator() and a continuous task addition loop. Added allEntries.reserveCapacity(pids.count) to avoid intermediate array resizing.

🎯 Why: In Swift's structured concurrency, grouping tasks into static chunks introduces tail latency. A chunk of 8 tasks will take as long to complete as the single slowest task within that chunk, leaving up to 7 concurrency slots idle during the stall. A sliding window ensures that a new task is immediately dispatched the moment any active task finishes, keeping the pipeline completely full.

📊 Impact: Significantly reduces the total time required to scan hundreds of PIDs by maintaining exactly maxConcurrency tasks in-flight at all times without idle stalls. Also eliminates the minor memory overhead of generating intermediate arrays for the chunks.

🔬 Measurement: Run a full scan on a system with hundreds of active processes. The total duration of the unprivileged memory scan should complete faster and utilize CPU more consistently compared to the chunked baseline.


PR created automatically by Jules for task 8944042612882090748 started by @acebytes

Replaced static chunking in `ProcessMemoryScanner.scanPIDs` with a sliding window approach using an iterator. This optimization maintains maximum concurrency levels continuously, eliminating the tail-latency stalls caused by waiting for the slowest task in a fixed-size chunk.

Co-authored-by: acebytes <2820910+acebytes@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant