io_uring in Android
summary
Android uses io_uring with Q depth 32 to cut snapshot-merge CPU from ~50–55% of operation time to about 10–12%, and Pixel 6 sees an incremental OTA (≈200 MB) merge drop from minutes (often 2–3, sometimes 10–20) to 60–75 seconds. A minimal prototype swaps DM user for a ublk user-space block driver, stacking dm-linear for lifecycle switchover; challenges include driver removal after merge and queuing across the SELinux transition. SQPOLL is explored but may hog a CPU.
AI-written summary · about
chapters (9)
- 0:00Introduction to io_uring in Android
- 1:06Virtual AB and snapshot merging
- 2:53Performance overhead of syscalls
- 3:33io_uring benefits for snapshot merge
- 4:37DM user and system impact
- 6:02Exploring ublk user space block driver
- 8:54Challenges with ublk driver
- 10:42Advantages of ublk adoption
- 11:09Q&A: io_uring adoption gotchas
related talks
37mMemory Hotplug on Android
08mAndroid: memcg v1 - v2
42mAndroid Internals for Developers
25mReducing Android Boot Times: Evaluating Proactive File Prefetching
08h 39mLivestream | Day 2, theater 2
41mUnifying Android and Mainline Kernel Graphics Stack
40mAndroid Internals
27mBad io_uring: A New Era of Rooting for Android
