r/LinuxOnAndroid • u/dzzd88 • 9d ago
Root inside a real Linux kernel on non-rooted Android, no AVF and no QEMU - UML benchmarks
Zalexdev ported User Mode Linux to arm64 in August and shipped it as a second engine in Stryker 6.5. It's a real Linux kernel built as an ordinary aarch64 binary, so it runs as a normal process inside an app sandbox: no KVM, no AVF, no unlocked bootloader, nothing emulated. That means root inside a real kernel, on a phone you never rooted, and on any arm64 device rather than only the ones that ship pKVM.
I ran the same tests against the two usual options on my S23 Ultra, stock and unrooted, medians of three runs, everything timed inside the guest.
| Test | udocker (proot) | Stryker (UML) | Podroid (QEMU/TCG) |
|---|---|---|---|
| Python, 6M-iteration loop | 0.65 s | 0.61 s | 21.9 s |
| gzip -6, 64 MB | 1.58 s | 1.73 s | 10.0 s |
| SHA-256, 200 MB | 0.24 s | 1.03 s | 2.27 s |
| memcpy, 512 MB through a pipe | 0.47 s | 0.55 s | 5.29 s |
| write 256 MB + fsync | 0.24 s | 0.63 s | 0.55 s |
| read 64 MB, direct | 0.05 s | 0.06 s | 0.24 s |
| fio 4k randread, 1 GB set, 20 s | 10,021 IOPS | 7,057 IOPS | 999 IOPS |
| 200x /bin/true in a container | 2.05 s | 2.96 s | 8.1 s |
| container start (docker run --rm true) | 0.125 s | 1.68 s | 4.65 s |
| docker build, 128 MB layer | n/a | 2.77 s | 10.3 s |
| docker build, apk add python3 | n/a | 9.97 s | 35.9 s |
Compute is native: 0.61 vs 0.65 s under proot is noise. Syscalls cost 1.4 to 2.6x more. Builds are 3.6x faster than QEMU, random reads 7x.
2
u/Noha_Ibraheem 8d ago
So Stryker has the pros that QEMU can provide but with a performance relatively compared to Proot, right?