uDMA: An Efficient User-Level DMA for NVMe SSDs
The Non-Volatile Memory Express (NVMe) SSD provides high I/O performance for current computer systems, and direct memory access (DMA) is the critical enabling mechanism for direct I/O. However, the lengthy I/O stack becomes a new bottleneck that degrades the potential of NVMe SSD. This paper reveals...
Main Authors: | , , , |
---|---|
Format: | Article |
Language: | English |
Published: |
MDPI AG
2023-01-01
|
Series: | Applied Sciences |
Subjects: | |
Online Access: | https://www.mdpi.com/2076-3417/13/2/960 |
_version_ | 1827628959889620992 |
---|---|
author | Jinbin Zhu Liang Wang Limin Xiao Guangjun Qin |
author_facet | Jinbin Zhu Liang Wang Limin Xiao Guangjun Qin |
author_sort | Jinbin Zhu |
collection | DOAJ |
description | The Non-Volatile Memory Express (NVMe) SSD provides high I/O performance for current computer systems, and direct memory access (DMA) is the critical enabling mechanism for direct I/O. However, the lengthy I/O stack becomes a new bottleneck that degrades the potential of NVMe SSD. This paper reveals that existing user-level DMA introduces additional overhead for pinning memory used by DMA from the user space. Moreover, it cannot adapt to I/O requests of different data sizes. This paper proposes an efficient and dynamically adaptive user-level DMA (uDMA) mechanism that can adapt to I/O requests for different data sizes and lighten the I/O software stack by amortizing per-request latency. The critical component of uDMA is the pinned memory pool, which avoids frequently pinning new memory blocks by reusing allocated and pinned memory blocks. In addition, it effectively connects the discrete pinned memory blocks by the scatter/gather lists, improving the utilization of the pinned memory pool. Compared with the latest user-level DMA method, uDMA has an improvement of at least 17% under various data sizes. |
first_indexed | 2024-03-09T13:43:00Z |
format | Article |
id | doaj.art-2482aebc98c34533b64c18224ec2da69 |
institution | Directory Open Access Journal |
issn | 2076-3417 |
language | English |
last_indexed | 2024-03-09T13:43:00Z |
publishDate | 2023-01-01 |
publisher | MDPI AG |
record_format | Article |
series | Applied Sciences |
spelling | doaj.art-2482aebc98c34533b64c18224ec2da692023-11-30T21:04:10ZengMDPI AGApplied Sciences2076-34172023-01-0113296010.3390/app13020960uDMA: An Efficient User-Level DMA for NVMe SSDsJinbin Zhu0Liang Wang1Limin Xiao2Guangjun Qin3State Key Laboratory of Software Development Environment, Beihang University, Beijing 100191, ChinaState Key Laboratory of Software Development Environment, Beihang University, Beijing 100191, ChinaState Key Laboratory of Software Development Environment, Beihang University, Beijing 100191, ChinaSmart City College, Beijing Union University, Beijing 100101, ChinaThe Non-Volatile Memory Express (NVMe) SSD provides high I/O performance for current computer systems, and direct memory access (DMA) is the critical enabling mechanism for direct I/O. However, the lengthy I/O stack becomes a new bottleneck that degrades the potential of NVMe SSD. This paper reveals that existing user-level DMA introduces additional overhead for pinning memory used by DMA from the user space. Moreover, it cannot adapt to I/O requests of different data sizes. This paper proposes an efficient and dynamically adaptive user-level DMA (uDMA) mechanism that can adapt to I/O requests for different data sizes and lighten the I/O software stack by amortizing per-request latency. The critical component of uDMA is the pinned memory pool, which avoids frequently pinning new memory blocks by reusing allocated and pinned memory blocks. In addition, it effectively connects the discrete pinned memory blocks by the scatter/gather lists, improving the utilization of the pinned memory pool. Compared with the latest user-level DMA method, uDMA has an improvement of at least 17% under various data sizes.https://www.mdpi.com/2076-3417/13/2/960NVMe SSDuser-level DMAscatter/gather listspinned memory pool |
spellingShingle | Jinbin Zhu Liang Wang Limin Xiao Guangjun Qin uDMA: An Efficient User-Level DMA for NVMe SSDs Applied Sciences NVMe SSD user-level DMA scatter/gather lists pinned memory pool |
title | uDMA: An Efficient User-Level DMA for NVMe SSDs |
title_full | uDMA: An Efficient User-Level DMA for NVMe SSDs |
title_fullStr | uDMA: An Efficient User-Level DMA for NVMe SSDs |
title_full_unstemmed | uDMA: An Efficient User-Level DMA for NVMe SSDs |
title_short | uDMA: An Efficient User-Level DMA for NVMe SSDs |
title_sort | udma an efficient user level dma for nvme ssds |
topic | NVMe SSD user-level DMA scatter/gather lists pinned memory pool |
url | https://www.mdpi.com/2076-3417/13/2/960 |
work_keys_str_mv | AT jinbinzhu udmaanefficientuserleveldmafornvmessds AT liangwang udmaanefficientuserleveldmafornvmessds AT liminxiao udmaanefficientuserleveldmafornvmessds AT guangjunqin udmaanefficientuserleveldmafornvmessds |