Skip to content
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

We need more resources. #61

Open
nixinator opened this issue Dec 18, 2021 · 5 comments
Open

We need more resources. #61

nixinator opened this issue Dec 18, 2021 · 5 comments

Comments

@nixinator
Copy link

nixinator commented Dec 18, 2021

Hercules CI implementation of our Private and Public Repo's are going well.

However, like any thing that is a success, developers need more and more CI resources and 'demand' speedier builds.

https://nixbuild.net could help us, in crunch time, or a backup to our self hosted runners.

However, can herciles-ci agent work with nixbuild.net

@roberth
Copy link
Member

roberth commented Dec 18, 2021

You could already configure nixbuild.net as a remote builder on your agents. I can split the concurrency configuration to allow evaluation and effects to be kept to a reasonable number while running many build tasks remotely. This will allow the build tasks to scale to very large demands.

@nixinator
Copy link
Author

Thats amazing and super powerful.

Would you be willing to share the configuration, and i'll give it a whirl soon.

@roberth
Copy link
Member

roberth commented Dec 18, 2021

Configuring the nixbuild.net remote builder can be done as usual. Splitting the concurrency numbers in the configuration has to be implemented first in hercules-ci-agent.
You could try out the setup with a sub-optimal concurrency configuration today.

The reason for having (at least) two distinct concurrency numbers in the config is

  • if the concurrency number is too low, the remote builders are underutilized
  • if the concurrency number is too high and a sufficiently large number of evaluations is runnable, the agent could be overwhelmed by memory pressure from the concurrent nix evaluators

With two numbers, both situations can be avoided simultaneously, for smooth and scalable operation.

@roberth
Copy link
Member

roberth commented Dec 18, 2021

(and of course you could run more agents to handle the load)

@dhess
Copy link

dhess commented Dec 23, 2021

This sounds interesting and I have a question about how it would work with Hercules CI.

Unless something has changed with recent versions of Nix, if you configure any remote builders on a Nix machine, and you build a derivation(s) with nix-build on that Nix machine, nix-build will always use remote builders, and never perform any local builds (assuming the remote builders have the same arch as the local machine, that is).

If you add remote builders to a machine running the Hercules CI agent, will the agent machine only perform evaluation locally and run all builds remotely? Or does the Hercules CI agent have some ability to load-balance local and remote builds? (Perhaps this is what you mean by "sub-optimal concurrency" in your earlier comment.)

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

No branches or pull requests

3 participants