Abstract
F2FS improves performance and longevity through out-place updates, and is now wildly used in the real world. However, additional overhead is introduced to support such design, which leads to a significant performance bottleneck when performing fsync(). Through a series of experimental observations, the paper reveals the impact of dnode page writeback on throughput and fsync() latency. The serial flushing of data pages and dnode pages in the current fsync() design limits the potential for parallel write back and fails to fully utilize the parallelism of flash devices. We then deeply look into the current fsync() design and find the main difficulty of paralleling fsync() is the dependency between dnode pages and data pages. Based on these findings, we propose a new dual-thread design that significantly reduces the total latency of fsync() and improves throughput by pre-allocating data pages. Then, we give two optimizations to reduce overhead. A red-black tree is introduced to cache old block addresses for better node management performance. A linked list is introduced to avoid contention of the page cache for better page performance. We implemented our method in Linux Kernel, and the experimental results show that our dual-thread design can decrease fsync() latency and increase write throughput in different situations.
| Original language | English |
|---|---|
| Title of host publication | 2024 International Conference on Networking, Architecture and Storage, NAS 2024 - Proceedings |
| Publisher | Institute of Electrical and Electronics Engineers Inc. |
| Edition | 2024 |
| ISBN (Electronic) | 9798331520502 |
| DOIs | |
| State | Published - 2024 |
| Event | 17th International Conference on Networking, Architecture and Storage, NAS 2024 - Zhuhai, China Duration: 29 Nov 2024 → 1 Dec 2024 |
Conference
| Conference | 17th International Conference on Networking, Architecture and Storage, NAS 2024 |
|---|---|
| Country/Territory | China |
| City | Zhuhai |
| Period | 29/11/24 → 1/12/24 |
Keywords
- F2FS
- fsync
- multi-thread