urdma a remote direct memory access verbs provider using
play

urdma: A Remote Direct Memory Access verbs provider using DPDK - PowerPoint PPT Presentation

x urdma: A Remote Direct Memory Access verbs provider using DPDK PATRICK MACARTHUR UNIVERSITY OF NEW HAMPSHIRE SEPTEMBER 6, 2018 Acknowledgements urdma was initially developed during an internship with the IBM Zurich Research Laboratory.


  1. x urdma: A Remote Direct Memory Access verbs provider using DPDK PATRICK MACARTHUR UNIVERSITY OF NEW HAMPSHIRE SEPTEMBER 6, 2018

  2. Acknowledgements • urdma was initially developed during an internship with the IBM Zurich Research Laboratory. The author would like to thank Dr. Bernard Metzler for the opportunity as well as Jonas Pfefferle, Patrick Stuedi, and Animesh Trivedi for their advice and critique on urdma. • The author would like to thank Robert Russell and Timothy Carlin for their advice and critique on this report and the University of New Hampshire InterOperability Laboratory for the use of their RDMA cluster for the development, maintenance, and testing of urdma and UNH EXS. • This material is based upon work supported by the National Science Foundation under Grant No. OCI-1127228 and under the National Science Foundation Graduate Research Fellowship Program under award number DGE-0913620. 2

  3. Agenda • Background • Implementation Evaluation • Summary • 3

  4. Background

  5. Background: RDMA (Remote Direct Memory Access) • Message-oriented “Zero - copy”: direct transfer between remote application virtual memory regions • with no intermediate data copies (on the hosts) Requires application to pre-register memory • • Kernel bypass: userspace application has direct access to network adapter Asynchronous: data transfers occur in parallel with application threads, using • OpenFabrics Alliance (OFA) verbs API Transfer operations • SEND/RECV • RDMA WRITE: push data to remote memory region • RDMA READ: pull data from remote memory region • Data structures: Queue Pair (QP), Completion Queue (CQ) • • Standards: InfiniBand, RoCE, iWARP 5

  6. urdma: Userspace Software RDMA • Software emulation of RDMA using DPDK • Goals Low latency, high throughput • Run on commodity Ethernet NIC • Run unmodified verbs applications • Perform data transfers in userspace using DPDK • • Prior work: softiwarp/softroce Perform data transfer in kernel space using kernel sockets • • Why urdma? Ease of development, easy to use as a development vehicle for new RDMA • features Storage applications; integration with SPDK (Storage Performance Development • Kit) 6

  7. Implementation

  8. urdma: Components urdmad App Userspace urdma_prov Multi-process application DPDK • urdma_kmod : Loadable kernel V module for RDMA CM support E R • urdmad : DPDK primary process B • urdma_prov : User verbs provider S urdma_kmod library; applications run as DPDK Kernel space secondary process Ethernet NIC 8

  9. urdma: Protocol Standard iWARP urdma RDMAP RDMAP DDP DDP MPA TRP • Implements iWARP DDP and RDMAP TCP UDP protocols IP IP • Runs over UDP transport protocol Ethernet Ethernet TRP (Trivial Reliability Protocol) as • thin reliability shim Avoid byte-stream nature and state • machine of TCP 9

  10. urdma: Packet Processing • urdmad assigns each RDMA queue urdmad urdma pair a hardware receive/transmit kmod Ethernet queue KNI To allow verbs applications to access • the NIC independently Ethernet NIC hardware filters used to • separate packets into RX queues Using Flow Director or ntuple • NIC filtering urdma verbs urdmad forwards all unfiltered packets prov app • on each interface to kernel For each established connection, • packets filtered to specific receive queue — received directly by verbs application via urdma_prov 10

  11. urdma initialization issues: rte_eal_init() • As a verbs provider library, we want DPDK to be invisible to the user application We call rte_eal_init() in our own • implementation • Our provider code is only run if urdma pthread_create() kernel module loaded and urdmad Main thread Master lcore master process started • Specific issues with rte_eal_init() Takes command-line arguments • User thread 1 Verbs calls We construct our own fake argument list • Changes CPU affinity of calling thread • We create a new thread and call • … rte_eal_init() from that thread Tell rte_eal_init() not to create other • lcores All verbs applications must run as the • User thread n same user (not necessarily root) 11

  12. urdma_prov: Data Transfer • Data transfer done in background progress thread Separates DPDK operations from application threads • Allows progress for RDMA READ and RDMA WRITE outside of verbs calls • Inter-thread communication done via ring queues • ➢ Enqueue one entry at a time ➢ Dequeue entries in bulk Progress thread Time User thread ibv_post_send QP Data transfer CQ ibv_poll_cq 12

  13. urdma_kmod: Connection Establishment (KNI) liburdma Time app urdma_kmod urdmad RDMA Connect CM Packet Exchange QP connected Setup hardware packet filters QP Ready to recv RDMA CM Established Event urdmad must enable receive filter before first packet arrives 13

  14. Evaluation

  15. Performance Test Setup 2 pairs of systems with Ubuntu 16.10 with Linux 4.8.0-46-generic kernel, DPDK 16.07.2, PCIe generation 3 urdma/softiwarp (Software Implementations) • Dual Intel Xeon ES-2630 v4 CPUs @ 2.20GHz • 64 GB DDR4 RAM • Intel XL710 40GbE NIC (firmware v5.05) • • Reference iWARP Hardware Implementation Dual Intel Xeon E5 2609 CPUs • 64 GB DDR3 RAM • Chelsio T580-LP-CR Unified Wire Ethernet controller (firmware v0.271.9472) • • Applications used perftest version 3.0+0.18.gb464d59-1 • 15

  16. Perftest Latency: urdma vs. Chelsio iWARP NIC urdma (Software) Hardware Worse Better 16

  17. Perftest Throughput: urdma vs. Chelsio iWARP NIC urdma (Software) Hardware Better Worse 17

  18. Summary

  19. Summary • urdma Software emulation of RDMA • Runs unmodified RDMA verbs applications • Performs all data transfer in userspace • No dependency on specific hardware • Achieves reasonable performance • • Future work Zero copy sends? • Using urdma for NVMf traffic • Integration with emerging storage class memory technologies • 19

  20. “ Thanks! ” Questions? Patrick MacArthur <patrick@patrickmacarthur.net> urdma download: https://github.com/zrlio/urdma

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend