-
Notifications
You must be signed in to change notification settings - Fork 17.7k
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/tools/internal/lsp: frequent out-of-memory errors on windows-amd64-race builder #33951
Comments
I'm not sure whether this problem is getting worse, or we're just having a run of bad luck, but we've got five of what appear to be OOM failures in a row now, four of them on https://golang.org/cl/184165. (https://build.golang.org/?repo=golang.org%2fx%2ftools#short) CC @matloob @heschik |
These also occur regularly on the |
Okay. Can the builders' sizes be increased? |
Looks like they are currently @dmitshur upsized the corresponding (CC @bradfitz @toothrot @cagedmantis) ¹https://github.com/golang/build/blob/0babffaf2095de16932bb07c70d58a2730a161fd/dashboard/builders.go#L2029-L2058 |
I agree we should increase the memory for the -race builder at the very least. In order to do that, we need to make a decision about the machine type to use next. Right now all the windows/amd64 hosts use n1-highcpu-4 machine type, since they were added in 2017 in CL 41393. This includes the normal builders, the -race builder, and the -longtest builders. Highcpu is described as:
In contrast to standard:
So, we can consider changing the windows -race builder to use either n1-highcpu-8, or n1-standard-4. Here's a comparison (based on https://cloud.google.com/compute/docs/machine-types and https://cloud.google.com/compute/vm-instance-pricing):
I would prefer for us to make smaller changes, and iterate based on the results. My current impression is that the standard machine type would be a better fit for our needs, so I propose we change all the windows hosts to use n1-standard-4 (Option 2) instead of the current n1-highcpu-4. Both options seem quite close so I'm on the fence. Feedback welcome. Otherwise we can proceed with that plan as the next step. |
I would like to have lower-latency (But really, anything is better than OOMing at head, so I'm not going to hold things up if folks would prefer a different option.) |
Bryan, how does n1-highcpu-8 for -longtest and n1-standard-4 for the rest (normal and -race) sound? |
I would be inclined to do (If the “short” builders are doing fine today with only 3.6 GB, I'm doubtful that throwing more RAM at them will do much, although I suppose it could improve filesystem buffering performance.) |
FWIW, it looks like |
I'm having a hard time following the configuration for |
Issue #33986 is relevant for that.
I believe that is accurate.
This sounds good to me as a small incremental step to try here. Will mail a CL. |
Change https://golang.org/cl/208500 mentions this issue: |
…ders Start using n1-highcpu-8 machine type instead of n1-highcpu-4 for windows-amd64-longtest and windows-amd64-race builders. Continue to use the existing n1-highcpu-4 machine type for all other windows/386 and windows/amd64 builders for now. The primary motivation of this change is to increase amount of RAM available on the longtest builder from 3.6 GB to 7.2 GB, because it is consistenly failing due to being out of memory. Also fix minor typos, and increase consistency in comments and notes. Updates golang/go#33951 Change-Id: Iac5da67fa584059842850a9c8deda98c242741f2 Reviewed-on: https://go-review.googlesource.com/c/build/+/208500 Reviewed-by: Brad Fitzpatrick <[email protected]> Reviewed-by: Alexander Rakoczy <[email protected]>
Looks like the CL above helped; we got our first near-pass of x/tools on |
Change https://golang.org/cl/213557 mentions this issue: |
Start using n1-highcpu-16 machine type instead of n1-highcpu-8 for windows-amd64-longtest and windows-amd64-race builders. The primary motivation of this change is to increase amount of RAM available on the race builder from 7.2 GB to 14.4 GB. CL 208500 has helped by going from 3.6 to 7.2, but empirically 8 GB is not enough for all tests to pass, while 16 GB can be. We already use 16 GB for some other race and/or long builders. Updates golang/go#35186 Updates golang/go#33951 Updates golang/go#33986 Change-Id: I8031a517e6e44ce5e5faba085e7c781a1fcab92e Reviewed-on: https://go-review.googlesource.com/c/build/+/213557 Reviewed-by: Brad Fitzpatrick <[email protected]>
Those are good questions, but they are hard to answer without a resolution to #33986. I think that issue can be used to track this work. The I'll close this issue as resolved via CL 213557 because there aren't frequent OOMs in |
The tests under
x/tools/internal/lsp
flake frequently on thewindows-amd64-race
builder without of memory
errors:https://build.golang.org/log/23e29f4766fa39ac7b7945a729cec7d6ed82a41d
https://build.golang.org/log/086b928e2af996b8955666acce9c2c36ff7f82e8
https://build.golang.org/log/1c6543c8679c8710e897463a62921a3bddfa9a2e
The flakiness of these tests makes it too easy to ignore failures and miss real bugs (such as #31749) detected by the same builder:
https://build.golang.org/log/2c3d2505bf5145815ce4fc57a449c39a46a32cf2
See also #30309, #32834.
CC @ianthehat @stamblerre
The text was updated successfully, but these errors were encountered: