x
urdma: A Remote Direct Memory Access verbs provider using DPDK
PATRICK MACARTHUR UNIVERSITY OF NEW HAMPSHIRE SEPTEMBER 6, 2018
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.
x
urdma: A Remote Direct Memory Access verbs provider using DPDK
PATRICK MACARTHUR UNIVERSITY OF NEW HAMPSHIRE SEPTEMBER 6, 2018
2
Acknowledgements
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.
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.
Foundation under Grant No. OCI-1127228 and under the National Science Foundation Graduate Research Fellowship Program under award number DGE-0913620.
3
Agenda
Background
5
Background: RDMA (Remote Direct Memory Access)
with no intermediate data copies (on the hosts)
OpenFabrics Alliance (OFA) verbs API
6
urdma: Userspace Software RDMA
features
Kit)
Implementation
8
urdma: Components
Multi-process application
module for RDMA CM support
library; applications run as DPDK secondary process
App urdma_prov
DPDK
V E R B S
urdma_kmod
Userspace
Kernel space
urdmad
Ethernet NIC
9
urdma: Protocol
protocols
thin reliability shim
machine of TCP RDMAP DDP TRP UDP IP Ethernet RDMAP DDP MPA TCP IP Ethernet Standard iWARP urdma
10
urdma: Packet Processing
pair a hardware receive/transmit Ethernet queue
the NIC independently
separate packets into RX queues
filtering
packets filtered to specific receive queue—received directly by verbs application via urdma_prov
urdma kmod urdmad
NIC
urdma prov verbs app
KNI
11
urdma initialization issues: rte_eal_init()
DPDK to be invisible to the user application
implementation
kernel module loaded and urdmad master process started
rte_eal_init() from that thread
lcores
same user (not necessarily root)
Main thread Master lcore
pthread_create()
User thread 1 User thread n … Verbs calls
12
urdma_prov: Data Transfer
➢ Enqueue one entry at a time ➢ Dequeue entries in bulk
ibv_post_send
Time
Data transfer
QP
CQ ibv_poll_cq
Progress thread User thread
13
urdma_kmod: Connection Establishment
liburdma urdmad urdma_kmod
QP connected QP Ready to recv RDMA CM Established Event
RDMA Connect app CM Packet Exchange Setup hardware packet filters Time
urdmad must enable receive filter before first packet arrives
(KNI)
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
16
Perftest Latency: urdma vs. Chelsio iWARP NIC
urdma (Software) Hardware
Worse Better
17
Perftest Throughput: urdma vs. Chelsio iWARP NIC
urdma (Software) Hardware
Better Worse
Summary
19
Summary
Thanks!
Patrick MacArthur <patrick@patrickmacarthur.net>
urdma download: https://github.com/zrlio/urdma