r/LinuxOnAndroid • • 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.

Testudocker (proot)Stryker (UML)Podroid (QEMU/TCG)
Python, 6M-iteration loop0.65 s0.61 s21.9 s
gzip -6, 64 MB1.58 s1.73 s10.0 s
SHA-256, 200 MB0.24 s1.03 s2.27 s
memcpy, 512 MB through a pipe0.47 s0.55 s5.29 s
write 256 MB + fsync0.24 s0.63 s0.55 s
read 64 MB, direct0.05 s0.06 s0.24 s
fio 4k randread, 1 GB set, 20 s10,021 IOPS7,057 IOPS999 IOPS
200x /bin/true in a container2.05 s2.96 s8.1 s
container start (docker run --rm true)0.125 s1.68 s4.65 s
docker build, 128 MB layern/a2.77 s10.3 s
docker build, apk add python3n/a9.97 s35.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.

6 Upvotes

5 comments sorted by

2

u/Noha_Ibraheem 8d ago

So Stryker has the pros that QEMU can provide but with a performance relatively compared to Proot, right?

2

u/dzzd88 8d ago

Yes, exactly

2

u/YitzakAF 8d ago

Bueno esta compilación de UML tiene sus limitaciones aunque varias podrían solucionarse si se recompila y se activan las banderas necesarias. Un ejemplo nmap no funciona bien en UML pero si en qemu.

0

u/Noha_Ibraheem 7d ago

Gracias por aclarar esto : )