高级检索
    廖晓坚, 杨者, 杨洪章, 屠要峰, 舒继武. 低CPU开销的低延迟存储引擎[J]. 计算机研究与发展, 2022, 59(3): 489-498. DOI: 10.7544/issn1000-1239.20210574
    引用本文: 廖晓坚, 杨者, 杨洪章, 屠要峰, 舒继武. 低CPU开销的低延迟存储引擎[J]. 计算机研究与发展, 2022, 59(3): 489-498. DOI: 10.7544/issn1000-1239.20210574
    Liao Xiaojian, Yang Zhe, Yang Hongzhang, Tu Yaofeng, Shu Jiwu. A Low-Latency Storage Engine with Low CPU Overhead[J]. Journal of Computer Research and Development, 2022, 59(3): 489-498. DOI: 10.7544/issn1000-1239.20210574
    Citation: Liao Xiaojian, Yang Zhe, Yang Hongzhang, Tu Yaofeng, Shu Jiwu. A Low-Latency Storage Engine with Low CPU Overhead[J]. Journal of Computer Research and Development, 2022, 59(3): 489-498. DOI: 10.7544/issn1000-1239.20210574

    低CPU开销的低延迟存储引擎

    A Low-Latency Storage Engine with Low CPU Overhead

    • 摘要: 近些年来,固态存储的硬件处理速率得到了极大改善.一块超低延迟的固态存储盘能在10 μs内处理4 KB大小的数据.加速I/O收割过程以构建低延迟的存储引擎是存储系统研究中的一个重要研究课题.传统存储系统通过硬件中断机制收割I/O,却引入了额外的上下文切换开销,延长了整体I/O处理时间.现有工作使用轮询机制以消除上下文切换,却要付出高昂的CPU开销.提出了一种低CPU开销的低延迟存储引擎NIO(nimble I/O),以充分发挥高性能固态存储盘的低延迟优势.NIO的核心思想是将大小I/O处理路径分离;大I/O使用硬件中断机制;小I/O引入惰性轮询机制,先睡眠一个变长时间间隔再持续轮询.NIO进一步提出了事务感知的I/O收割机制以降低事务的延迟,以及动态调整机制以应对上层应用负载以及设备内部活动的动态变化.实验显示在动态负载下,NIO与基于轮询的存储引擎性能相当,并能减少至少59%的CPU占用率.

       

      Abstract: The latency of solid-state drive (SSD) has improved dramatically in recent years. For example, an ultra-low latency SSD can process 4 KB data in 10 microseconds. With this low latency, how to reap the I/O completion efficiently becomes an important issue in modern storage systems. Traditional storage systems reap I/O completion through hardware interrupt, which introduces extra context switches overhead and further prolongs the overall I/O latency. Existing work use polling as an alternative to the hardware interrupt, thereby eliminating the context switches, but at the cost of high CPU consumption. This paper proposes a CPU-efficient and low-latency storage engine namely NIO, to take full advantage of the ultra-low latency SSDs. The key idea of NIO is to separate the I/O paths of short I/Os from that of long I/Os; NIO uses classic hardware interrupt for long I/Os, as polling long I/Os does not bring significant improvement but incurs huge CPU overhead; for short I/Os, NIO introduces lazy polling, which lets the I/O thread sleep for a variable time interval before continuously polling, thereby achieving low latency with low CPU consumption. NIO further introduces transaction-aware I/O reaping mechanism to reduce the transaction latency, and a dynamic adjustment mechanism to cope with the dynamic changes of the workload and internal activities of the device. Under dynamic workloads, NIO shows comparable performance against polling-based storage engine while reducing the CPU consumption by at least 59%.

       

    /

    返回文章
    返回