title | date | reveal_theme | reveal_transition | reveal_transitionSpeed | reveal_slideNumber |
---|---|---|---|---|---|
EbbRT+NodeJS (Unikernel 7/11/17) |
2017-07-12 |
sky |
slide |
fast |
false |
James Cadden, PhD Candidate
Boston University
EbbRT is a framework for building per-application library operating systems
==
Reduce the effort to construct and maintain library operating systems without inhibiting specialization
==
==
==
==
-
Lightweight execution environment
-
Deployed directly on (virtual) hardware interfaces
-
Single-application, single address space
==
Application with LibOS and hypervisor
==
Decompose the LibOS into a set of system components...
==
...that are customizable, extensible, swappable, removable
==
Set chosen to fit the needs of a particular application
==
Statically compiled components combined at linktime
==
Application + OS compiled into single bootable image
-
Per-core event-loop
-
Non-preemptive execution / cooperative scheduling
-
Identity mapped memory w/ large pages
==
Ebbs encapsulate major system component functionality
==
-
Application source compiled using modified GNU toolchain
-
x86_64-ebbrt
build target -
Includes
libstdc++
,libc
(newlib), C++/BOOST libraries -
Bootable
.elf
binary withkvm/qemu
driver support
==
- C++14 objects with
EbbRef
type
auto myEbb=EbbRef<MyEbbType>();
myEbb->foo();
- Overload dereference operand to support specialized construction
==
Ebbs may have per-core representative instances
==
Instances are created lazily per-core
==
Instances are created lazily per-core
==
Instances are created lazily per-core
==
Or a single shared instance
==
EbbRT provides support for distributed Ebb invocation
==
-
Statically compiled, chosen at link time
-
Promote targeted customization
-
Promote reuse of specialized implementation
==
-
Invoke requests trigger a new action execution
-
Consider client request latency (service times) and platform throughput
==
Invoker nodes deploys actions in isolated containers
==
Specialized invoker OS for deploying actions
==
-
First-order design for runtime executions
-
Simplifications user access, resource provisioning, isolation, devices,
==
EbbRT-NodeJS
==
JavaScript files arrive via network
==
JavaScript files arrive via network
==
Scripts are compiled and executed by V8
==
Dependencies decomposed into per-core Ebb instances
==
==
libuv: multi-platform system support library (asynchronous I/O)
==
libuv: multi-platform system support library (asynchronous I/O)
==
==
==
==
==
==
-
Introduce multicore invoker to EbbRT-NodeJS
-
Determine limits of existing
libuv
support -
Integrate EbbRT-Invoker into OpenWhisk
Questions?
==
==
==
-
Event-driven multicore TCP/IP network stack
-
Identity mapped memory w/ large pages
-
Zero-copy I/O paths, asynchronous primatives
==
==
2x throughput at SLA
==