Request-aware Cooperative I/O Scheduling for Scale-out Database Applications


Hyungil Jo and Sung-hun Kim, Sungkyunkwan University; Sangwook Kim, Apposha; Jinkyu Jeong and Joonwon Lee, Sungkyunkwan University


Interactive data center applications suffer from the tail latency problem. Since most modern data center applications take the sharded architecture to serve scale-out services, a request comprises multiple sub-requests handled in individual back-end nodes. Depending on the state of each back-end node, a node may issue multiple I/Os for a single sub-request. Since traditional I/O scheduling operates in an application-agnostic manner, it sometimes causes a long latency gap between the responses of sub-requests, thereby delaying the response to endusers. In this paper, we propose a request-aware cooperative I/O scheduling scheme to reduce the tail latency of a database application. Our proposed scheme captures request arrival order at the front-end of an application and exploits it to make a decision for I/O scheduling in individual back-end nodes. We implemented a prototype based on MongoDB and the Linux kernel and evaluated it with a read-intensive scan workload. Experimental results show that our proposed scheme effectively reduces the latency gap between sub-requests, thereby reducing the tail latency.

Open Access Media

USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone. Support USENIX and our commitment to Open Access.

@inproceedings {203382,
author = {Hyungil Jo and Sung-hun Kim and Sangwook Kim and Jinkyu Jeong and Joonwon Lee},
title = {Request-aware Cooperative {I/O} Scheduling for Scale-out Database Applications},
booktitle = {9th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage 17)},
year = {2017},
address = {Santa Clara, CA},
url = {},
publisher = {USENIX Association},
month = jul