You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I benchmarked all four linked PRs, plus the current quattro tip as a baseline and an unpublished btrfspack branch, under one harness on 2026-09-04. Every install is an encrypted (LUKS) full-disk autoinstall of the same account and layout. Timing is the installer's own record (state.json span for the Python branches, the omarchy-install-milestone BEGIN→END journal span for the bash branches) — the number each branch's own dashboard renders.
These are the QEMU results. Real-hardware (ThinkPad X200) numbers will follow in a later comment.
NOTE1: The bash branches pay a mirror-verification cost off slow media. #132 and btrfspack verify the whole offline mirror before touching the disk, which is cheap from a fast source, but dominates the install off a slow USB stick.
NOTE 2: Integrity caveat: #113 and #132 land the system on btrfs, which computes and stores a checksum for every block of written data — real integrity work that the raw-restore approaches do not do, and part of what their numbers include. btrfs discourages O_DIRECT, which interacts badly with checksumming: see https://btrfs.readthedocs.io/en/latest/Checksumming.html.
NOTE3: Verification of the root image and offline mirror happens in the background. Parts of the verification on a interactive install will be done. So this is absolute worst case. Including a pause before starting the install would emulate a user doing a interactive install.
What was built
Each ISO was built the same day from the same edge mirror with bin/omarchy-iso-make --keep-pkg-cache.
Run-to-run spread was tight (for example #145/file 22.8–22.9, quattro/USB 67.9–69.0). All runs installed the expected package set and booted into the encrypted system.
Method notes
The bash branches (Install with archinstall-bash: moving towards systemd as the orchestrator #132, btrfspack) measure a slightly wider span than the Python branches: their milestone marks the installer handover through the timing-record write, where the Python span is the phase run only. Both are each branch's own reported "installed in" figure.
The same encrypted installs from the QEMU comment above, run on real, deliberately slow hardware. The QEMU numbers are best cases on a fast host; this is the other end of the range.
Speed up installs with compressed qcow2 restores and parallel finalization #145 loses the lead it had in QEMU. From a fast source in QEMU it was the fastest at 22.9 s; here it is second-slowest. Its parallel finalization has only two slow cores to spread across, and the qemu-img restore plus the LUKS lifecycle work costs more than a plain btrfs receive. The optimization is real but it is tuned for a machine the X200 is not.
Install with archinstall-bash: moving towards systemd as the orchestrator #132 is slow off this medium. It verifies the entire offline mirror before touching the disk, reading it off the USB 2.0 stick — the same penalty it pays off a slow stick in QEMU. On fast media that verification is nearly free; here it dominates.
QEMU install time, with 30 s of user input included
The install-only numbers leave out the part a real user actually sits through: filling in the interactive installer. This adds a fixed 30 s of data entry to each candidate — a stand-in for a person answering the wizard, applied equally to all — so the totals read as end-to-end "how long from starting the installer to a booted, encrypted system."
Same setup as the earlier QEMU comment: KVM on a Ryzen 9 9950X host, guest 16 vCPU / 16 GiB, Q35/OVMF, encrypted (LUKS) full-disk autoinstall, target a raw partition on a Samsung 990 PRO (cache=none). Builds are the same-day ISOs: quattro 2673c613d, #108142f683a9, #1130dcc9baf0, #1328a9d209d9, #145dbffaa6c6, btrfspack 6ac4cb48f. Three runs per candidate; install times are the installer's own record.
Source: local filesystem (ISO on the host disk, cache=none)
The 30 s is a stand-in, not a measurement; a manual pass through this installer landed in that range. Bash branches (#132, btrfspack) record timing as journal install milestones and their per-run package counts were not captured (the target unmounts before collection); they install the same invariant root-image set as #113.
We have landed so many changes, happy to get your feedback after we release 4.5 rc2! It was more testing and installs than I ever imagined, over 100 installs on real hardware and even more in QEMU. All code is from F1 branch (PR #216).
Activity
hegjon commentedon Sep 4, 2026
Install-speed benchmark of the experiments (QEMU)
I benchmarked all four linked PRs, plus the current
quattrotip as a baseline and an unpublishedbtrfspackbranch, under one harness on 2026-09-04. Every install is an encrypted (LUKS) full-disk autoinstall of the same account and layout. Timing is the installer's own record (state.jsonspan for the Python branches, theomarchy-install-milestoneBEGIN→END journal span for the bash branches) — the number each branch's own dashboard renders.These are the QEMU results. Real-hardware (ThinkPad X200) numbers will follow in a later comment.
NOTE1: The bash branches pay a mirror-verification cost off slow media. #132 and btrfspack verify the whole offline mirror before touching the disk, which is cheap from a fast source, but dominates the install off a slow USB stick.
NOTE 2: Integrity caveat: #113 and #132 land the system on btrfs, which computes and stores a checksum for every block of written data — real integrity work that the raw-restore approaches do not do, and part of what their numbers include. btrfs discourages
O_DIRECT, which interacts badly with checksumming: see https://btrfs.readthedocs.io/en/latest/Checksumming.html.NOTE3: Verification of the root image and offline mirror happens in the background. Parts of the verification on a interactive install will be done. So this is absolute worst case. Including a pause before starting the install would emulate a user doing a interactive install.
What was built
Each ISO was built the same day from the same edge mirror with
bin/omarchy-iso-make --keep-pkg-cache.2673c613d142f683a90dcc9baf08a9d209d9dbffaa6c66ac4cb48f+ local changesHardware
QEMU/KVM on a Ryzen 9 9950X host (186 GiB RAM). Guest: 16 vCPU, 16 GiB, Q35/OVMF. Two medium/target combinations:
cache=none/dev/nvme0n1p3, Samsung 990 PRO 2TB (S7DRNJ0X926544D), raw partition,cache=noneE0D55EA573F217A1394E034D), USB 3Results — install time in seconds (mean of 3, encrypted)
Run-to-run spread was tight (for example #145/file 22.8–22.9, quattro/USB 67.9–69.0). All runs installed the expected package set and booted into the encrypted system.
Method notes
hegjon commentedon Sep 4, 2026
Follow-up: real hardware (ThinkPad X200)
The same encrypted installs from the QEMU comment above, run on real, deliberately slow hardware. The QEMU numbers are best cases on a fast host; this is the other end of the range.
Machine
0373519050006146) on a USB 2.0 port (~2–3 MB/s writes — the reason the absolute times are large).S0TYN6AC526340).Builds (same-day, same edge mirror): quattro
2673c613d, #108142f683a9, #1130dcc9baf0, #1328a9d209d9, #145dbffaa6c6, btrfspack6ac4cb48f(+ local changes).Results — install time, one run each
Every install completed with the expected package set and booted into the encrypted system.
What stands out
qemu-imgrestore plus the LUKS lifecycle work costs more than a plainbtrfs receive. The optimization is real but it is tuned for a machine the X200 is not.Notes
O_DIRECT: https://btrfs.readthedocs.io/en/latest/Checksumming.htmlhegjon commentedon Sep 4, 2026
QEMU install time, with 30 s of user input included
The install-only numbers leave out the part a real user actually sits through: filling in the interactive installer. This adds a fixed 30 s of data entry to each candidate — a stand-in for a person answering the wizard, applied equally to all — so the totals read as end-to-end "how long from starting the installer to a booted, encrypted system."
Same setup as the earlier QEMU comment: KVM on a Ryzen 9 9950X host, guest 16 vCPU / 16 GiB, Q35/OVMF, encrypted (LUKS) full-disk autoinstall, target a raw partition on a Samsung 990 PRO (
cache=none). Builds are the same-day ISOs: quattro2673c613d, #108142f683a9, #1130dcc9baf0, #1328a9d209d9, #145dbffaa6c6, btrfspack6ac4cb48f. Three runs per candidate; install times are the installer's own record.Source: local filesystem (ISO on the host disk,
cache=none)Source: USB stick (DataTraveler 3.0, USB 3)
Reading it
The 30 s is a stand-in, not a measurement; a manual pass through this installer landed in that range. Bash branches (#132, btrfspack) record timing as journal install milestones and their per-run package counts were not captured (the target unmounts before collection); they install the same invariant root-image set as #113.
emestee commentedon Sep 28, 2026
Hello,
I have my own variant - would you be willing to test it as well? Not published yet.
hegjon commentedon Sep 28, 2026
Go ahead and share your code, I plan to re-run next week with some other changes I want to tests
emirb commentedon Oct 25, 2026
We have landed so many changes, happy to get your feedback after we release 4.5 rc2! It was more testing and installs than I ever imagined, over 100 installs on real hardware and even more in QEMU. All code is from F1 branch (PR #216).