SlideShare une entreprise Scribd logo
1  sur  102
Télécharger pour lire hors ligne
From Handcraft to Unikraft:
Simpler Unikernelization of Your Application
Florian Schmidt
Research Scientist, NEC Labs Europe
This work has received funding from the European Union’s Horizon 2020 research and
innovation program under grant agreements no. 675806 (“5G CITY”) and 761592
(“5G ESSENCE”). This work reflects only the author’s views and the European Commis-
sion is not responsible for any use that may be made of the information it contains.
2 © NEC Corporation 2018
VMs vs Containers
▌VMs have been around for a long time
 They allow consolidation, isolation, migration, …
3 © NEC Corporation 2018
VMs vs Containers
▌VMs have been around for a long time
 They allow consolidation, isolation, migration, …
▌Then containers came and many people LOVED them. Why?
4 © NEC Corporation 2018
VMs vs Containers
▌VMs have been around for a long time
 They allow consolidation, isolation, migration, …
▌Then containers came and many people LOVED them. Why?
 “Containers are much faster to bring up than VMs.
My VM takes a minute to boot, my container only a second.”
5 © NEC Corporation 2018
VMs vs Containers
▌VMs have been around for a long time
 They allow consolidation, isolation, migration, …
▌Then containers came and many people LOVED them. Why?
 “Containers are much faster to bring up than VMs.
My VM takes a minute to boot, my container only a second.”
 “Containers are much smaller.
My VM takes 10 GB, my container only a few hundred MB.”
6 © NEC Corporation 2018
VMs vs Containers
▌VMs have been around for a long time
 They allow consolidation, isolation, migration, …
▌Then containers came and many people LOVED them. Why?
 “Containers are much faster to bring up than VMs.
My VM takes a minute to boot, my container only a second.”
 “Containers are much smaller.
My VM takes 10 GB, my container only a few hundred MB.”
 “Containers are much easier to create and deploy.
I just write this Dockerfile and I’m done.”
7 © NEC Corporation 2018
Containers vs Unikernels
▌I don’t want to bash containers.
 Containers can be great!
 For example, I love them for build environments
8 © NEC Corporation 2018
Containers vs Unikernels
▌I don’t want to bash containers.
 Containers can be great!
 For example, I love them for build environments
▌But VMs have their advantages
 Most importantly, strong isolation
9 © NEC Corporation 2018
Containers vs Unikernels
▌I don’t want to bash containers.
 Containers can be great!
 For example, I love them for build environments
▌But VMs have their advantages
 Most importantly, strong isolation
200
250
300
350
400
2002 2004 2006 2008 2010 2012 2014 2016 2018
No.ofsyscalls
Linux Release Year
10 © NEC Corporation 2018
Containers vs Unikernels
▌I don’t want to bash containers.
 Containers can be great!
 For example, I love them for build environments
▌But VMs have their advantages
 Most importantly, strong isolation
▌And they do not have to be large, slow, and complicated
200
250
300
350
400
2002 2004 2006 2008 2010 2012 2014 2016 2018
No.ofsyscalls
Linux Release Year
11 © NEC Corporation 2018
Containers vs Unikernels
▌I don’t want to bash containers.
 Containers can be great!
 For example, I love them for build environments
▌But VMs have their advantages
 Most importantly, strong isolation
▌And they do not have to be large, slow, and complicated
 This is where unikernels come in
200
250
300
350
400
2002 2004 2006 2008 2010 2012 2014 2016 2018
No.ofsyscalls
Linux Release Year
12 © NEC Corporation 2018
Traditional VMs vs. Unikernels
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
13 © NEC Corporation 2018
Traditional VMs vs. Unikernels
▌Unikernels are purpose-built
 A single binary containing OS and
(single) application
 One application  Flat and single
address space
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
App A
Libs A
App B
Libs B
Unikernels
Hardware
Hypervisor
14 © NEC Corporation 2018
Traditional VMs vs. Unikernels
▌Unikernels are purpose-built
 A single binary containing OS and
(single) application
 One application  Flat and single
address space
▌No isolation within unikernel,
but by the hypervisor
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
App A
Libs A
App B
Libs B
Unikernels
Hardware
Hypervisor
15 © NEC Corporation 2018
Traditional VMs vs. Unikernels
▌Unikernels are purpose-built
 A single binary containing OS and
(single) application
 One application  Flat and single
address space
▌No isolation within unikernel,
but by the hypervisor
▌Can be extremely small and
blazingly fast
▌Example: unikernel web
server
 5-6x more req/s than standard nginx
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
App A
Libs A
App B
Libs B
Unikernels
Hardware
Hypervisor
16 © NEC Corporation 2018
Traditional VMs vs. Unikernels
▌Unikernels are purpose-built
 A single binary containing OS and
(single) application
 One application  Flat and single
address space
▌No isolation within unikernel,
but by the hypervisor
▌Can be extremely small and
blazingly fast
▌Example: unikernel web
server
 5-6x more req/s than standard nginx
 Nearly saturates 40Gb/s link
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
App A
Libs A
App B
Libs B
Unikernels
Hardware
Hypervisor
17 © NEC Corporation 2018
Traditional VMs vs. Unikernels
▌Unikernels are purpose-built
 A single binary containing OS and
(single) application
 One application  Flat and single
address space
▌No isolation within unikernel,
but by the hypervisor
▌Can be extremely small and
blazingly fast
▌Example: unikernel web
server
 5-6x more req/s than standard nginx
 Nearly saturates 40Gb/s link
 Image: 670kB, RAM: <32MB
Kernel
Hardware
Kernel
App B
Libs B
Traditional VMs
Hypervisor
App A
Libs A
App A
Libs A
App B
Libs B
Unikernels
Hardware
Hypervisor
18 © NEC Corporation 2018
Example: Instantiation Time Comparison
100
101
102
103
104
105
0 200 400 600 800 1000
Time[ms]
Number of running guests
Process Create
Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
Process:
0.7ms-10ms
19 © NEC Corporation 2018
Example: Instantiation Time Comparison
Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
100
101
102
103
104
105
0 200 400 600 800 1000
Time[ms]
Number of running guests
Process Create Docker Boot
Process:
0.7ms-10ms
Docker:
150ms-550ms
20 © NEC Corporation 2018
Example: Instantiation Time Comparison
Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
100
101
102
103
104
105
0 200 400 600 800 1000
Time[ms]
Number of running guests
Docker Boot Debian Boot Debian Create
Process:
0.7ms-10ms
Docker:
150ms-550ms
Debian:
2.6-82 secs
21 © NEC Corporation 2018
Example: Instantiation Time Comparison
Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
100
101
102
103
104
105
0 200 400 600 800 1000
Time[ms]
Number of running guests
MiniOS Boot MiniOS Create
Process:
0.7ms-10ms
Docker:
150ms-550ms
Debian:
2.6-82 secs
unikernel:
63ms-1.4secs
22 © NEC Corporation 2018
100
101
102
103
104
105
0 200 400 600 800 1000
Time[ms]
Number of running guests
MiniOS Boot MiniOS Create
Example: Instantiation Time Comparison
▌Unikernels can
instantiate as fast
as containers
 Often faster
 Except when many are
colocated
• Speaking of which, what
is going wrong there?!
• If you’re interested, talk
to me later
• Bottom line: this is a
solvable implementation
problem
Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
23 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
24 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
▌So why isn’t everyone using them already?
25 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
▌So why isn’t everyone using them already?
▌The big problem is unikernel development:
Optimized unikernels are manually built
26 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
▌So why isn’t everyone using them already?
▌The big problem is unikernel development:
Optimized unikernels are manually built
Building takes several months or even longer
• We’ve done it before, multiple times
27 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
▌So why isn’t everyone using them already?
▌The big problem is unikernel development:
Optimized unikernels are manually built
Building takes several months or even longer
• We’ve done it before, multiple times
Potentially lather, rinse, repeat for each target application
• We’ve done that too…
28 © NEC Corporation 2018
The Downside
▌So, unikernels:
Give you the speed and size of containers
 At the strong isolation of VMs
▌So why isn’t everyone using them already?
▌The big problem is unikernel development:
Optimized unikernels are manually built
Building takes several months or even longer
• We’ve done it before, multiple times
Potentially lather, rinse, repeat for each target application
• We’ve done that too…
▌That’s not an effective way of doing things
29 © NEC Corporation 2018
Unikraft - A Unikernel Framework
30 © NEC Corporation 2018
Unikraft - A Unikernel Framework
Motivation
▌ Support wide range of use cases
▌ Provide common code base for
unikernel development
▌ Simplify building and optimizing
▌ Support different hypervisors
and CPU architectures
31 © NEC Corporation 2018
Unikraft - A Unikernel Framework
Motivation
▌ Support wide range of use cases
▌ Provide common code base for
unikernel development
▌ Simplify building and optimizing
▌ Support different hypervisors
and CPU architectures
32 © NEC Corporation 2018
Unikraft - A Unikernel Framework
Motivation
▌ Support wide range of use cases
▌ Provide common code base for
unikernel development
▌ Simplify building and optimizing
▌ Support different hypervisors
and CPU architectures
Our Approach
▌Decompose OS functionality into
libraries
▌Unikraft’s two components:
Library Pool
Build Tool
33 © NEC Corporation 2018
Unikraft - A Unikernel Framework
Motivation
▌ Support wide range of use cases
▌ Provide common code base for
unikernel development
▌ Simplify building and optimizing
▌ Support different hypervisors
and CPU architectures
Our Approach
▌Decompose OS functionality into
libraries
▌Unikraft’s two components:
Library Pool
Build Tool
▌Started as an internal project at NEC Labs in early 2017
▌Made public early on
Discussed ideas at Xen Summit 2017
Accepted as a Xen incubator project in October 2017
First public code release in December 2017
34 © NEC Corporation 2018
The Unikraft Way
Decompose OS into a set of libraries (“Everything is a library”)
Recompose them to meet the needs of particular applications
35 © NEC Corporation 2018
The Unikraft Way
Decompose OS into a set of libraries (“Everything is a library”)
Recompose them to meet the needs of particular applications
profiling
memory
allocator scheduler
drivers
timers
filesystem
network stack
Application(s)
36 © NEC Corporation 2018
The Unikraft Way
profiling
memory
allocator scheduler
drivers
timers
filesystem
network stack
Application(s)
Decompose OS into a set of libraries (“Everything is a library”)
Recompose them to meet the needs of particular applications
37 © NEC Corporation 2018
The Unikraft Way
profiling
memory
allocator
scheduler
drivers
timers
filesystem
network stack
Application(s)
Decompose OS into a set of libraries (“Everything is a library”)
Recompose them to meet the needs of particular applications
38 © NEC Corporation 2018
The Unikraft Way
profiling
memory
allocator
scheduler
drivers
timers
filesystem
network stack
Application(s)
Once decomposed, we can pick and choose which
parts/libraries we actually need for our application
Decompose OS into a set of libraries (“Everything is a library”)
Recompose them to meet the needs of particular applications
39 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
myapp
Select / build / port
Application
1
40 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
main
libs drivers
libconsole.o
libblkfront.o
libnetfront.o
network stack
liblwip.o
libtcpip.o
libhttp.o
memory allocators
libbuddy.o
libheap.o
libmempool.o
filesystems
libvfs.o
libfat.o
libext3.o
runtimes
libocaml.o
libpython.o
liberlang.o
schedulers
libcoop.o
libpreempt.o
librt.o
standard libs
libc.o
libnewlibc.o
libopenssl.o
myapp
Select / build / port
Application
1
Select and
configure libraries
2
41 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
main
libs
platform
libs
libxenplat.o
drivers
libconsole.o
libblkfront.o
libnetfront.o
network stack
liblwip.o
libtcpip.o
libhttp.o
memory allocators
libbuddy.o
libheap.o
libmempool.o
filesystems
libvfs.o
libfat.o
libext3.o
runtimes
libocaml.o
libpython.o
liberlang.o
schedulers
libcoop.o
libpreempt.o
librt.o
standard libs
libc.o
libnewlibc.o
libopenssl.o
libbaremetalplat.o Libkvmplat.o liblinuxuplat.o
myapp
Select / build / port
Application
1
Select and
configure libraries
2
42 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
architecture
libs
main
libs
platform
libs
libarm32arch.olibx86_64arch.o
libxenplat.o
drivers
libconsole.o
libblkfront.o
libnetfront.o
network stack
liblwip.o
libtcpip.o
libhttp.o
memory allocators
libbuddy.o
libheap.o
libmempool.o
filesystems
libvfs.o
libfat.o
libext3.o
runtimes
libocaml.o
libpython.o
liberlang.o
schedulers
libcoop.o
libpreempt.o
librt.o
standard libs
libc.o
libnewlibc.o
libopenssl.o
libbaremetalplat.o Libkvmplat.o
libarm64arm.o
liblinuxuplat.o
myapp
Select / build / port
Application
1
Select and
configure libraries
2
43 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
architecture
libs
main
libs
platform
libs
libarm32arch.olibx86_64arch.o
libxenplat.o
drivers
libconsole.o
libblkfront.o
libnetfront.o
network stack
liblwip.o
libtcpip.o
libhttp.o
memory allocators
libbuddy.o
libheap.o
libmempool.o
filesystems
libvfs.o
libfat.o
libext3.o
runtimes
libocaml.o
libpython.o
liberlang.o
schedulers
libcoop.o
libpreempt.o
librt.o
standard libs
libc.o
libnewlibc.o
libopenssl.o
libbaremetalplat.o Libkvmplat.o
libarm64arm.o
liblinuxuplat.o
myapp
Select / build / port
Application
1
Select and
configure libraries
2
Build3
44 © NEC Corporation 2018
Unikraft Overview – Everything as a Library
architecture
libs
main
libs
platform
libs
libarm32arch.olibx86_64arch.o
libxenplat.o
Unikernels
unikraft_linuxu_x86_64unikraft_bare_x86_64
unikraft_bare_arm32
unikraft_bare_arm64
unikraft_xen_x86_64
unikraft_xen_arm32
unikraft_xen_arm64
unikraft_kvm_x86_64
unikraft_kvm_arm32
unikraft_kvm_arm64
drivers
libconsole.o
libblkfront.o
libnetfront.o
network stack
liblwip.o
libtcpip.o
libhttp.o
memory allocators
libbuddy.o
libheap.o
libmempool.o
filesystems
libvfs.o
libfat.o
libext3.o
runtimes
libocaml.o
libpython.o
liberlang.o
schedulers
libcoop.o
libpreempt.o
librt.o
standard libs
libc.o
libnewlibc.o
libopenssl.o
libbaremetalplat.o Libkvmplat.o
libarm64arm.o
liblinuxuplat.o
myapp
Select / build / port
Application
1
Select and
configure libraries
2
unikraft_linuxu_arm32
unikraft_linuxu_arm64
Build3
Run4
45 © NEC Corporation 2018
Two Library Types
▌Built-in: functionality specific to Unikraft,
live in the main unikraft repo
 ukboot
 ukschedpreempt
…
46 © NEC Corporation 2018
Two Library Types
▌Built-in: functionality specific to Unikraft,
live in the main unikraft repo
 ukboot
 ukschedpreempt
…
▌External: software projects external to Unikraft,
have their own unikraft-lib repos
 lwip
 micropython
 …
47 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
app_my_python.o
48 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
libmicropython.oapp_my_python.o
49 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o
libmicropython.oapp_my_python.o
50 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o libvfscore.o
libmicropython.oapp_my_python.o
51 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o libvfscore.o
libmicropython.o
libschedcoop.o
app_my_python.o
52 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o libvfscore.o
liballocbbuddy.o
libmicropython.o
libschedcoop.o
app_my_python.o
53 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o
libkvmplat.o
libvfscore.o
liballocbbuddy.o
libmicropython.o
libschedcoop.o
app_my_python.o
54 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o
libkvmplat.o libx86_64arch.o
libvfscore.o
liballocbbuddy.o
libmicropython.o
libschedcoop.o
app_my_python.o
55 © NEC Corporation 2018
Example System
▌Micropython Unikernel for KVM on x86_64
liblwip.o
libkvmplat.o libx86_64arch.o
libvfscore.o
liballocbbuddy.o
libmicropython.o
libschedcoop.o
app_my_python.o
Unikernel
56 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
57 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
▌ Kconfig/Makefile based
58 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
▌ Kconfig/Makefile based
▌ make menuconfig
59 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
▌ Kconfig/Makefile based
▌ make menuconfig
 Choose options in the menu that you want for your application
60 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
▌ Kconfig/Makefile based
▌ make menuconfig
 Choose options in the menu that you want for your application
 Choose your target platform(s) (currently: Xen, KVM, Linux) and architectures
61 © NEC Corporation 2018
Putting Things Together – The Unikraft Build Tool
▌ Kconfig/Makefile based
▌ make menuconfig
 Choose options in the menu that you want for your application
 Choose your target platform(s) (currently: Xen, KVM, Linux) and architectures
▌ Save config and make
.config
62 © NEC Corporation 2018
A Baseline Example…
▌Xen PV x86_64 binary
63 © NEC Corporation 2018
A Baseline Example…
▌Xen PV x86_64 binary
libnolibc.o
libukboot.o
libukdebug.o
libxenplat.o
unikraft_xen-x86_64.o
unikraft_xen-x86_64
(32,7kB)
Final linking
64 © NEC Corporation 2018
A Baseline Example…
▌Xen PV x86_64 binary
▌Boots and prints messages to debug console (with min. 208kB RAM)
libnolibc.o
libukboot.o
libukdebug.o
libxenplat.o
unikraft_xen-x86_64.o
unikraft_xen-x86_64
(32,7kB)
Final linking
65 © NEC Corporation 2018
A Baseline Example…
▌Xen PV x86_64 binary
▌Boots and prints messages to debug console (with min. 208kB RAM)
▌More functional example: routing unikernel (click): 4.5 MB (8 MB RAM)
libnolibc.o
libukboot.o
libukdebug.o
libxenplat.o
unikraft_xen-x86_64.o
unikraft_xen-x86_64
(32,7kB)
Final linking
Building a Unikraft Hello World App
67 © NEC Corporation 2018
Repo Structure
▌Clone the main Unikraft repo
git clone git://xenbits.xen.org/unikraft/unikraft.git
▌Clone any external library repos
git clone git://xenbits.xen.org/unikraft/libs/newlib.git
▌Create repo for the actual application
68 © NEC Corporation 2018
Repo Structure
▌Clone the main Unikraft repo
git clone git://xenbits.xen.org/unikraft/unikraft.git
▌Clone any external library repos
git clone git://xenbits.xen.org/unikraft/libs/newlib.git
▌Create repo for the actual application
├── unikraft
├── unikraft-apps
│ └── helloworld
├── unikraft-libs
│ ├── axtls
│ ├── lwip
│ ├── micropython
│ ├── newlib
│ ├── toybox
69 © NEC Corporation 2018
Repo Structure
▌Clone the main Unikraft repo
git clone git://xenbits.xen.org/unikraft/unikraft.git
▌Clone any external library repos
git clone git://xenbits.xen.org/unikraft/libs/newlib.git
▌Create repo for the actual application
├── unikraft
├── unikraft-apps
│ └── helloworld
├── unikraft-libs
│ ├── axtls
│ ├── lwip
│ ├── micropython
│ ├── newlib
│ ├── toybox
Unikraft repo (+ built-in libs)
70 © NEC Corporation 2018
Repo Structure
▌Clone the main Unikraft repo
git clone git://xenbits.xen.org/unikraft/unikraft.git
▌Clone any external library repos
git clone git://xenbits.xen.org/unikraft/libs/newlib.git
▌Create repo for the actual application
├── unikraft
├── unikraft-apps
│ └── helloworld
├── unikraft-libs
│ ├── axtls
│ ├── lwip
│ ├── micropython
│ ├── newlib
│ ├── toybox
Unikraft repo (+ built-in libs)
application repo(s)
71 © NEC Corporation 2018
Repo Structure
▌Clone the main Unikraft repo
git clone git://xenbits.xen.org/unikraft/unikraft.git
▌Clone any external library repos
git clone git://xenbits.xen.org/unikraft/libs/newlib.git
▌Create repo for the actual application
├── unikraft
├── unikraft-apps
│ └── helloworld
├── unikraft-libs
│ ├── axtls
│ ├── lwip
│ ├── micropython
│ ├── newlib
│ ├── toybox
Unikraft repo (+ built-in libs)
application repo(s)
external libraries repos
72 © NEC Corporation 2018
Hello World – Four Required Files (I)
UK_ROOT ?= $(PWD)/../../unikraft
UK_LIBS ?= $(PWD)/../../unikraft-libs
LIBS := $(UK_LIBS)/newlib
all:
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS)
$(MAKECMDGOALS):
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS)
Makefile: specify where the main Unikraft repo is,
as well as repos for external libraries
73 © NEC Corporation 2018
Hello World – Four Required Files (I)
UK_ROOT ?= $(PWD)/../../unikraft
UK_LIBS ?= $(PWD)/../../unikraft-libs
LIBS := $(UK_LIBS)/newlib
all:
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS)
$(MAKECMDGOALS):
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS)
path to unikraft repo
Makefile: specify where the main Unikraft repo is,
as well as repos for external libraries
74 © NEC Corporation 2018
Hello World – Four Required Files (I)
UK_ROOT ?= $(PWD)/../../unikraft
UK_LIBS ?= $(PWD)/../../unikraft-libs
LIBS := $(UK_LIBS)/newlib
all:
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS)
$(MAKECMDGOALS):
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS)
path to unikraft repo
path to external libs
Makefile: specify where the main Unikraft repo is,
as well as repos for external libraries
75 © NEC Corporation 2018
Hello World – Four Required Files (I)
UK_ROOT ?= $(PWD)/../../unikraft
UK_LIBS ?= $(PWD)/../../unikraft-libs
LIBS := $(UK_LIBS)/newlib
all:
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS)
$(MAKECMDGOALS):
@make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS)
path to unikraft repo
path to external libs
external libs needed
Makefile: specify where the main Unikraft repo is,
as well as repos for external libraries
76 © NEC Corporation 2018
Hello World – Four Required Files (II)
$(eval $(call addlib,apphelloworld))
APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c
Makefile.uk: specifies the sources to build for the application
77 © NEC Corporation 2018
Hello World – Four Required Files (II)
$(eval $(call addlib,apphelloworld))
APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c
register app with
unikraft build system
Makefile.uk: specifies the sources to build for the application
78 © NEC Corporation 2018
Hello World – Four Required Files (II)
$(eval $(call addlib,apphelloworld))
APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c
register app with
unikraft build system
Add main.c to build
Makefile.uk: specifies the sources to build for the application
79 © NEC Corporation 2018
Hello World – Four Required Files (III)
### Invisible option for dependencies
config APPHELLOWORLD_DEPENDENCIES
bool
default y
select LIBNOLIBC if !HAVE_LIBC
### App configuration
config APPHELLOWORLD_PRINTARGS
bool "Print arguments"
default y
help
Prints argument list (argv) to stdout
Config.uk: to populate Unikraft’s menu with application-specific option
80 © NEC Corporation 2018
Hello World – Four Required Files (IV)
#include <stdio.h>
/* Import user configuration: */
#include <uk/config.h>
int main(int argc, char *argv[])
{
printf("Hello world!n");
#if CONFIG_APPHELLOWORLD_PRINTARGS
int i;
printf("Arguments:s");
for (i=0; i<argc; ++i)
printf(" "%s"", argv[i]);
printf("n");
#endif
}
main.c: source file to provide (at least) a main() function
81 © NEC Corporation 2018
Hello World – Four Required Files (IV)
#include <stdio.h>
/* Import user configuration: */
#include <uk/config.h>
int main(int argc, char *argv[])
{
printf("Hello world!n");
#if CONFIG_APPHELLOWORLD_PRINTARGS
int i;
printf("Arguments:s");
for (i=0; i<argc; ++i)
printf(" "%s"", argv[i]);
printf("n");
#endif
}
main.c: source file to provide (at least) a main() function
Unikernel entry point
after boot
82 © NEC Corporation 2018
Hello World – Four Required Files (IV)
#include <stdio.h>
/* Import user configuration: */
#include <uk/config.h>
int main(int argc, char *argv[])
{
printf("Hello world!n");
#if CONFIG_APPHELLOWORLD_PRINTARGS
int i;
printf("Arguments:s");
for (i=0; i<argc; ++i)
printf(" "%s"", argv[i]);
printf("n");
#endif
}
main.c: source file to provide (at least) a main() function
Unikernel entry point
after boot
defined by Config.uk
Porting an External Library
84 © NEC Corporation 2018
How To Port an External Library
85 © NEC Corporation 2018
How To Port an External Library
▌Write Makefile.uk and add the external library source files to it
 The library’s original Makefile can serve as a template
 I’ll show how to in a second
86 © NEC Corporation 2018
How To Port an External Library
▌Write Makefile.uk and add the external library source files to it
 The library’s original Makefile can serve as a template
 I’ll show how to in a second
▌Write Config.uk with library-specific options
87 © NEC Corporation 2018
How To Port an External Library
▌Write Makefile.uk and add the external library source files to it
 The library’s original Makefile can serve as a template
 I’ll show how to in a second
▌Write Config.uk with library-specific options
 Isn’t strictly required
 But at least a simple “library on/off” option for kbuild is a good idea
88 © NEC Corporation 2018
How To Port an External Library
▌Write Makefile.uk and add the external library source files to it
 The library’s original Makefile can serve as a template
 I’ll show how to in a second
▌Write Config.uk with library-specific options
 Isn’t strictly required
 But at least a simple “library on/off” option for kbuild is a good idea
▌Sometimes a bit of glue code is needed
 E.g., in newlib to link POSIX thread creation to Unikraft’s thread library
89 © NEC Corporation 2018
How To Port an External Library
▌Write Makefile.uk and add the external library source files to it
 The library’s original Makefile can serve as a template
 I’ll show how to in a second
▌Write Config.uk with library-specific options
 Isn’t strictly required
 But at least a simple “library on/off” option for kbuild is a good idea
▌Sometimes a bit of glue code is needed
 E.g., in newlib to link POSIX thread creation to Unikraft’s thread library
▌ In this early phase: implement core unikraft functionality that is required to
support your library, for example:
 File descriptors/sockets
 Threading support
90 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
91 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) Register library with
unikraft build system
92 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
Register library with
unikraft build system
93 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
Register library with
unikraft build system
Download and patch
library code
$(eval $(call fetch,libaxtls,$(LIBAXTLS_URL)))
$(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION)))
94 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
################################################################################
# Library includes
################################################################################
CINCLUDES-y += -I$(LIBAXTLS_BASE)/include 
-I$(LIBAXTLS_BASE)/crypto 
-I$(LIBAXTLS_BASE)/ssl
Register library with
unikraft build system
Download and patch
library code
$(eval $(call fetch,libaxtls,$(LIBAXTLS_URL)))
$(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION)))
The library’s original
include directories
95 © NEC Corporation 2018
How To Port an External Library – Makefile.uk
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
################################################################################
# Library includes
################################################################################
CINCLUDES-y += -I$(LIBAXTLS_BASE)/include 
-I$(LIBAXTLS_BASE)/crypto 
-I$(LIBAXTLS_BASE)/ssl
################################################################################
# sources
################################################################################
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c
…
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c
Register library with
unikraft build system
Download and patch
library code
$(eval $(call fetch,libaxtls,$(LIBAXTLS_URL)))
$(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION)))
The library’s original
include directories
The library’s original
source files
96 © NEC Corporation 2018
How To Port an External Library: Outlook
▌This can be a lot of busywork
▌What about special cases?
 Special build systems
 Additional steps other than
compiling/linking
 Preprocessing/dependencies?
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
################################################################################
# Library includes
################################################################################
CINCLUDES-y += -I$(LIBAXTLS_BASE)/include 
-I$(LIBAXTLS_BASE)/crypto 
-I$(LIBAXTLS_BASE)/ssl
################################################################################
# sources
################################################################################
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c
…
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c
97 © NEC Corporation 2018
How To Port an External Library: Outlook
▌This can be a lot of busywork
▌What about special cases?
 Special build systems
 Additional steps other than
compiling/linking
 Preprocessing/dependencies?
▌Coming soon:
Build passthrough mode
 Currently under review
 Vastly simplifies Makefile creation
work
 Especially for large or complicated
libraries
################################################################################
# Library registration
################################################################################
$(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
################################################################################
# Source Download
################################################################################
# Nothing here: sources are small and included directly in the uk library repo
################################################################################
# Library includes
################################################################################
CINCLUDES-y += -I$(LIBAXTLS_BASE)/include 
-I$(LIBAXTLS_BASE)/crypto 
-I$(LIBAXTLS_BASE)/ssl
################################################################################
# sources
################################################################################
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c
…
LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c
################################################################################
# build
################################################################################
UK_ARS-y += $(LIBAXTLS_ORIGIN)/$(LIBAXTLS_DIR)/build/libaxtls.o
LIBAXTILS/.prepared:
$(call verbose_cmd,CONFIGURE,libaxtls: $@,
mkdir -p $(LIBAXTLS_ORIGIN)/$(LIBAXTLS_DIR) && 
./configure && make)
Unikraft 0.2 Titan
Current Status
99 © NEC Corporation 2018
Available Libraries
▌Core Libraries
libfdt
• Flat device tree parser
libnolibc
• A tiny libc replacement
libukalloc
• Memory allocator abstraction
libukallocbbuddy
• Binary buddy allocator
libukargparse
• Argument parser library
libukboot
• Unikraft bootstrapping
libukdebug
• Debug and kernel printing
• Assertions, hexdump
libuksched
• Scheduler abstraction
libukschedcoop
• Cooperative scheduler
▌External Libraries
 libnewlib
• libc originally aimed at embedded devices
 liblwip
• lightweight TCP/IP stack
▌Architecture Libraries
 libarmmath
• 64bit arithmetic on ARMv7
 libx86ctx
• Extended register support for x86 ctx switch
▌Platform Libraries
 libxenplat
• Xen (PV)
• x86_64, ARMv7
 libkvmplat
• QEMU/kvm
• x86_64, ARM64, virtio-net support
 liblinuxu
• Linux userspace
• x86_64, ARMv7
libukbus
• abstraction for device buses,
e.g., PCI
libuklock
• mutexes and semaphores
libukmpi
• message-passing interface
libuknetdev
• network device support
libukswrand
• pseudo-RNG interface
libuktimeconv
• time calculation/conversion
libvfscore
• basic file descriptor
management / mapping /
handling
100 © NEC Corporation 2018
Current work: coming soon (in the pipeline) or being ported
▌Core Libraries
libukschedpreempt
• Pre-emptive scheduler
▌External Libraries
libclick
• Click modular router (e.g., for NFV)
libaxtls
• TLS support aimed at embedded devices
libstdc++
libmicropython
• Python implemented for microcontrollers
▌Architecture Libraries
libarmctx
• Extended register support for Arm ctx switch
▌Platform Libraries
libxenplat
• ARM64 support
• netfront support
liblinuxu
• tap device based networking support
101 © NEC Corporation 2018
The road ahead
▌First public alpha release (without much functionality) in December
▌Released as a Xen incubator project
▌Initially, mostly internal contributors from NEC Labs
▌Currently external contributors from
 Romania (netfront, scheduling; from University Politehnica Bucharest)
 Israel (bare-metal support)
 China (ARM64 support; from ARM)
▌We welcome additional contributors!
▌Resources:
 Code: https://xenbits.xen.org/gitweb/?pf=unikraft (make sure you check out staging!)
 On-line documentation: unikraft.org
 IRC: #unikraft @ freenode
 Mailing list: minios-devel@lists.xen.org
OSSEU18: From Handcraft to Unikraft: Simpler Unikernelization of Your Application - Florian Schmidt, NEC Labs Europe

Contenu connexe

Tendances

XPDDS19: Unikraft Dom0 Disaggregation
XPDDS19: Unikraft Dom0 DisaggregationXPDDS19: Unikraft Dom0 Disaggregation
XPDDS19: Unikraft Dom0 DisaggregationThe Linux Foundation
 
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...The Linux Foundation
 
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...The Linux Foundation
 
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...The Linux Foundation
 
Scale14x: Are today's foss security practices robust enough in the cloud era ...
Scale14x: Are today's foss security practices robust enough in the cloud era ...Scale14x: Are today's foss security practices robust enough in the cloud era ...
Scale14x: Are today's foss security practices robust enough in the cloud era ...The Linux Foundation
 
Fosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationFosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationThe Linux Foundation
 
OSSEU18: NVDIMM and Virtualization - George Dunlap, Citrix
OSSEU18: NVDIMM and Virtualization  - George Dunlap, CitrixOSSEU18: NVDIMM and Virtualization  - George Dunlap, Citrix
OSSEU18: NVDIMM and Virtualization - George Dunlap, CitrixThe Linux Foundation
 
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)The Linux Foundation
 
ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleThe Linux Foundation
 
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARM
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARMXPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARM
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARMThe Linux Foundation
 
Dom0less - Xen Developer Summit 2019
Dom0less  - Xen Developer Summit 2019Dom0less  - Xen Developer Summit 2019
Dom0less - Xen Developer Summit 2019Stefano Stabellini
 
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...The Linux Foundation
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...The Linux Foundation
 
XPDDS18: LCC18: Xen Project: After 15 years, What's Next? - George Dunlap, C...
XPDDS18: LCC18:  Xen Project: After 15 years, What's Next? - George Dunlap, C...XPDDS18: LCC18:  Xen Project: After 15 years, What's Next? - George Dunlap, C...
XPDDS18: LCC18: Xen Project: After 15 years, What's Next? - George Dunlap, C...The Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...The Linux Foundation
 
LCEU13: Securing your cloud with Xen's advanced security features - George Du...
LCEU13: Securing your cloud with Xen's advanced security features - George Du...LCEU13: Securing your cloud with Xen's advanced security features - George Du...
LCEU13: Securing your cloud with Xen's advanced security features - George Du...The Linux Foundation
 
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...The Linux Foundation
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...The Linux Foundation
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)The Linux Foundation
 
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...The Linux Foundation
 

Tendances (20)

XPDDS19: Unikraft Dom0 Disaggregation
XPDDS19: Unikraft Dom0 DisaggregationXPDDS19: Unikraft Dom0 Disaggregation
XPDDS19: Unikraft Dom0 Disaggregation
 
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...
XPDDS18: Unleashing the Power of Unikernels with Unikraft - Florian Schmidt, ...
 
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...
XPDDS18: Introducing ViryaOS: Secure Containers for Embedded and IoT - Stefan...
 
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
 
Scale14x: Are today's foss security practices robust enough in the cloud era ...
Scale14x: Are today's foss security practices robust enough in the cloud era ...Scale14x: Are today's foss security practices robust enough in the cloud era ...
Scale14x: Are today's foss security practices robust enough in the cloud era ...
 
Fosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationFosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using Virtualization
 
OSSEU18: NVDIMM and Virtualization - George Dunlap, Citrix
OSSEU18: NVDIMM and Virtualization  - George Dunlap, CitrixOSSEU18: NVDIMM and Virtualization  - George Dunlap, Citrix
OSSEU18: NVDIMM and Virtualization - George Dunlap, Citrix
 
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
 
ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made Simple
 
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARM
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARMXPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARM
XPDDS18: Unikraft: An easy way of crafting Unikernels on Arm - Kaly Xin, ARM
 
Dom0less - Xen Developer Summit 2019
Dom0less  - Xen Developer Summit 2019Dom0less  - Xen Developer Summit 2019
Dom0less - Xen Developer Summit 2019
 
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...
XPDDS19: Argo and Hypervisor-Mediated Data eXchange (HMX) - Christopher Clark...
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
 
XPDDS18: LCC18: Xen Project: After 15 years, What's Next? - George Dunlap, C...
XPDDS18: LCC18:  Xen Project: After 15 years, What's Next? - George Dunlap, C...XPDDS18: LCC18:  Xen Project: After 15 years, What's Next? - George Dunlap, C...
XPDDS18: LCC18: Xen Project: After 15 years, What's Next? - George Dunlap, C...
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 
LCEU13: Securing your cloud with Xen's advanced security features - George Du...
LCEU13: Securing your cloud with Xen's advanced security features - George Du...LCEU13: Securing your cloud with Xen's advanced security features - George Du...
LCEU13: Securing your cloud with Xen's advanced security features - George Du...
 
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)
 
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...
XPDDS17: Hypervisor-Based Security: Bringing Virtualized Exceptions Into the ...
 

Similaire à OSSEU18: From Handcraft to Unikraft: Simpler Unikernelization of Your Application - Florian Schmidt, NEC Labs Europe

EMC World 2015 devops-st06 Containers and Converged Infrastructure Deployment
EMC World 2015 devops-st06 Containers and Converged Infrastructure DeploymentEMC World 2015 devops-st06 Containers and Converged Infrastructure Deployment
EMC World 2015 devops-st06 Containers and Converged Infrastructure DeploymentKendrick Coleman
 
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDC
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDCVSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDC
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDCRSD
 
It's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftIt's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftScyllaDB
 
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0xKinAnx
 
“Efficient Video Perception Through AI,” a Presentation from Qualcomm
“Efficient Video Perception Through AI,” a Presentation from Qualcomm“Efficient Video Perception Through AI,” a Presentation from Qualcomm
“Efficient Video Perception Through AI,” a Presentation from QualcommEdge AI and Vision Alliance
 
OPNFV EMC - Benefiting from IT & Net Ops Convergence
OPNFV EMC - Benefiting from IT & Net Ops ConvergenceOPNFV EMC - Benefiting from IT & Net Ops Convergence
OPNFV EMC - Benefiting from IT & Net Ops ConvergencePaul To
 
The UNICORE Project: Unikraft and OpenNebula
The UNICORE Project:  Unikraft and OpenNebulaThe UNICORE Project:  Unikraft and OpenNebula
The UNICORE Project: Unikraft and OpenNebulaOpenNebula Project
 
CSUC - UNICORE Project: UNIKernel Power
CSUC - UNICORE Project: UNIKernel PowerCSUC - UNICORE Project: UNIKernel Power
CSUC - UNICORE Project: UNIKernel PowerUNICORE_project
 
Distributed application usecase on docker
Distributed application usecase on dockerDistributed application usecase on docker
Distributed application usecase on dockerHiroshi Miura
 
Kubernetes for the VI Admin
Kubernetes for the VI AdminKubernetes for the VI Admin
Kubernetes for the VI AdminKendrick Coleman
 
UNICORE Project Technical Overview
UNICORE Project Technical OverviewUNICORE Project Technical Overview
UNICORE Project Technical OverviewUNICORE_project
 
Docker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker, Inc.
 
Infrastructure design for Kubernetes
Infrastructure design for KubernetesInfrastructure design for Kubernetes
Infrastructure design for KubernetesGuillaume Morini
 
Triton + Docker, July 2015
Triton + Docker, July 2015Triton + Docker, July 2015
Triton + Docker, July 2015Casey Bisson
 
Kubernetes Storage Webinar.pptx
Kubernetes Storage Webinar.pptxKubernetes Storage Webinar.pptx
Kubernetes Storage Webinar.pptxEnrico Rampazzo
 
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive KubernetesIBM France Lab
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerSakari Hoisko
 

Similaire à OSSEU18: From Handcraft to Unikraft: Simpler Unikernelization of Your Application - Florian Schmidt, NEC Labs Europe (20)

EMC World 2015 devops-st06 Containers and Converged Infrastructure Deployment
EMC World 2015 devops-st06 Containers and Converged Infrastructure DeploymentEMC World 2015 devops-st06 Containers and Converged Infrastructure Deployment
EMC World 2015 devops-st06 Containers and Converged Infrastructure Deployment
 
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDC
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDCVSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDC
VSPEX Blue, une infrastructure hyper-convergée simple et sûre pour votre SDDC
 
It's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftIt's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with Unikraft
 
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0
Emc vspex customer_presentation_private_cloud_v_mware_smb_2.0
 
“Efficient Video Perception Through AI,” a Presentation from Qualcomm
“Efficient Video Perception Through AI,” a Presentation from Qualcomm“Efficient Video Perception Through AI,” a Presentation from Qualcomm
“Efficient Video Perception Through AI,” a Presentation from Qualcomm
 
OPNFV EMC - Benefiting from IT & Net Ops Convergence
OPNFV EMC - Benefiting from IT & Net Ops ConvergenceOPNFV EMC - Benefiting from IT & Net Ops Convergence
OPNFV EMC - Benefiting from IT & Net Ops Convergence
 
The UNICORE Project: Unikraft and OpenNebula
The UNICORE Project:  Unikraft and OpenNebulaThe UNICORE Project:  Unikraft and OpenNebula
The UNICORE Project: Unikraft and OpenNebula
 
CSUC - UNICORE Project: UNIKernel Power
CSUC - UNICORE Project: UNIKernel PowerCSUC - UNICORE Project: UNIKernel Power
CSUC - UNICORE Project: UNIKernel Power
 
UNICORE Project: Unikernel Power
UNICORE Project: Unikernel PowerUNICORE Project: Unikernel Power
UNICORE Project: Unikernel Power
 
Distributed application usecase on docker
Distributed application usecase on dockerDistributed application usecase on docker
Distributed application usecase on docker
 
Kubernetes for the VI Admin
Kubernetes for the VI AdminKubernetes for the VI Admin
Kubernetes for the VI Admin
 
64-bit ARM Unikernels on uKVM
64-bit ARM Unikernels on uKVM64-bit ARM Unikernels on uKVM
64-bit ARM Unikernels on uKVM
 
UNICORE Project Technical Overview
UNICORE Project Technical OverviewUNICORE Project Technical Overview
UNICORE Project Technical Overview
 
Docker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to Docker
 
Infrastructure design for Kubernetes
Infrastructure design for KubernetesInfrastructure design for Kubernetes
Infrastructure design for Kubernetes
 
The rise of microservices
The rise of microservicesThe rise of microservices
The rise of microservices
 
Triton + Docker, July 2015
Triton + Docker, July 2015Triton + Docker, July 2015
Triton + Docker, July 2015
 
Kubernetes Storage Webinar.pptx
Kubernetes Storage Webinar.pptxKubernetes Storage Webinar.pptx
Kubernetes Storage Webinar.pptx
 
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
 

Plus de The Linux Foundation

XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...The Linux Foundation
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...The Linux Foundation
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...The Linux Foundation
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderThe Linux Foundation
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixThe Linux Foundation
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdThe Linux Foundation
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...The Linux Foundation
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DThe Linux Foundation
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsThe Linux Foundation
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...The Linux Foundation
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...The Linux Foundation
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...The Linux Foundation
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEThe Linux Foundation
 
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information Security
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information SecurityXPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information Security
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information SecurityThe Linux Foundation
 
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSE
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSEXPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSE
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSEThe Linux Foundation
 
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...The Linux Foundation
 
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, Amazon
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, AmazonXPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, Amazon
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, AmazonThe Linux Foundation
 
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARMXPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARMThe Linux Foundation
 
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...The Linux Foundation
 

Plus de The Linux Foundation (20)

XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
 
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information Security
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information SecurityXPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information Security
XPDDS19: Implementing AMD MxGPU - Jonathan Farrell, Assured Information Security
 
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSE
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSEXPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSE
XPDDS19: Support of PV Devices in Nested Xen - Jürgen Groß, SUSE
 
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...
XPDDS19: Application Agnostic High Availability Solution On Hypervisor Level ...
 
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, Amazon
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, AmazonXPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, Amazon
XPDSS19: Live-Updating Xen - Amit Shah & David Woodhouse, Amazon
 
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARMXPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
 
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...
XPDDS19: The Xen-Blanket for 2019 - Christopher Clark and Kelli Little, Star ...
 

Dernier

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Dernier (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

OSSEU18: From Handcraft to Unikraft: Simpler Unikernelization of Your Application - Florian Schmidt, NEC Labs Europe

  • 1. From Handcraft to Unikraft: Simpler Unikernelization of Your Application Florian Schmidt Research Scientist, NEC Labs Europe This work has received funding from the European Union’s Horizon 2020 research and innovation program under grant agreements no. 675806 (“5G CITY”) and 761592 (“5G ESSENCE”). This work reflects only the author’s views and the European Commis- sion is not responsible for any use that may be made of the information it contains.
  • 2. 2 © NEC Corporation 2018 VMs vs Containers ▌VMs have been around for a long time  They allow consolidation, isolation, migration, …
  • 3. 3 © NEC Corporation 2018 VMs vs Containers ▌VMs have been around for a long time  They allow consolidation, isolation, migration, … ▌Then containers came and many people LOVED them. Why?
  • 4. 4 © NEC Corporation 2018 VMs vs Containers ▌VMs have been around for a long time  They allow consolidation, isolation, migration, … ▌Then containers came and many people LOVED them. Why?  “Containers are much faster to bring up than VMs. My VM takes a minute to boot, my container only a second.”
  • 5. 5 © NEC Corporation 2018 VMs vs Containers ▌VMs have been around for a long time  They allow consolidation, isolation, migration, … ▌Then containers came and many people LOVED them. Why?  “Containers are much faster to bring up than VMs. My VM takes a minute to boot, my container only a second.”  “Containers are much smaller. My VM takes 10 GB, my container only a few hundred MB.”
  • 6. 6 © NEC Corporation 2018 VMs vs Containers ▌VMs have been around for a long time  They allow consolidation, isolation, migration, … ▌Then containers came and many people LOVED them. Why?  “Containers are much faster to bring up than VMs. My VM takes a minute to boot, my container only a second.”  “Containers are much smaller. My VM takes 10 GB, my container only a few hundred MB.”  “Containers are much easier to create and deploy. I just write this Dockerfile and I’m done.”
  • 7. 7 © NEC Corporation 2018 Containers vs Unikernels ▌I don’t want to bash containers.  Containers can be great!  For example, I love them for build environments
  • 8. 8 © NEC Corporation 2018 Containers vs Unikernels ▌I don’t want to bash containers.  Containers can be great!  For example, I love them for build environments ▌But VMs have their advantages  Most importantly, strong isolation
  • 9. 9 © NEC Corporation 2018 Containers vs Unikernels ▌I don’t want to bash containers.  Containers can be great!  For example, I love them for build environments ▌But VMs have their advantages  Most importantly, strong isolation 200 250 300 350 400 2002 2004 2006 2008 2010 2012 2014 2016 2018 No.ofsyscalls Linux Release Year
  • 10. 10 © NEC Corporation 2018 Containers vs Unikernels ▌I don’t want to bash containers.  Containers can be great!  For example, I love them for build environments ▌But VMs have their advantages  Most importantly, strong isolation ▌And they do not have to be large, slow, and complicated 200 250 300 350 400 2002 2004 2006 2008 2010 2012 2014 2016 2018 No.ofsyscalls Linux Release Year
  • 11. 11 © NEC Corporation 2018 Containers vs Unikernels ▌I don’t want to bash containers.  Containers can be great!  For example, I love them for build environments ▌But VMs have their advantages  Most importantly, strong isolation ▌And they do not have to be large, slow, and complicated  This is where unikernels come in 200 250 300 350 400 2002 2004 2006 2008 2010 2012 2014 2016 2018 No.ofsyscalls Linux Release Year
  • 12. 12 © NEC Corporation 2018 Traditional VMs vs. Unikernels Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A
  • 13. 13 © NEC Corporation 2018 Traditional VMs vs. Unikernels ▌Unikernels are purpose-built  A single binary containing OS and (single) application  One application  Flat and single address space Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A App A Libs A App B Libs B Unikernels Hardware Hypervisor
  • 14. 14 © NEC Corporation 2018 Traditional VMs vs. Unikernels ▌Unikernels are purpose-built  A single binary containing OS and (single) application  One application  Flat and single address space ▌No isolation within unikernel, but by the hypervisor Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A App A Libs A App B Libs B Unikernels Hardware Hypervisor
  • 15. 15 © NEC Corporation 2018 Traditional VMs vs. Unikernels ▌Unikernels are purpose-built  A single binary containing OS and (single) application  One application  Flat and single address space ▌No isolation within unikernel, but by the hypervisor ▌Can be extremely small and blazingly fast ▌Example: unikernel web server  5-6x more req/s than standard nginx Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A App A Libs A App B Libs B Unikernels Hardware Hypervisor
  • 16. 16 © NEC Corporation 2018 Traditional VMs vs. Unikernels ▌Unikernels are purpose-built  A single binary containing OS and (single) application  One application  Flat and single address space ▌No isolation within unikernel, but by the hypervisor ▌Can be extremely small and blazingly fast ▌Example: unikernel web server  5-6x more req/s than standard nginx  Nearly saturates 40Gb/s link Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A App A Libs A App B Libs B Unikernels Hardware Hypervisor
  • 17. 17 © NEC Corporation 2018 Traditional VMs vs. Unikernels ▌Unikernels are purpose-built  A single binary containing OS and (single) application  One application  Flat and single address space ▌No isolation within unikernel, but by the hypervisor ▌Can be extremely small and blazingly fast ▌Example: unikernel web server  5-6x more req/s than standard nginx  Nearly saturates 40Gb/s link  Image: 670kB, RAM: <32MB Kernel Hardware Kernel App B Libs B Traditional VMs Hypervisor App A Libs A App A Libs A App B Libs B Unikernels Hardware Hypervisor
  • 18. 18 © NEC Corporation 2018 Example: Instantiation Time Comparison 100 101 102 103 104 105 0 200 400 600 800 1000 Time[ms] Number of running guests Process Create Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8 Process: 0.7ms-10ms
  • 19. 19 © NEC Corporation 2018 Example: Instantiation Time Comparison Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8 100 101 102 103 104 105 0 200 400 600 800 1000 Time[ms] Number of running guests Process Create Docker Boot Process: 0.7ms-10ms Docker: 150ms-550ms
  • 20. 20 © NEC Corporation 2018 Example: Instantiation Time Comparison Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8 100 101 102 103 104 105 0 200 400 600 800 1000 Time[ms] Number of running guests Docker Boot Debian Boot Debian Create Process: 0.7ms-10ms Docker: 150ms-550ms Debian: 2.6-82 secs
  • 21. 21 © NEC Corporation 2018 Example: Instantiation Time Comparison Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8 100 101 102 103 104 105 0 200 400 600 800 1000 Time[ms] Number of running guests MiniOS Boot MiniOS Create Process: 0.7ms-10ms Docker: 150ms-550ms Debian: 2.6-82 secs unikernel: 63ms-1.4secs
  • 22. 22 © NEC Corporation 2018 100 101 102 103 104 105 0 200 400 600 800 1000 Time[ms] Number of running guests MiniOS Boot MiniOS Create Example: Instantiation Time Comparison ▌Unikernels can instantiate as fast as containers  Often faster  Except when many are colocated • Speaking of which, what is going wrong there?! • If you’re interested, talk to me later • Bottom line: this is a solvable implementation problem Server: Intel Xeon E5-1630 v3 CPU@3.7GHz (4 cores), 128GB DDR4 RAM, Xen/Linux versions 4.8
  • 23. 23 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs
  • 24. 24 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs ▌So why isn’t everyone using them already?
  • 25. 25 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs ▌So why isn’t everyone using them already? ▌The big problem is unikernel development: Optimized unikernels are manually built
  • 26. 26 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs ▌So why isn’t everyone using them already? ▌The big problem is unikernel development: Optimized unikernels are manually built Building takes several months or even longer • We’ve done it before, multiple times
  • 27. 27 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs ▌So why isn’t everyone using them already? ▌The big problem is unikernel development: Optimized unikernels are manually built Building takes several months or even longer • We’ve done it before, multiple times Potentially lather, rinse, repeat for each target application • We’ve done that too…
  • 28. 28 © NEC Corporation 2018 The Downside ▌So, unikernels: Give you the speed and size of containers  At the strong isolation of VMs ▌So why isn’t everyone using them already? ▌The big problem is unikernel development: Optimized unikernels are manually built Building takes several months or even longer • We’ve done it before, multiple times Potentially lather, rinse, repeat for each target application • We’ve done that too… ▌That’s not an effective way of doing things
  • 29. 29 © NEC Corporation 2018 Unikraft - A Unikernel Framework
  • 30. 30 © NEC Corporation 2018 Unikraft - A Unikernel Framework Motivation ▌ Support wide range of use cases ▌ Provide common code base for unikernel development ▌ Simplify building and optimizing ▌ Support different hypervisors and CPU architectures
  • 31. 31 © NEC Corporation 2018 Unikraft - A Unikernel Framework Motivation ▌ Support wide range of use cases ▌ Provide common code base for unikernel development ▌ Simplify building and optimizing ▌ Support different hypervisors and CPU architectures
  • 32. 32 © NEC Corporation 2018 Unikraft - A Unikernel Framework Motivation ▌ Support wide range of use cases ▌ Provide common code base for unikernel development ▌ Simplify building and optimizing ▌ Support different hypervisors and CPU architectures Our Approach ▌Decompose OS functionality into libraries ▌Unikraft’s two components: Library Pool Build Tool
  • 33. 33 © NEC Corporation 2018 Unikraft - A Unikernel Framework Motivation ▌ Support wide range of use cases ▌ Provide common code base for unikernel development ▌ Simplify building and optimizing ▌ Support different hypervisors and CPU architectures Our Approach ▌Decompose OS functionality into libraries ▌Unikraft’s two components: Library Pool Build Tool ▌Started as an internal project at NEC Labs in early 2017 ▌Made public early on Discussed ideas at Xen Summit 2017 Accepted as a Xen incubator project in October 2017 First public code release in December 2017
  • 34. 34 © NEC Corporation 2018 The Unikraft Way Decompose OS into a set of libraries (“Everything is a library”) Recompose them to meet the needs of particular applications
  • 35. 35 © NEC Corporation 2018 The Unikraft Way Decompose OS into a set of libraries (“Everything is a library”) Recompose them to meet the needs of particular applications profiling memory allocator scheduler drivers timers filesystem network stack Application(s)
  • 36. 36 © NEC Corporation 2018 The Unikraft Way profiling memory allocator scheduler drivers timers filesystem network stack Application(s) Decompose OS into a set of libraries (“Everything is a library”) Recompose them to meet the needs of particular applications
  • 37. 37 © NEC Corporation 2018 The Unikraft Way profiling memory allocator scheduler drivers timers filesystem network stack Application(s) Decompose OS into a set of libraries (“Everything is a library”) Recompose them to meet the needs of particular applications
  • 38. 38 © NEC Corporation 2018 The Unikraft Way profiling memory allocator scheduler drivers timers filesystem network stack Application(s) Once decomposed, we can pick and choose which parts/libraries we actually need for our application Decompose OS into a set of libraries (“Everything is a library”) Recompose them to meet the needs of particular applications
  • 39. 39 © NEC Corporation 2018 Unikraft Overview – Everything as a Library myapp Select / build / port Application 1
  • 40. 40 © NEC Corporation 2018 Unikraft Overview – Everything as a Library main libs drivers libconsole.o libblkfront.o libnetfront.o network stack liblwip.o libtcpip.o libhttp.o memory allocators libbuddy.o libheap.o libmempool.o filesystems libvfs.o libfat.o libext3.o runtimes libocaml.o libpython.o liberlang.o schedulers libcoop.o libpreempt.o librt.o standard libs libc.o libnewlibc.o libopenssl.o myapp Select / build / port Application 1 Select and configure libraries 2
  • 41. 41 © NEC Corporation 2018 Unikraft Overview – Everything as a Library main libs platform libs libxenplat.o drivers libconsole.o libblkfront.o libnetfront.o network stack liblwip.o libtcpip.o libhttp.o memory allocators libbuddy.o libheap.o libmempool.o filesystems libvfs.o libfat.o libext3.o runtimes libocaml.o libpython.o liberlang.o schedulers libcoop.o libpreempt.o librt.o standard libs libc.o libnewlibc.o libopenssl.o libbaremetalplat.o Libkvmplat.o liblinuxuplat.o myapp Select / build / port Application 1 Select and configure libraries 2
  • 42. 42 © NEC Corporation 2018 Unikraft Overview – Everything as a Library architecture libs main libs platform libs libarm32arch.olibx86_64arch.o libxenplat.o drivers libconsole.o libblkfront.o libnetfront.o network stack liblwip.o libtcpip.o libhttp.o memory allocators libbuddy.o libheap.o libmempool.o filesystems libvfs.o libfat.o libext3.o runtimes libocaml.o libpython.o liberlang.o schedulers libcoop.o libpreempt.o librt.o standard libs libc.o libnewlibc.o libopenssl.o libbaremetalplat.o Libkvmplat.o libarm64arm.o liblinuxuplat.o myapp Select / build / port Application 1 Select and configure libraries 2
  • 43. 43 © NEC Corporation 2018 Unikraft Overview – Everything as a Library architecture libs main libs platform libs libarm32arch.olibx86_64arch.o libxenplat.o drivers libconsole.o libblkfront.o libnetfront.o network stack liblwip.o libtcpip.o libhttp.o memory allocators libbuddy.o libheap.o libmempool.o filesystems libvfs.o libfat.o libext3.o runtimes libocaml.o libpython.o liberlang.o schedulers libcoop.o libpreempt.o librt.o standard libs libc.o libnewlibc.o libopenssl.o libbaremetalplat.o Libkvmplat.o libarm64arm.o liblinuxuplat.o myapp Select / build / port Application 1 Select and configure libraries 2 Build3
  • 44. 44 © NEC Corporation 2018 Unikraft Overview – Everything as a Library architecture libs main libs platform libs libarm32arch.olibx86_64arch.o libxenplat.o Unikernels unikraft_linuxu_x86_64unikraft_bare_x86_64 unikraft_bare_arm32 unikraft_bare_arm64 unikraft_xen_x86_64 unikraft_xen_arm32 unikraft_xen_arm64 unikraft_kvm_x86_64 unikraft_kvm_arm32 unikraft_kvm_arm64 drivers libconsole.o libblkfront.o libnetfront.o network stack liblwip.o libtcpip.o libhttp.o memory allocators libbuddy.o libheap.o libmempool.o filesystems libvfs.o libfat.o libext3.o runtimes libocaml.o libpython.o liberlang.o schedulers libcoop.o libpreempt.o librt.o standard libs libc.o libnewlibc.o libopenssl.o libbaremetalplat.o Libkvmplat.o libarm64arm.o liblinuxuplat.o myapp Select / build / port Application 1 Select and configure libraries 2 unikraft_linuxu_arm32 unikraft_linuxu_arm64 Build3 Run4
  • 45. 45 © NEC Corporation 2018 Two Library Types ▌Built-in: functionality specific to Unikraft, live in the main unikraft repo  ukboot  ukschedpreempt …
  • 46. 46 © NEC Corporation 2018 Two Library Types ▌Built-in: functionality specific to Unikraft, live in the main unikraft repo  ukboot  ukschedpreempt … ▌External: software projects external to Unikraft, have their own unikraft-lib repos  lwip  micropython  …
  • 47. 47 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 app_my_python.o
  • 48. 48 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 libmicropython.oapp_my_python.o
  • 49. 49 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libmicropython.oapp_my_python.o
  • 50. 50 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libvfscore.o libmicropython.oapp_my_python.o
  • 51. 51 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libvfscore.o libmicropython.o libschedcoop.o app_my_python.o
  • 52. 52 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libvfscore.o liballocbbuddy.o libmicropython.o libschedcoop.o app_my_python.o
  • 53. 53 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libkvmplat.o libvfscore.o liballocbbuddy.o libmicropython.o libschedcoop.o app_my_python.o
  • 54. 54 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libkvmplat.o libx86_64arch.o libvfscore.o liballocbbuddy.o libmicropython.o libschedcoop.o app_my_python.o
  • 55. 55 © NEC Corporation 2018 Example System ▌Micropython Unikernel for KVM on x86_64 liblwip.o libkvmplat.o libx86_64arch.o libvfscore.o liballocbbuddy.o libmicropython.o libschedcoop.o app_my_python.o Unikernel
  • 56. 56 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool
  • 57. 57 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool ▌ Kconfig/Makefile based
  • 58. 58 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool ▌ Kconfig/Makefile based ▌ make menuconfig
  • 59. 59 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool ▌ Kconfig/Makefile based ▌ make menuconfig  Choose options in the menu that you want for your application
  • 60. 60 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool ▌ Kconfig/Makefile based ▌ make menuconfig  Choose options in the menu that you want for your application  Choose your target platform(s) (currently: Xen, KVM, Linux) and architectures
  • 61. 61 © NEC Corporation 2018 Putting Things Together – The Unikraft Build Tool ▌ Kconfig/Makefile based ▌ make menuconfig  Choose options in the menu that you want for your application  Choose your target platform(s) (currently: Xen, KVM, Linux) and architectures ▌ Save config and make .config
  • 62. 62 © NEC Corporation 2018 A Baseline Example… ▌Xen PV x86_64 binary
  • 63. 63 © NEC Corporation 2018 A Baseline Example… ▌Xen PV x86_64 binary libnolibc.o libukboot.o libukdebug.o libxenplat.o unikraft_xen-x86_64.o unikraft_xen-x86_64 (32,7kB) Final linking
  • 64. 64 © NEC Corporation 2018 A Baseline Example… ▌Xen PV x86_64 binary ▌Boots and prints messages to debug console (with min. 208kB RAM) libnolibc.o libukboot.o libukdebug.o libxenplat.o unikraft_xen-x86_64.o unikraft_xen-x86_64 (32,7kB) Final linking
  • 65. 65 © NEC Corporation 2018 A Baseline Example… ▌Xen PV x86_64 binary ▌Boots and prints messages to debug console (with min. 208kB RAM) ▌More functional example: routing unikernel (click): 4.5 MB (8 MB RAM) libnolibc.o libukboot.o libukdebug.o libxenplat.o unikraft_xen-x86_64.o unikraft_xen-x86_64 (32,7kB) Final linking
  • 66. Building a Unikraft Hello World App
  • 67. 67 © NEC Corporation 2018 Repo Structure ▌Clone the main Unikraft repo git clone git://xenbits.xen.org/unikraft/unikraft.git ▌Clone any external library repos git clone git://xenbits.xen.org/unikraft/libs/newlib.git ▌Create repo for the actual application
  • 68. 68 © NEC Corporation 2018 Repo Structure ▌Clone the main Unikraft repo git clone git://xenbits.xen.org/unikraft/unikraft.git ▌Clone any external library repos git clone git://xenbits.xen.org/unikraft/libs/newlib.git ▌Create repo for the actual application ├── unikraft ├── unikraft-apps │ └── helloworld ├── unikraft-libs │ ├── axtls │ ├── lwip │ ├── micropython │ ├── newlib │ ├── toybox
  • 69. 69 © NEC Corporation 2018 Repo Structure ▌Clone the main Unikraft repo git clone git://xenbits.xen.org/unikraft/unikraft.git ▌Clone any external library repos git clone git://xenbits.xen.org/unikraft/libs/newlib.git ▌Create repo for the actual application ├── unikraft ├── unikraft-apps │ └── helloworld ├── unikraft-libs │ ├── axtls │ ├── lwip │ ├── micropython │ ├── newlib │ ├── toybox Unikraft repo (+ built-in libs)
  • 70. 70 © NEC Corporation 2018 Repo Structure ▌Clone the main Unikraft repo git clone git://xenbits.xen.org/unikraft/unikraft.git ▌Clone any external library repos git clone git://xenbits.xen.org/unikraft/libs/newlib.git ▌Create repo for the actual application ├── unikraft ├── unikraft-apps │ └── helloworld ├── unikraft-libs │ ├── axtls │ ├── lwip │ ├── micropython │ ├── newlib │ ├── toybox Unikraft repo (+ built-in libs) application repo(s)
  • 71. 71 © NEC Corporation 2018 Repo Structure ▌Clone the main Unikraft repo git clone git://xenbits.xen.org/unikraft/unikraft.git ▌Clone any external library repos git clone git://xenbits.xen.org/unikraft/libs/newlib.git ▌Create repo for the actual application ├── unikraft ├── unikraft-apps │ └── helloworld ├── unikraft-libs │ ├── axtls │ ├── lwip │ ├── micropython │ ├── newlib │ ├── toybox Unikraft repo (+ built-in libs) application repo(s) external libraries repos
  • 72. 72 © NEC Corporation 2018 Hello World – Four Required Files (I) UK_ROOT ?= $(PWD)/../../unikraft UK_LIBS ?= $(PWD)/../../unikraft-libs LIBS := $(UK_LIBS)/newlib all: @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS): @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS) Makefile: specify where the main Unikraft repo is, as well as repos for external libraries
  • 73. 73 © NEC Corporation 2018 Hello World – Four Required Files (I) UK_ROOT ?= $(PWD)/../../unikraft UK_LIBS ?= $(PWD)/../../unikraft-libs LIBS := $(UK_LIBS)/newlib all: @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS): @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS) path to unikraft repo Makefile: specify where the main Unikraft repo is, as well as repos for external libraries
  • 74. 74 © NEC Corporation 2018 Hello World – Four Required Files (I) UK_ROOT ?= $(PWD)/../../unikraft UK_LIBS ?= $(PWD)/../../unikraft-libs LIBS := $(UK_LIBS)/newlib all: @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS): @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS) path to unikraft repo path to external libs Makefile: specify where the main Unikraft repo is, as well as repos for external libraries
  • 75. 75 © NEC Corporation 2018 Hello World – Four Required Files (I) UK_ROOT ?= $(PWD)/../../unikraft UK_LIBS ?= $(PWD)/../../unikraft-libs LIBS := $(UK_LIBS)/newlib all: @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS): @make -C $(UK_ROOT) A=$(PWD) L=$(LIBS) $(MAKECMDGOALS) path to unikraft repo path to external libs external libs needed Makefile: specify where the main Unikraft repo is, as well as repos for external libraries
  • 76. 76 © NEC Corporation 2018 Hello World – Four Required Files (II) $(eval $(call addlib,apphelloworld)) APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c Makefile.uk: specifies the sources to build for the application
  • 77. 77 © NEC Corporation 2018 Hello World – Four Required Files (II) $(eval $(call addlib,apphelloworld)) APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c register app with unikraft build system Makefile.uk: specifies the sources to build for the application
  • 78. 78 © NEC Corporation 2018 Hello World – Four Required Files (II) $(eval $(call addlib,apphelloworld)) APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c register app with unikraft build system Add main.c to build Makefile.uk: specifies the sources to build for the application
  • 79. 79 © NEC Corporation 2018 Hello World – Four Required Files (III) ### Invisible option for dependencies config APPHELLOWORLD_DEPENDENCIES bool default y select LIBNOLIBC if !HAVE_LIBC ### App configuration config APPHELLOWORLD_PRINTARGS bool "Print arguments" default y help Prints argument list (argv) to stdout Config.uk: to populate Unikraft’s menu with application-specific option
  • 80. 80 © NEC Corporation 2018 Hello World – Four Required Files (IV) #include <stdio.h> /* Import user configuration: */ #include <uk/config.h> int main(int argc, char *argv[]) { printf("Hello world!n"); #if CONFIG_APPHELLOWORLD_PRINTARGS int i; printf("Arguments:s"); for (i=0; i<argc; ++i) printf(" "%s"", argv[i]); printf("n"); #endif } main.c: source file to provide (at least) a main() function
  • 81. 81 © NEC Corporation 2018 Hello World – Four Required Files (IV) #include <stdio.h> /* Import user configuration: */ #include <uk/config.h> int main(int argc, char *argv[]) { printf("Hello world!n"); #if CONFIG_APPHELLOWORLD_PRINTARGS int i; printf("Arguments:s"); for (i=0; i<argc; ++i) printf(" "%s"", argv[i]); printf("n"); #endif } main.c: source file to provide (at least) a main() function Unikernel entry point after boot
  • 82. 82 © NEC Corporation 2018 Hello World – Four Required Files (IV) #include <stdio.h> /* Import user configuration: */ #include <uk/config.h> int main(int argc, char *argv[]) { printf("Hello world!n"); #if CONFIG_APPHELLOWORLD_PRINTARGS int i; printf("Arguments:s"); for (i=0; i<argc; ++i) printf(" "%s"", argv[i]); printf("n"); #endif } main.c: source file to provide (at least) a main() function Unikernel entry point after boot defined by Config.uk
  • 84. 84 © NEC Corporation 2018 How To Port an External Library
  • 85. 85 © NEC Corporation 2018 How To Port an External Library ▌Write Makefile.uk and add the external library source files to it  The library’s original Makefile can serve as a template  I’ll show how to in a second
  • 86. 86 © NEC Corporation 2018 How To Port an External Library ▌Write Makefile.uk and add the external library source files to it  The library’s original Makefile can serve as a template  I’ll show how to in a second ▌Write Config.uk with library-specific options
  • 87. 87 © NEC Corporation 2018 How To Port an External Library ▌Write Makefile.uk and add the external library source files to it  The library’s original Makefile can serve as a template  I’ll show how to in a second ▌Write Config.uk with library-specific options  Isn’t strictly required  But at least a simple “library on/off” option for kbuild is a good idea
  • 88. 88 © NEC Corporation 2018 How To Port an External Library ▌Write Makefile.uk and add the external library source files to it  The library’s original Makefile can serve as a template  I’ll show how to in a second ▌Write Config.uk with library-specific options  Isn’t strictly required  But at least a simple “library on/off” option for kbuild is a good idea ▌Sometimes a bit of glue code is needed  E.g., in newlib to link POSIX thread creation to Unikraft’s thread library
  • 89. 89 © NEC Corporation 2018 How To Port an External Library ▌Write Makefile.uk and add the external library source files to it  The library’s original Makefile can serve as a template  I’ll show how to in a second ▌Write Config.uk with library-specific options  Isn’t strictly required  But at least a simple “library on/off” option for kbuild is a good idea ▌Sometimes a bit of glue code is needed  E.g., in newlib to link POSIX thread creation to Unikraft’s thread library ▌ In this early phase: implement core unikraft functionality that is required to support your library, for example:  File descriptors/sockets  Threading support
  • 90. 90 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS)))
  • 91. 91 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) Register library with unikraft build system
  • 92. 92 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo Register library with unikraft build system
  • 93. 93 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo Register library with unikraft build system Download and patch library code $(eval $(call fetch,libaxtls,$(LIBAXTLS_URL))) $(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION)))
  • 94. 94 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo ################################################################################ # Library includes ################################################################################ CINCLUDES-y += -I$(LIBAXTLS_BASE)/include -I$(LIBAXTLS_BASE)/crypto -I$(LIBAXTLS_BASE)/ssl Register library with unikraft build system Download and patch library code $(eval $(call fetch,libaxtls,$(LIBAXTLS_URL))) $(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION))) The library’s original include directories
  • 95. 95 © NEC Corporation 2018 How To Port an External Library – Makefile.uk ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo ################################################################################ # Library includes ################################################################################ CINCLUDES-y += -I$(LIBAXTLS_BASE)/include -I$(LIBAXTLS_BASE)/crypto -I$(LIBAXTLS_BASE)/ssl ################################################################################ # sources ################################################################################ LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c … LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c Register library with unikraft build system Download and patch library code $(eval $(call fetch,libaxtls,$(LIBAXTLS_URL))) $(eval $(call patch,libaxtls,$(LIBAXTLS_PATCHDIR),newlib-$(LIBAXTLS_VERSION))) The library’s original include directories The library’s original source files
  • 96. 96 © NEC Corporation 2018 How To Port an External Library: Outlook ▌This can be a lot of busywork ▌What about special cases?  Special build systems  Additional steps other than compiling/linking  Preprocessing/dependencies? ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo ################################################################################ # Library includes ################################################################################ CINCLUDES-y += -I$(LIBAXTLS_BASE)/include -I$(LIBAXTLS_BASE)/crypto -I$(LIBAXTLS_BASE)/ssl ################################################################################ # sources ################################################################################ LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c … LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c
  • 97. 97 © NEC Corporation 2018 How To Port an External Library: Outlook ▌This can be a lot of busywork ▌What about special cases?  Special build systems  Additional steps other than compiling/linking  Preprocessing/dependencies? ▌Coming soon: Build passthrough mode  Currently under review  Vastly simplifies Makefile creation work  Especially for large or complicated libraries ################################################################################ # Library registration ################################################################################ $(eval $(call addlib_s,libaxtls,$(LIBAXTLS))) ################################################################################ # Source Download ################################################################################ # Nothing here: sources are small and included directly in the uk library repo ################################################################################ # Library includes ################################################################################ CINCLUDES-y += -I$(LIBAXTLS_BASE)/include -I$(LIBAXTLS_BASE)/crypto -I$(LIBAXTLS_BASE)/ssl ################################################################################ # sources ################################################################################ LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/aes.c LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/bigint.c … LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/crypto/sha512.c ################################################################################ # build ################################################################################ UK_ARS-y += $(LIBAXTLS_ORIGIN)/$(LIBAXTLS_DIR)/build/libaxtls.o LIBAXTILS/.prepared: $(call verbose_cmd,CONFIGURE,libaxtls: $@, mkdir -p $(LIBAXTLS_ORIGIN)/$(LIBAXTLS_DIR) && ./configure && make)
  • 99. 99 © NEC Corporation 2018 Available Libraries ▌Core Libraries libfdt • Flat device tree parser libnolibc • A tiny libc replacement libukalloc • Memory allocator abstraction libukallocbbuddy • Binary buddy allocator libukargparse • Argument parser library libukboot • Unikraft bootstrapping libukdebug • Debug and kernel printing • Assertions, hexdump libuksched • Scheduler abstraction libukschedcoop • Cooperative scheduler ▌External Libraries  libnewlib • libc originally aimed at embedded devices  liblwip • lightweight TCP/IP stack ▌Architecture Libraries  libarmmath • 64bit arithmetic on ARMv7  libx86ctx • Extended register support for x86 ctx switch ▌Platform Libraries  libxenplat • Xen (PV) • x86_64, ARMv7  libkvmplat • QEMU/kvm • x86_64, ARM64, virtio-net support  liblinuxu • Linux userspace • x86_64, ARMv7 libukbus • abstraction for device buses, e.g., PCI libuklock • mutexes and semaphores libukmpi • message-passing interface libuknetdev • network device support libukswrand • pseudo-RNG interface libuktimeconv • time calculation/conversion libvfscore • basic file descriptor management / mapping / handling
  • 100. 100 © NEC Corporation 2018 Current work: coming soon (in the pipeline) or being ported ▌Core Libraries libukschedpreempt • Pre-emptive scheduler ▌External Libraries libclick • Click modular router (e.g., for NFV) libaxtls • TLS support aimed at embedded devices libstdc++ libmicropython • Python implemented for microcontrollers ▌Architecture Libraries libarmctx • Extended register support for Arm ctx switch ▌Platform Libraries libxenplat • ARM64 support • netfront support liblinuxu • tap device based networking support
  • 101. 101 © NEC Corporation 2018 The road ahead ▌First public alpha release (without much functionality) in December ▌Released as a Xen incubator project ▌Initially, mostly internal contributors from NEC Labs ▌Currently external contributors from  Romania (netfront, scheduling; from University Politehnica Bucharest)  Israel (bare-metal support)  China (ARM64 support; from ARM) ▌We welcome additional contributors! ▌Resources:  Code: https://xenbits.xen.org/gitweb/?pf=unikraft (make sure you check out staging!)  On-line documentation: unikraft.org  IRC: #unikraft @ freenode  Mailing list: minios-devel@lists.xen.org