-
Notifications
You must be signed in to change notification settings - Fork 467
Re-think our pypy3 CI runs #2029
Copy link
Copy link
Closed
1 / 11 of 1 issue completedLabels
A-ciArea: Continuous IntegrationArea: Continuous IntegrationC-choreCategory: choreCategory: choreS-needs-discussionStatus: needs discussionStatus: needs discussionstaleThe Issue/PR has not had any activity for 60 days. PRs will be automatically closed.The Issue/PR has not had any activity for 60 days. PRs will be automatically closed.
Metadata
Metadata
Assignees
Labels
A-ciArea: Continuous IntegrationArea: Continuous IntegrationC-choreCategory: choreCategory: choreS-needs-discussionStatus: needs discussionStatus: needs discussionstaleThe Issue/PR has not had any activity for 60 days. PRs will be automatically closed.The Issue/PR has not had any activity for 60 days. PRs will be automatically closed.
Type
Fields
Give feedbackNo fields configured for issues without a type.
There is a very delicate balance we are playing with the RAM game on pypy3 CI runner. We currently have the
size-xl-x64which has 32GB of RAM (ref). The more we increase the load, the worse this dance gets (obviously) but it's not just OOM on the whole process. Sometimes single runners are running OOM on particular tests and erring out instead of exiting with code 143.I recently did some playing around and was able to tune this to account for including up-to-Amsterdam tests here. But note how delicate this balance is. I was not able to use 24GB / 32GB (8 runners with 3G) for the runners because I believe we need more than 8GB for OS / other processes as it seems the entire process OOMs with these numbers. I could not find a good balance here even with 5 runners and 3G. Adding Amsterdam took us from ~63k to ~109k tests, I think we need some better options.
All this to say we need more than 32GB for this task or we need to reconsider how many tests we run for
pypy3.Possible solutions
pypy3broken up into 4-fork runs for all forks. Then we can leave only the latest fork or N and N-1 to run on every PR. We can add a note that reviewers should manually run previous fork tests if they are affected for a PR.Or some other option that is more sustainable. Thoughts and ideas welcome.