Towards Copy-Offload in Linux NVMe

Library Content Type:
Publish Date: 
Tuesday, September 28, 2021
Event Name: 
Event Track:

The de-facto way of copying data in I/O stack has been pulling it from one location followed by pushing to another. The farther the application, requiring copy, is from storage, the longer it takes for trip to be over. With copy-offload the trip gets shorter as the storage device presents an interface to do internal data-copying. This enables the host to optimize the pull-and-push method, freeing up the host CPU, RAM, and the fabric elements. The copy-offload interface has existed in SCSI storage for at least a decade through XCOPY but faced insurmountable challenges in getting into Linux I/O stack. As for NVMe storage, copy-offload made its way into the main specification with a new Simple Copy Command (SCC) recently. This has stimulated a renewed interest and efforts toward copy-offload in Linux community. This talk presents copy-offload work in Linux, with a focus on NVMe simple-copy command. We outline the previous challenges, and extensively cover the current upstream efforts towards enabling SCC; we believe these efforts can sprout more copy-offload standardization advancements. We also elaborate the kernel/app interface and the use-cases that are being built and discussed in Linux I/O stack. The talk will conclude with the evaluation data comparing SCC with regular read-write based copy.

  • NVMe Simple-Copy-Command
  • Past copy-offload work in Linux
  • upstream-kernel work towards SCC/copy-offload

Watch video: