request for more s390x koji builder resources #13141
Labels
No labels
announcement
anubis
authentication
aws
backlog
blocked
bodhi
ci
cloud
communishift
copr
database
day-to-day
dc-move
deprecated
dev
discourse
dns
downloads
easyfix
epel
firmitas
forgejo_migration
Gain
High
Gain
Low
Gain
Medium
gitlab
greenwave
hardware
help wanted
high-trouble
koji
koschei
lists
low-trouble
medium-trouble
mirrorlists
monitoring
Needs investigation
odcs
OpenShift
ops
outage
packager_workflow_blocker
pagure
permissions
Priority
Needs Review
Priority
Next Meeting
Priority
🔥 URGENT 🔥
Priority
Waiting on Assignee
Priority
Waiting on External
Priority
Waiting on Reporter
rabbitmq
release-monitoring
releng
request-for-resources
s390x
security
SMTP
sprint-0
sprint-1
src.fp.o
staging
unfreeze
waiverdb
websites-general
wiki
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
Priority
High
Priority
Low
Priority
Medium
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
infra/tickets#13141
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description of request
It looks like the current capacity of s390x koji builders is barely enough to keep up with the "base load", but if there is anything "larger" happening, like OpenJDK, Python, or LLVM builds, these saturate all available koji builders and other builds usually wait 30-45 min, sometimes 60 min or even longer, to get an s390x builder assigned.
(This is even worse for CI builds, which usually just time out after 2 hours (?) and never report back success even if they finish after having waited in line for 42 hours.)
Especially when doing multi-package updates where individual builds finish ~quickly (i.e. chain-build), the wait times multiply quickly: For example, assuming two packages that have to be built in order, and take ~5 minutes to build individually; without resource starvation, this takes ~15 minutes to finish (5 min build, 5 min repo regen, 5 min build) - but with resource starvation, this often takes upwards of an hour (or two) to finish (other architectures finish quickly, but the builds are stuck waiting for s390x builder resources for longer than the build itself takes).
I assume builds that have to be done "in order" (i.e. koji chain-builds) are not that common in the RHEL world so the issue might not be "known" (or felt as badly) there, but it is very common in Fedora to hit this, and it is a massive time-suck on days like today (like, things taking ~3 hours that should take 15 minutes).
Some more data:
We have 2 lpars. One for staging and one for production.
The production one has 560GB of memory and 48 cpus
There's 20 builders on it.
We reserve 3 of them for composes (because they have a rw koji mount and we never want non compose jobs to use those)
We reserve 1 of them for a varnish cache that allows the rest of them to get cached packages much faster.
CI jobs are only allowed to use 4 of them
We could spread the resources out more (make more vms), but then everything will be slower, but at least smaller jobs will finish sooner.
We could ask for more resources, but how much?
We could move those 'big' builds into another channel and restrict them to only a subset of builders, leaving more for 'small' jobs at the cost of all those taking longer.
Speaking from personal experience: Builds being a bit slower (even 50% slower) would not be a problem, the big time-suck is when builds do not start to build at all for an hour because they're waiting for resources. So maybe allocating more but smaller VMs could help.
I'm one of the package maintainers of LLVM.
It would be great if newer builders had at least 200GiB of storage.
Some s390x builders have only ~130GiB of storage, which is not enough to build LLVM with all the features enabled.
"Luckily", LLVM upstream supports only a subset of features on s390x. If the missing features are enabled upstream, we wouldn't be able to enable them on Fedora s390x due to the storage limit.
I don't have strong opinions on memory and CPU, but if you need help, I'd gladly come up with numbers.
Someone noted that things were delayed this morning.
This seems related to:
I'm not sure if we can filter packit over to the restricted subset of builders, because it also does real builds for users.
Perhaps we can restrict it's scratch builds somehow?
Or just disable s390x in scratch builds for pr's.
See https://github.com/packit/packit-service/issues/3023 on why half of these builds are running.
The other half is related to https://github.com/packit/packit-service/issues/3021 .
There are alternatives being discussed in order to improve the situation without reducing pre-commit tests.
There seems to be another pile-up happening today, involving COSMIC 1.0.9, mariadb, thunderbird, kernel, uv, ruff, etc. Some of my builds have been pending waiting for an s390x builder for 90+ minutes now (example: https://koji.fedoraproject.org/koji/taskinfo?taskID=144225079 ).
Yeah, mostly it's all the cosmic jobs... they are taking a while and there's many of them. ;(
Looking at monitoring... it seems like it might be memory constrained. I wonder if a good first step is to ask for more memory and increase the guests memory accordingly.
This is happening again today. Builds that take 1-2 minutes to build take 30-60 minutes instead instead because they wait for 30+ minutes to get an s390x builder assigned to them.
Example tasks:
https://koji.fedoraproject.org/koji/taskinfo?taskID=144417655
https://koji.fedoraproject.org/koji/taskinfo?taskID=144417775
https://koji.fedoraproject.org/koji/taskinfo?taskID=144417831
I know that you can't do much about this but it's a massive and annoying time-and-joy-suck.
Kevin asked me to start keeping track of builds slow to start on s390x. I've done exactly one WebKitGTK build since then, https://koji.fedoraproject.org/koji/taskinfo?taskID=145258748, and it took 10 hours to start.
(That said, these delays are greatly preferable to the unreliable builds we used to have before #12377.)
We have a little more older history in: #12131.
https://koji.fedoraproject.org/koji/taskinfo?taskID=145425348 - PR for a small package that builds on other arches in a few minutes has been queued for over an hour on s390x
https://src.fedoraproject.org/rpms/libucontext/pull-request/1
Yeah, 9 python3.15 builds were taking 9 builders up... this was the same case of "tons of large/long builds all happening at the same time" again... we just need more numbers of builders so there are some available when a large build chud comes along. :(
FYI, this backlog hit again today... There were 93 builds in queue on s390x.
I moved one builder that was dedicated to kernel builds over to the general pool and that seemed to help.
I then also pulled a builder from compose channel (hopefully won't make composes slower) and added it also to the general pool.
I also have filed another plea for more resources on the existing mainframe.
This is happening again today, apparently due to the mini-Python-extension-mass-rebuild.
I have builds that would take ~2 minutes to complete, but they have been waiting for s390x builder to pick them up for 45 minutes (and counting).
I don't actually think this is due to the python mass rebuild... it's the same ol 'a bunch of large builds are occupying the builders' problem. ;(
There's 3 gcc's, 2 llvms, 2 kernels, 2 nodejs, 2 firefoxes... so thats 11 builders occupied for a while. ;(
I wonder if it would have helped if we had a hw requalification process similar to Debian [1].
Perhaps that could help to get warnings before having such a critical situation as we have now.
[1] https://release.debian.org/testing/arch_qualify.html
I've started a tool to analyze Koji build statistics -- this is what it looks like for yesterday (when the Python archful mass rebuild was happening)
Right now it uses the Koji APIs, once this proves useful we can extend it to use a database dump (hopefully a selective one that only includes the data it needs). It can fetch one day's worth of build data at a time and combine the raw data, so we can slowly build the data to analyze over time and re-analyze it later
Instances: fedora
Gated builds: 3502 (critical-path attribution); unattributed tasks: 0
Official builds:
Scratch builds:
Column legend:
queued/built— tasks counted in the wait/time stats.med-wait,p90-wait— task creation until a builder picked it up.med-time,p90-time— builder start until completion.gated— builds where this arch finished last, holding up the build.med-delay/tot-delay— how long after the second-slowest arch thegating arch finished; the extra wall-clock time it alone cost those
builds (median per build / summed over the window).