Boost Bo sting ing Qu Quasi si-Asynchr Asynchronous onous I/O /O for Bet Better er Res espo ponsiv nsiveness eness in in Mo Mobi bile le De Devices ices FAST 2015 Daeho Jeong *+ , Youngjae Lee + , Jin-Soo Kim * Samsung Co., Suwon, Korea + Sungkyunkwan University 1
Outline Introduction Problem and Motivation Linux Kernel I/O Path Quasi-Asynchronous I/O Boosting QASIOs Evaluation Conclusion 2
Introduction 3
Problem and Motivation Launching the contacts APP 4
Problem and Motivation Burst Mode in the camera APP 30 shots by touching and holding on the shot icon When the image size is large, performance is degraded by 19% Installing the angry birds APP 4GB file is written in the background Average installation time increases by 35% 5
Problem and Motivation During installing or launching an app Many synchronous I/Os , such as read()’s or write ()’s followed by fsync() are issued Priority synchronous I/Os > asynchronous I/Os The progress of a file system operation is blocked by undispatched asynchronous I/Os 6
Linux Kernel I/O Path Ext4 orderd 7
Quasi-Asynchronous I/O Synchronous I/O The calling task is blocked until the I/O request is completed Asynchronous I/O Quasi-Asynchronous I/O(QASIO) The I/O which is seemingly asynchronous but has the synchronous property because one or more tasks are waiting for its completion 8
Types of Dependencies on QASIO 9
Direct Dependencies D meta : When modifying a metadata page D data : When modifying a data page D sync : When guaranteeing data to be written back D discard : When completing discard commands deallocate block 10
D meta 11
D meta 12
D meta 13
D meta 14
D meta 15
D sync 16
D sync 17
D sync 18
D sync 19
D sync 20
D sync 21
Indirect Dependencies I jhandle : When unable to obtain a journal handle I jcommit : When unable to complete fsync() 22
I jhandle 23
I jhandle 24
I jhandle 25
I jhandle 26
I jhandle 27
I jhandle 28
How to Boost a QASIO Req.(1): When a task is waiting for an asynchronous I/O’s completion, the kernel gives information about QASIO to the I/O scheduler Req.(2): The I/O scheduler should prioritize them among asynchronous I/Os based on the hint 29
Implementation 30
Implementation 1 31
Detecting D meta Before a task modifies a metadata page, it obtains an exclusive lock to the metadata page using the lock_buffer() kernel function lock_buffer() Asy IO 32
Detecting D data and D sync 33
Detecting D discard Ext4_free_data_callback() function is called whenever the block deallocation is required at the end of journal commit 34
Implementation 2 35
Evaluation Samsung Galaxy S5 Exynos 5422 (quad Cortex-A15 & quad Cortex-A7) 2GB DRAM 16GB eMMC storage (S.W .: 54.5MB/s, R.W .: 10.4MB/s) Android platform version 4.4.2 (KitKat) Linux kernel version 3.10.9 36
Microbenchmarks M1 creat() -> write(4KB) -> fsync() -> close() 500 times creat() and fsync() D meta QASIO 37
Microbenchmarks M2 creat() -> write(1MB) -> fsync() -> close() 200 times 38
Microbenchmarks M3 creat() write(1KB) until file size reaches 300MB write() D data QASIO 39
Microbenchmarks M4 200M -> truncate(2M ) -> 0 -> write() -> 200M -> close() 500 times truncate() D sync QASIO 40
Microbenchmarks M5 creat() -> write(4KB) -> fsync() -> close() another task truncates an existing 8GB file and writes 8GB of data again to the file I jcommit D discard QASIO 41
Real-life Scenarios Launching the contacts APP 44.8% 42
Real-life Scenarios Burst Mode in the camera APP 14.4% 43
Real-life Scenarios Installing the angry birds APP 11.5% 44
Conclusions Introduces a new type of I/O called Quasi-Asynchronous I/O(QASIO) A novel scheme to detect QASIOs and boost them in the Linux kernel Boosting QASIOs is effective in improving the responsiveness of file system operations 45
Recommend
More recommend