Comments (7)
Yep! One of the things that could help there is that there is already an internal API for extracting stats from the scheduler. We could upgrade that to a separate gRPC API, which may be used by such an autoscaler.
from bb-remote-execution.
Also to answer a follow-up question: how could we extend Buildbarn to support this? Two ways I can think of:
Have a method where we can hook into the scheduler, so that you can detect incoming build actions for unsupported worker kinds. A helper process would listen to these events and spawn workers accordingly.
Allow workers to specify which labels in the platform properties are variable. The worker would then be responsible for spawning the containers dynamically.
@EdSchouten This was something that I was thinking of as well. This would be particularly relevant for the use of recc clients for buildbarn, where management of build dependencies into the input root would not be covered by the REAPI client. There is more discussion at https://gitlab.com/celduin/remote-execution/remote-execution/issues/2
Do you think that this would be in-scope for a bb-autoscaler, that would hook into bb-scheduler, maybe with a simple gRPC protocol, that would detect unsupported worker kinds/variable platform properties, and spawn accordingly the right containers? I suspect that it would be also beneficial for the same bb-autoscaler to be configurable so that it could make API calls to AWS/GCP/Azure to be able to spin up new nodes, that would then register with the bb-scheduler.
from bb-remote-execution.
So to answer your question: Buildbarn does respect the platform properties, but there is no logic in place (yet) to dynamically spawn workers based on, say, a Docker container image name. This means that you'll need to make sure to spin up workers in advance that have matching platform properties.
from bb-remote-execution.
Also to answer a follow-up question: how could we extend Buildbarn to support this? Two ways I can think of:
- Have a method where we can hook into the scheduler, so that you can detect incoming build actions for unsupported worker kinds. A helper process would listen to these events and spawn workers accordingly.
- Allow workers to specify which labels in the platform properties are variable. The worker would then be responsible for spawning the containers dynamically.
from bb-remote-execution.
Also: be sure to visit the HTTP endpoint of bb-scheduler. It provides a simple web UI that shows the state of the scheduler. Workers and operations are grouped by platform queues, which are identified by those platform properties.
from bb-remote-execution.
@EdSchouten has this capability been added to bb-autoscaler?
from bb-remote-execution.
We now have a BuildQueueState gRPC API that can be used to inspect the scheduler's state. I guess that's already of some use here.
Not much else has been done in this area.
from bb-remote-execution.
Related Issues (20)
- Failed to build bb-remote-execution on Windows HOT 2
- Service resolution via Consul HOT 1
- BuildBarn always resolves symlinks to origin files HOT 9
- Buildbarn allows action to write under user home directory HOT 2
- Support remote persistent workers HOT 1
- Is it possible to allow for the setting of priorities or weights for workers? HOT 3
- Mount '/proc' into chrooted actions HOT 5
- Bazel build fails if remote worker is being downscaled during build HOT 1
- Linux sandboxing / network blocking HOT 4
- Missing output files are ignored by bb-worker HOT 2
- Publish multi-arch images with arm64 HOT 1
- Fuse worker has missing output directories compared to hardlinking worker HOT 3
- Failed to create hardlink to cached file "xxx": file exists HOT 3
- Instance name lost when ExecuteRequest arrives in scheduler HOT 6
- Scheduler does not reschedule on Internal Errors HOT 5
- Scheduler should report action as Executing when it starts, instead of waiting until ExecutionUpdateInterval
- Scheduller validation breaks after docker image: 20210430T150052Z-ed1e2f4 HOT 2
- Building bb_runner and bb_worker fails on Mac M1/arm64 HOT 16
- RequestMetadata extraction does not work with Bazel HOT 2
- scheduler handles workers above maximum size poorly HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bb-remote-execution.