-
Notifications
You must be signed in to change notification settings - Fork 128
feat(pegboard): add local image cache and overlay fs mounts #2586
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(pegboard): add local image cache and overlay fs mounts #2586
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
392cfe6 to
ac97bc8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
Major enhancement to Pegboard's container image management system, introducing local image caching and overlay filesystem mounts for improved performance and resource utilization.
- Added
ImageDownloadHandlerinpackages/edge/infra/client/manager/src/image_download_handler.rswith LRU-based caching and concurrent download management using SCC HashMap - Implemented overlay filesystem mounts in
packages/edge/infra/client/manager/src/actor/setup.rsto share common layers between actors using the same image - Added high-priority scheduling (
Nice=-15) for critical services in systemd configurations for rivet-edge-server, pegboard, and rivet-guard - Added granular histogram buckets in
packages/edge/infra/client/manager/src/metrics/buckets.rsfor microsecond-scale performance measurements - Restructured actor identification to use (actor_id, generation) tuples across multiple test files for better lifecycle management
34 files reviewed, 11 comments
Edit PR Review Bot Settings | Greptile
packages/edge/services/pegboard/standalone/usage-metrics-publish/src/lib.rs
Show resolved
Hide resolved
packages/edge/infra/client/manager/src/image_download_handler.rs
Outdated
Show resolved
Hide resolved
packages/edge/infra/client/manager/src/image_download_handler.rs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
Further refinements to the Pegboard image caching system and actor lifecycle management, focusing on resource optimization and service reliability.
- Refactored actor port management in
tests/to remove explicit port assignments, suggesting a more dynamic port allocation system - Phased out isolate-v8 runner in favor of container-based runners, with related test updates in
packages/edge/infra/client/manager/tests/common.rs - Added process resource controls in
packages/edge/infra/client/manager/src/runner.rsfor better CPU and memory management of orphaned processes - Optimized CPU shares calculation in
packages/edge/infra/client/manager/src/actor/oci_config.rsby adjusting divisor from 8 to 10 - Added datacenter validation before metrics collection in
packages/edge/services/pegboard/standalone/usage-metrics-publish/src/lib.rs
34 files reviewed, 2 comments
Edit PR Review Bot Settings | Greptile
|
|
||
| // Sleep if not disabled | ||
| if (!CONFIG.disableSleep) { | ||
| const sleepDuration = (start + 60_000 - Date.now()) / 1000; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Using shadowed 'start' variable here. Will calculate wrong sleep duration. Should use outer 'start' variable.
| const sleepDuration = (start + 60_000 - Date.now()) / 1000; | |
| const sleepDuration = (actorStart + 60_000 - Date.now()) / 1000; |
ac97bc8 to
f048c99
Compare
b3aa8b4 to
2e8e98f
Compare
f048c99 to
3a69467
Compare
3a69467 to
e2238dc
Compare
2e8e98f to
4a380a5
Compare
e2238dc to
ff90f58
Compare
4a380a5 to
84aaf41
Compare
bc3dd6c to
a8d0391
Compare
4ee85d0 to
66c9ae7
Compare
66c9ae7 to
ff90f58
Compare
a8d0391 to
84aaf41
Compare
84aaf41 to
c33d751
Compare
ff90f58 to
a5dffdd
Compare
a5dffdd to
a94aa4a
Compare
c33d751 to
5b30dea
Compare
Merge activity
|
<!-- Please make sure there is an issue that this PR is correlated to. --> ## Changes <!-- If there are frontend changes, please include screenshots. -->

Changes