-
Notifications
You must be signed in to change notification settings - Fork 17.9k
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
x/build/builders: tracking bug for new-style SmartOS Solaris builder #9515
Comments
Unfortunately illumos (open source Solaris) lacks the drivers required to run on GCE. I will look into the feasibility of implementing the missing drivers myself (mostly a question of lacking enough time). |
Per email conversation, feel free to do the same thing as #9495, building an API server we can hit from the coordinator to start & kill containers/VMs/zones/whatever on your side (Manta?). |
I signed up for Joyent in November and forgot about it. (Note to self: details in my email at https://mail.google.com/mail/u/0/#inbox/151260db32b1d0b2 ) |
I'm finally running a Solaris buildlet (the "new"-style builder) on Joyent. A single one has been running for a few days now, doing the reverse buildlet thing, keeping a constant connection open to farmer.golang.org. You can see it in the section: Reverse pool summary: (It also shows up at http://farmer.golang.org/builders) Now that I know one works, it'd be nice to have a dynamic number, so we can scale from 0 to dozens quickly, and have Solaris trybots and sharded tests. Anybody want to help make this better? I think it would involve making a custom image that runs the buildlet on boot as a service (SMF? some XML thing?), and then we'd need to do some Joyent API calls from farmer.golang.org to dynamically size the number of running images? I can do that part, if you write standalone Go code to resize the number of instances of an image. (or just stop/start them?) |
What do you mean by a "custom image"? |
@4ad, maybe my terminology is wrong, but I want to be able to make an API call to Joyent where I say "start a new buildlet" and it starts a container or VM and it starts the buildlet on boot. I don't care whether it's a container or a VM, but I'd prefer it to start within seconds, so that probably means a container. The only thing custom about it some service configuration so the buildlet starts on boot, and the buildlet's stage0 binary can be baked in to the image. The other thing we could bake in to the image is the GOROOT_BOOTSTRAP directory, so we don't have to download it & untar it for each build. |
If we need to create a custom image, the only to create it is going through this route: https://docs.joyent.com/public-cloud/instances/infrastructure/images/creating |
Also, since we have access to 32-core containers, is there value in doing sharded tests? |
Maybe not. Or maybe it'll help more (we could use N 32-core containers). Note that the builder doesn't just do static sharding, giving 1/Nth of work to each machine. It instead has a queue of work to do, and each machine grabs work from the queue. So it effectively keeps all the machines busy, even if the work is very heterogeneously intensive. They bill by the minute, right? Is there a 10 minute minimum or anything? |
@4ad, can you point me at simple instructions for running a program on boot? I got lost in some hundred page PDF about SMF and XML. Is that the systemd unit file equivalent? Is there something simpler like the rc.local equivalent? |
Yes, SMF is like systemd, and yes, service files are unfortunately XML. On Oracle Solaris there's a There is no The best SMF tutorial is probably: http://www.c0t0d0s0.org/archives/4149-Solaris-Features-Service-Management-Facility.html You can probably just adapt what I use here: https://github.com/4ad/mgk.ro/blob/master/cmd/gometad/gometad.xml Install with:
|
I think most instances are billed by the minute, but some are billed by the hour, we are using standard triton images, no? AFAIK those are billed by the minute with no minimum order (but we should recheck). |
Thanks! I'm using the "base64" image. My instance is called "gotriton1" so yes, Triton, even though I forget the other choices. (I'm always confused whether Triton means the Linux system call compatibility layer, or something else.) |
Don't worry, I'm always confused about that as well. |
Also start of some solaris stuff. Fixes golang/go#10601 (all five ppc64le now in systemd) Fixes golang/go#14197 (all five arm64 up and also in systemd) Updates golang/go#15072 (not a fix for Sun Solaris, but progress) Updates golang/go#9515 (more progress towards SmartOS) Change-Id: I9c878017904441823dae7b6945938396b0c2974b Reviewed-on: https://go-review.googlesource.com/21670 Reviewed-by: Brad Fitzpatrick <[email protected]>
I've got a WIP install script here for comment: https://go-review.googlesource.com/#/c/21791 |
CL https://golang.org/cl/21791 mentions this issue. |
Because that's where gcc is. Updates golang/go#9515 Change-Id: Ie7c7a5bbfa2e7565762aa273303352a79a340cea Reviewed-on: https://go-review.googlesource.com/22746 Reviewed-by: Ross Light <[email protected]>
This is now running. It's a bit low capacity at the moment, but it can be reasonably scaled up now. |
This script installs the buildlet as a service. It does not yet use the stage0 binary. Updates golang/go#15072 Updates golang/go#9515 Change-Id: I1566a821cbc26b9007d5ceba20020c2efa37f038 Reviewed-on: https://go-review.googlesource.com/21791 Reviewed-by: Brad Fitzpatrick <[email protected]>
This is a tracking bug for getting a new-style Solaris builder running, using the buildlet.
The text was updated successfully, but these errors were encountered: