perf: cut the image 38% and turn GPU acceleration back on #112
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "perf/gpu-acceleration"
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?
Takes
sintra-installedfrom 5144 MB to 3201 MB, a 38% cut. Every figure was measured by building, and the whole stack has been through a cold boot on sintra.Time-sensitive. Sintra is running this now, deployed by hand. Its
nixos-upgradefires Fri 04:00 CST, which is 12:00 CEST, and until this is ondevthat run will rebuild from the olddevand revert all of it.Merge #111 first. It fixes the upgrade-window timezone and applies cleanly on top of this. An earlier revision of this PR carried a competing system-timezone change; that has been dropped, see the comment below.
Sizes
What's in it
Stop the app closure retaining its build toolchain (212 MB). node-gyp scaffolding kept python311, nodejs, npm and pcsclite.dev alive as runtime references for files nothing reads after the build.
Force the audio stack off (21 MB).
services.xserverre-enables PipeWire through NixOS'sgraphical-desktopmodule, so removing our ownenable = truedid nothing; it needsmkForce. The app has never played a sound.Trim systemPackages (117 MB). git, vim, nodejs_22, wget out; nano in, so there's still an editor for field edits.
Prune linux-firmware (664 MB), 752 MB down to 113 MB. Verified per module: i915 44 of 44 present, r8169 23 of 23, r8152 7 of 7. A reboot then caught a missing Intel Smart Sound blob, since firmware requested at probe time is not what modinfo reports — 420 KB, added back.
Drop the gallium drivers this fleet can't use (739 MB), Mesa 975 MB down to 88.5 MB, LLVM gone entirely. Only possible because no machine here uses iris: sintra and tejo are Braswell, batm3 is Haswell, douro is Bay Trail, and all bind crocus. sintra's and batm3's X logs say so directly.
GPU acceleration on by default. The kiosk has run with
--disable-gpu --disable-software-rasterizersince the first ISO commit with nothing in git justifying it. Removing them gives a stable GPU process on real hardware. Douro is exempt — it already carries three display workarounds and is down pending a reflash.CLAUDE.md corrections. It claimed production ran
mainagainst Lightning.Pub and only sintra was ondev. Every live machine runsdev. Also records that batm3 networks over WiFi with ethernet down, sointel/iwlwififirmware is what keeps it reachable.Verified on sintra
Cold boot on the final generation. Network up, crocus with glamor acceleration, no firmware errors, no X errors, GPU process stable with zero crashes and hardware GL mapped. Screen confirmed by eye.
Not verified
Only sintra. Douro is down pending a reflash and is the only Bay Trail; batm3 runs a different kernel and networks over WiFi. Both want their own
nixos-rebuild test.Separate problem this surfaced
batm3's nightly upgrade is failing and has been. It times out building the ATM app locally against the 60 s
nix.settings.timeout, because the app is in neitheraiolabs.cachix.orgnorcache.nixos.org. Nothing merged todevreaches that machine untilatm-app-*is published to the cachix. Raising the timeout would be the wrong fix.8899f4ef48to0347530511Force-pushed to drop the
fix/sintra-timezonemerge. I had merged it in before noticing #111, which takes the narrower approach to the same bug and explicitly supersedes the system-timezone route. Keeping both would have conflicted inflake.nix.So this PR is now purely the image-size and GPU work. #111 owns the timezone fix, and it applies cleanly on top of this — verified.
Rebuilt after the drop: sintra 3201 MB, douro 3156 MB, both with
tz=America/Guatemalaanddates=04:00untouched.Merge #111 first, then this one.
One correction to #111's deploy note
It expects the timer's last-run stamp to be newer than the new window's most recent occurrence, so
Persistent=truewon't cause a catch-up fire. On sintra right now that does not hold:04:00 Europe/Parisis20:00 CSTthe previous day. The most recent occurrence of that is Thu 20:00 CST, which is newer than the Thu 04:00 CST last-run stamp — so systemd should see a missed window and fire on switch.That is harmless provided both PRs are on
devbefore sintra next switches, since the catch-up would then rebuild what is already deployed. It is only dangerous in the gap where #111 is merged and this one is not: a catch-up run would revert the image work and install the new window at the same time.perf: cut the image 38%, turn GPU acceleration back on, fix sintra's timezoneto perf: cut the image 38% and turn GPU acceleration back on