Skip to content

Instantly share code, notes, and snippets.

@toddlipcon
Created April 11, 2020 00:08
Show Gist options
  • Save toddlipcon/6ddc5527c53082c781fd7d40fc996bae to your computer and use it in GitHub Desktop.
Save toddlipcon/6ddc5527c53082c781fd7d40fc996bae to your computer and use it in GitHub Desktop.
Legend
===================
Methods:
fd: client sends a file descriptor for the server to fill
s-write: server writes data the passed fd using write() syscall
s-mmap: server mmaps() the passed fd and writes using memset()
s-reuse: server holds on to the mmapped region across calls
c-reuse: client holds on to the mmapped region across calls
sidecar: server sends back data over unix socket
nt: server uses nontemporal store instructions to write
NOTE: s-reuse without c-reuse isn't very effective since the server
will detect that it cant actually reuse the mapped buffer, since the
client provided a new one.
Columns designate which core each thread is bound to:
client: the client 'user' thread
c-rx: the client reactor thread
s-rx: the server reactor thread
worker: the server RPC worker thread
Core notation:
SaCbTc: socket a core b thread c
Speed-limit (optimal) performance: 7997.6 MB/sec
method client c-rx s-rx worker MB/sec
# all-same-core
fd(s-write) S0C0T0 S0C0T0 S0C0T0 S0C0T0 1393.5
fd(s-mmap) S0C0T0 S0C0T0 S0C0T0 S0C0T0 1254.0
fd(s-mmap,nt) S0C0T0 S0C0T0 S0C0T0 S0C0T0 1032.0
fd(s-mmap,s-reuse) S0C0T0 S0C0T0 S0C0T0 S0C0T0 1231.5
fd(s-mmap,s-reuse,nt) S0C0T0 S0C0T0 S0C0T0 S0C0T0 1021.1
fd(s-write,c-reuse) S0C0T0 S0C0T0 S0C0T0 S0C0T0 2915.5
fd(s-mmap,c-reuse) S0C0T0 S0C0T0 S0C0T0 S0C0T0 2828.6
fd(s-mmap,c-reuse,nt) S0C0T0 S0C0T0 S0C0T0 S0C0T0 2043.9
fd(s-mmap,c-reuse,s-reuse) S0C0T0 S0C0T0 S0C0T0 S0C0T0 5780.7
fd(s-mmap,c-reuse,s-reuse,nt) S0C0T0 S0C0T0 S0C0T0 S0C0T0 3366.6
sidecar S0C0T0 S0C0T0 S0C0T0 S0C0T0 2186.0
sidecar,nt S0C0T0 S0C0T0 S0C0T0 S0C0T0 1741.1
# client-server-cross-core
fd(s-write) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1349.8
fd(s-mmap) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1215.4
fd(s-mmap,nt) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1032.5
fd(s-mmap,s-reuse) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1271.5
fd(s-mmap,s-reuse,nt) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1065.0
fd(s-write,c-reuse) S0C0T0 S0C0T0 S0C1T0 S0C1T0 2384.3
fd(s-mmap,c-reuse) S0C0T0 S0C0T0 S0C1T0 S0C1T0 2773.7
fd(s-mmap,c-reuse,nt) S0C0T0 S0C0T0 S0C1T0 S0C1T0 1983.8
fd(s-mmap,c-reuse,s-reuse) S0C0T0 S0C0T0 S0C1T0 S0C1T0 4351.5
fd(s-mmap,c-reuse,s-reuse,nt) S0C0T0 S0C0T0 S0C1T0 S0C1T0 3403.5
sidecar S0C0T0 S0C0T0 S0C1T0 S0C1T0 1944.8
sidecar,nt S0C0T0 S0C0T0 S0C1T0 S0C1T0 1313.9
# client-server-cross-socket
fd(s-write) S0C0T0 S0C0T0 S1C0T0 S1C0T0 736.6
fd(s-mmap) S0C0T0 S0C0T0 S1C0T0 S1C0T0 683.7
fd(s-mmap,nt) S0C0T0 S0C0T0 S1C0T0 S1C0T0 660.0
fd(s-mmap,s-reuse) S0C0T0 S0C0T0 S1C0T0 S1C0T0 670.2
fd(s-mmap,s-reuse,nt) S0C0T0 S0C0T0 S1C0T0 S1C0T0 650.0
fd(s-write,c-reuse) S0C0T0 S0C0T0 S1C0T0 S1C0T0 1096.0
fd(s-mmap,c-reuse) S0C0T0 S0C0T0 S1C0T0 S1C0T0 1425.4
fd(s-mmap,c-reuse,nt) S0C0T0 S0C0T0 S1C0T0 S1C0T0 1669.0
fd(s-mmap,c-reuse,s-reuse) S0C0T0 S0C0T0 S1C0T0 S1C0T0 1936.9
fd(s-mmap,c-reuse,s-reuse,nt) S0C0T0 S0C0T0 S1C0T0 S1C0T0 3179.3
sidecar S0C0T0 S0C0T0 S1C0T0 S1C0T0 982.2
sidecar,nt S0C0T0 S0C0T0 S1C0T0 S1C0T0 858.7
# every-hop-crosses-core
fd(s-write) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1223.8
fd(s-mmap) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1101.8
fd(s-mmap,nt) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1111.1
fd(s-mmap,s-reuse) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1152.0
fd(s-mmap,s-reuse,nt) S0C0T0 S0C1T0 S0C2T0 S0C3T0 987.5
fd(s-write,c-reuse) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1962.0
fd(s-mmap,c-reuse) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1974.8
fd(s-mmap,c-reuse,nt) S0C0T0 S0C1T0 S0C2T0 S0C3T0 1949.9
fd(s-mmap,c-reuse,s-reuse) S0C0T0 S0C1T0 S0C2T0 S0C3T0 4656.1
fd(s-mmap,c-reuse,s-reuse,nt) S0C0T0 S0C1T0 S0C2T0 S0C3T0 3092.3
sidecar S0C0T0 S0C1T0 S0C2T0 S0C3T0 1513.1
sidecar,nt S0C0T0 S0C1T0 S0C2T0 S0C3T0 1278.3
# every-hop-crosses-socket
fd(s-write) S0C0T0 S1C0T0 S0C0T0 S1C0T0 757.3
fd(s-mmap) S0C0T0 S1C0T0 S0C0T0 S1C0T0 682.9
fd(s-mmap,nt) S0C0T0 S1C0T0 S0C0T0 S1C0T0 668.4
fd(s-mmap,s-reuse) S0C0T0 S1C0T0 S0C0T0 S1C0T0 677.2
fd(s-mmap,s-reuse,nt) S0C0T0 S1C0T0 S0C0T0 S1C0T0 656.5
fd(s-write,c-reuse) S0C0T0 S1C0T0 S0C0T0 S1C0T0 1140.4
fd(s-mmap,c-reuse) S0C0T0 S1C0T0 S0C0T0 S1C0T0 1522.0
fd(s-mmap,c-reuse,nt) S0C0T0 S1C0T0 S0C0T0 S1C0T0 1978.9
fd(s-mmap,c-reuse,s-reuse) S0C0T0 S1C0T0 S0C0T0 S1C0T0 2381.3
fd(s-mmap,c-reuse,s-reuse,nt) S0C0T0 S1C0T0 S0C0T0 S1C0T0 3866.4
sidecar S0C0T0 S1C0T0 S0C0T0 S1C0T0 676.2
sidecar,nt S0C0T0 S1C0T0 S0C0T0 S1C0T0 726.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment