ARTICLE AD BOX
I want to benchmark raw UFS device performance on an Android phone, as close to the underlying block device behavior as possible, ideally bypassing filesystem effects.
On standard Linux systems, fio with ioengine=libaio and O_DIRECT is commonly used for this purpose. On Android, however, the environment is different in several ways:
fio is typically cross-compiled using the Android NDK and linked against Bionic instead of glibc libaio is not part of the standard Android userspace accessing block devices under /dev/block usually requires root it is unclear whether CONFIG_AIO is enabled in typical Android kernelsGiven these constraints, I have the following questions:
Is it feasible to run fio with ioengine=libaio on Android, for example by static linking libaio or using a custom userspace? If libaio is not practical on Android, what is the recommended way to benchmark raw UFS performance? using fio with sync/psync and direct I/O kernel-side benchmarks or tracing vendor-provided or platform-specific toolsI am mainly interested in sequential and random bandwidth and latency, and would like to get results as close as possible to the raw UFS device behavior.
