Unikraft: Fast, Specialized Unikernels the Easy Way
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
Unikraft: Fast, Specialized Unikernels the Easy Way
Simon Kuenzer Vlad-Andrei Bădoiu Hugo Lefeuvre
Sharan Santhanam Alexander Jung Gaulthier Gain
Cyril Soldani Costin Lupu Stefan Teodorescu
Costi Răducanu Cristian Banu Laurent Mathy
Răzvan Deaconescu Costin Raiciu Felipe Huici
Eurosys 2021, April 26th-28thUnikernels = Specialized Virtual Machines
• Easy to build and run
GOALS • Easy or no app porting
• Great performanceWhy not Linux?
207
13 111
15
164 30
151 13
311
101 6
551
24
4 15 locking 117
2
34 2 119
5
7
91
1
sched 36
Unikra- is built from scratch to be fully modular
39
ipc 3
5
720
8 4
60
2
time
77
net
1
16
53
fs 90 2 27 465
8
11
107 17
124
2 mm
23
110 irq 1 10
7
11 19 25
3 security 6
122
36
67
14
46 10 block 28
22
226
2
37 6
68
95 277
213With Unikraft
Hello World 1 posix-layer
boot 3
nolibc
ukboot 1 argparse
6
1 ukargparse
1
mm
3
ukallocbuddy ukalloc
20
security 1
9
fs 1 nginx 10
39
posix-layer 61 mm
1 sched 2
3
1
locking 2
net 2
7
time
1
ipcDoing it with existing unikernels?
(1) Require significant expert work to build
Unikraft(2)is They
builtarefrom
oftenscratch (with
non-POSIX borrowing)
compliant
(3) The (uni)kernels are still monolithicPLATFORM OS PRIMITIVES POSIX COMPAT LIBC
LAYER LAYER LAYER LAYER
KVM NW STACKS
lwip
mtcp
clock
uknetdev
posix-socket
virtio-net
posix-fdtab
FILESYSTEMS
9pfs
syscall-shim
ramfs
vfscore
virtio-block
ukblockdev
ext4
memregion
posix-process
musl
SCHEDULERS
XEN
ukpreempt
…
uksched
ukcoop
application
clock
netfront
BOOTERS
pthread
newlib
dynamicboot
ukboot
ukcoop
blockfront
memregion
MEM . ALLOC.
buddyalloc
tinyualloc
…
tlsf
ukalloc
mimalloc
oscar• Easy to build and run
GOALS • Easy or no app porting
• Great performance• Easy to build and run
GOALS • Easy or no app porting
• Great performanceBinary Compatibility?
Auto-porting from Source
statically link
(POSIX)
syscalls
Unikraft
syscall
(Unikraft build system)
kernel
compile
musl
App native build .obj and .a
shim
system filesCompile Time
What about syscall support?
Syscall Support
Eurosys 2016
146 syscalls currently supported Linux: ~350 syscallsSystem call support
100%
10%
20%
30%
40%
50%
60%
70%
80%
90%
0%
apache
avahi
bind9
dovecot
exim
firebird
groonga
h2o
influxb
knot
Supported syscalls
lighttpd
mariadb
memcached
mongodb
If top 5 syscalls implemented
If top 10 syscalls implemented
mongoose
mongrel
If remaining syscalls implemented
mutt
mysql
nghttp
Syscall Support
nginx
nullmailer
146 syscalls currently supported
openlitespeedweb
opensmtpd
postgresql
redis
Top 30 Debian Popcon Apps
sqlite3
tntnet
webfs
weborf
whitedbIf all Else Fails – Manual Porting
What Unikraft Supports (sample)
(ongoing) (ongoing)• Easy to build and run
GOALS • Easy or no app por6ng
• Great performanceDoes autoporting sacrifice performance?
SQLite: Manual vs. Auto Port
1.153 1.121
1.083 1.065
Time (seconds)
1
AutoporAng doesn’t negaAvely affect performance
0
Linux newlib musl musl
(native)
(baseline) (native)
(manual) (native)
(manual) (external)
(autoport)
time for 60K insertionsTransparent Benefits –
Boot, Memory, Size,
Throughput
ccImage size
10MB
2MB
4MB
6MB
8MB
0B
Unik
213.0KB
ra
1.6MB
ft
1.8MB
1.6MB
Herm
i
1.3MB
t
hello
nginx
ux
1.5MB
2.1MB
Lin
ux
16.4KB
User 1.2MB
1.8MB
Lu 1.1MB
1.7MB
p
redis
i
sqlite
n
3.6MB
e
2.6MB
3.2MB
M
irage
3.3MB
4.5MB
OS
5.4MB
v
8.1MB
5.4MB
Ru
m
p
2.8MB
r
5.4MB
un
3.7MB
3.9MB
Image Sizes vs. other ProjectsUnikraft Boot Times
VMM
42.7ms
38.4ms
Total Boot Time (ms)
102 Unikraft Guest
9.1ms
3.1ms
3.1ms
101
100
0
M
U IC) M
U
) lo5
ker
QE (1
N E
Q oV M So rac
c
M
U icr ri e
F
QE (MMinimum Memory Requirement
16MB
24MB
32MB
40MB
48MB
8MB
0B
Un
ik
2MB
ra
5MB
ft
7MB
4MB
Doc
6MB
k
hello
7MB
nginx
er
7MB
R
6MB
um
p
8MB
r
12MB
un
13MB
10MB
Her m
i
11MB
redis
t
sqlite
ux
13MB
10MB
Lu
p
20MB
in
21MB
e
21MB
21MB
24MB
OS
26MB
v
40MB
26MB
M
ic
29MB
ro
u
29MB
x
30MB
Lin VM
Minimum Memory Requirements
29MBM Average Throughput (x1000 req/s)
ira
100
150
200
250
300
350
ge
50
0
So
lo
Li 5 25.9
nu
x
FC
Lu 60.1
pi
ne
Li FC
nu 71.6
x
KV
R M
um 104.5
D p
oc KV
ke M 152.6
rN
Li at
ive
nu
x 160.3
N
Lu at
ive
pi
ne 175.6
nginx Throughput
KV
O M 189.0
Sv
U KV
ni
kr M 232.7
af
tK
VM
291.8Redis Performance
Aver. Throughput (Million req/s)
2.68
GET SET
2.44
3.0
2.26
2.01
1.98
1.95
2.5
1.82
1.68
1.54
1.54
1.52
1.33
2.0
1.31
1.26
1.17
1.14
1.06
0.93
1.5
0.37
1.0
0.24
0.5
0.0
ve FC C VM VM VM iv e M i ve M
y F at V at V
uH inux pine p
K
ux
K
e
K
r N v
K N ft K
ti u
x L u um in pin ke O S ux
k ra
L R L u c in n i
r m L Do L U
HeBoot Times - Different Allocators
3.5 virtio rootfs misc
3.07
vfscore pthreads lwip
3.0 ukbus plat alloc
Total Boot Time (ms)
2.5
2.0
1.5
0.94
0.87
1.0
0.51
0.49
0.5
0.0
Binary buddy Mimalloc Bootalloc tinyalloc TLSFRedis Throughput
Aver. Throughput (Million req/s)
Different Allocators
2.72
3.0 GET SET
2.47
2.32
2.22
2.5
1.97
1.89
2.0
1.5
1.01
0.78
1.0
0.5
0.0
Mimalloc TLSF Binary buddy tinyallocSpecialized APIs
Specializa)on Benefits – Filesystem Performance
Filesystem Specialization – SHFS
Unikraft Linux
FILE EXISTS NO FILE
(1126ns)
4054
5000
(910ns)
3277
Average # TSC
4000
(735ns)
2647
(617ns)
2219
(547ns)
3000
1968
(455ns)
1637
2000
(86ns)
(81ns)
308
291
1000
0
SHFS VFS VFS VFS
(No mitig.)High performance POSIX unikernels are now a reality! Info: https://unikraft.org/ Code: https://github.com/unikraft Reproduce: https://github.com/unikraft/eurosys21-artifacts
You can also read