import rdma: zero-copy networking with RDMA and Python Andy Grover @groveronline http://groveronline.com http://blogs.oracle.com/linuxnstuff
Plan Sockets, RDMA, and RDMA Sockets
Python and performance
Issues I ran into
(Questions anytime.)
Socket Example client: sock.sendto(server, “get data.tgz”)
server: recvfrom() -> (“get data.tgz”)
server: data = open(“data.tgz”).read()
server: sock.sendto(client, “OK “ + data)
client: recvfrom() -> data
Sockets Sending data from server (S) to client (C), how many buffer copies are performed on S? On C?
2 on S, 2 on C
S: read from user buffer, write to kernel buffer by OS
S: read from kernel buffer by HW
C: write to kernel buffer by HW
C: read from kernel buffer, write to user buffer (OS)
So what? Socket interface is easy to use
Extra copy on each side consumes CPU
Also consumes 3x RAM bandwidth!
What do we do???
Direct Data Placement (RDMA)

import rdma: zero-copy networking with RDMA and Python