Osv: Probably the Best OS for Cloud Workloads You've Never Heard Of (Cloud Foundry Summit 2014)

Post on 27-Jan-2015

108 views 1 download

Tags:

description

Technical Track presented by Roman Shaposhnik, Sr. Manager, Hadoop at Pivotal. OSv is the revolutionary new open source technology that combines the power of virtualization and micro-services architecture. This combination allows unmodified applications deployed in a virtualized environment to outperform bare-metal deployments. Yes. You've heard it right: for the first time ever we can stop asking the question of how much performance would I lose if I virtualize. OSv lets you ask a different question: how much would my application gain in performance if I virtualize it. This talk will start by looking into the architecture of OSv and the kind of optimizations it makes possible for native, unmodified applications. We will then focus on JVM-specific optimizations and specifically on speedups available to big data management distributed applications. Finally, we will look into the relationship between OSv and Docker and how that layering can help make OSv a secret sauce for turbo-charging Cloud Foundry application deployments.

Transcript of Osv: Probably the Best OS for Cloud Workloads You've Never Heard Of (Cloud Foundry Summit 2014)

© 2014

OSv: PROBABLY THE BEST OS FOR CLOUD WORKLOADS YOU'VE NEVER HEARD OF

Roman Shaposhnik @rhatr, Pivotal Inc.

Why do we dig PaaS?

‘cuz its awesome!

No, but seriously?

myApp $ cf push …

service #N

service #1

service #Z

service #M

What about stateful?

HDFS

Zookeeper

HBaseregionserver

…I am aliveWho Am I?What do I do?

HBaseregionserver

And when it fails?

HDFS

Zookeeper

HBaseregionserver

…Node diedYou, pitch in!Aye, aye captain

μservice-based deployment

HDFS

Zookeeper

HBaseregionserver

…I am aliveWho Am I?What do I do?

HBaseregionserver

Lets zoom in

service #N

service #1

Anatomy of a μservice

Hardware

“Stuff”

[Java] Virtual Machine

μservice code

How are we doing it today?

Hardware

pkg1

[Java] Virtual Machine

μservice code

pkgN………….“OS”Linux kernel

Puppet, Chef

Huge VM image

Is there a better way?

vHardware

Hardware

[Java] Virtual MachinelibFS, libC, libJVM

μservice code

Application-specificstatic linking

Tiny VM image AKA unikernel

Hardware-assisted virtualization

What the heck is a FOOkernel?• What OS design courses have taught us?

– microkernels vs. monolithic kernels• What did they left behind?

– exokernels, nano• What they should’ve taught us instead:

– unikernels, anykernels

Unikernels• “Unikernels: library operating systems for the

cloud” came out in 2013• A “library” operating system• A kernel that can only support one process

Anykernels• Programming discipline for kernel code reuse• “The Design and Implementation of the

Anykernel and Rump Kernels” by A. Kantee• Capabilities

– NetBSD filesystems as Linux processes– User-space TCP/IP stack

OSv from Cloudius Systems• A unikernel for “POSIX” and memory managed

platforms (JVM, Go, Lua)• Anykernel’ish

– E.g. ZFS• Runs on top of KVM, Xen, VirtualBox, VMWare• Looks like an app to the host OS• Small, fast and easy to manage at scale

OSv manifesto• Run existing Linux applications• Run existing Linux applications faster• Make boot time ~= exec time• Explore APIs beyond POSIX• Leverage memory managed platforms (JVM, Go)• Stay open

What’s inside?

single address space in “kernel mode”

“kernel threads”“user threads”

diskZFS virtioC++ kernel code

dynamic linker

libjvm.soifconfig.so

TCP/IP

iface

Anything it can’t do?• A 100% replacement for a Linux kernel

– No fork()ing• No process isolation• The least amount of device drivers ever

Virtualization vs. performance• Network-intensive apps:

– unmodified: 25% gain in throughput 47% decrease in latency

– non-POSIX APIs use for Memcached: 290% increase in performance

• Compute-intensive apps:– YMMV

Van Jacabson’s net channels

socket

TCP

IP

iface

socket

TCP

IP

iface

lock

lock

lock

Traditional TCP/IP stack

app thread kernel (IRQ)

send/recv

socket

TCP

IP

iface

channel

classifier

iface

lock

OSv TCP/IP stack

app thread kernel (IRQ)

send/recv

Memory management in UNIX

OS Memory

Process Memory

JVM Heap

Process Memory

JVM Heap

Memory management in OSv

OS Memory

Process Memory

JVM Heap

JVM balooning (no more -Xmx)

JVM Heap

OS object

Turbo charging JVM GC

object 1 object 2

Turbo charging JVM GC

object 1 object 2

Turbo charging JVM GC

object 1 object 2

CPU MMU assisted tracking table

But what about Docker?

Jailed FS, net, etc.

Hardware

[Java] Virtual MachinelibFS, libC, libJVM

μservice code

Application-specificstatic linking

Docker image

Common, shared kernel

Docker != LXC• $ docker run roman/PetClinic• Socially-driven image sharing

Ubuntu 14.04

Canonical

Tomcat

Pivotal

Go

Google

PetClinic

Roman

PetClinic

service #N

service #1$ docker run

Why should it work this time?• Unikernels/exokernels back in ’90• JVM-on-bare-metal (Azul, BEA, etc.) back in ‘00• Things they didn’t have back then

– HW-assisted virtualization (KVM, XEN, etc.)– Elastic infrastructure oriented architectures– CloudFoundry

Elastic, next generation datacenter• Commodity, rack-provisioned Hardware• Commodity, JeOS to get to Docker++

– CoreOS, SmartOS• Docker++ as a common backed• OSv (really KVM, XEN)• “GitHub” for μservies images

Finally killing DevOps• Ops (IT) maintains the bare OS• Devs maintain the images

Finally killing DevOps• Ops (IT) maintains the bare OS• Devs maintain the images

Guinea pigs so far• Cloudius

– Memcached– Apache Cassandra– Redis

• Pivotal– Hadoop ecosystem

Where do we need your help?• All of the above ;-)• CloudFoundry integration

– $ cf push roman/petclinic ?– Docker registry as a backend for BuildPacks ?– Two-level scheduling for Hadoop ecosystem

Questions?

By @cloud_opinion

Imagine no platformsI wonder if you canNo need for PAAS or IAASA brotherhood of bare metal

Imagine there is no VMIt's easy if you tryNo host below usAbove us only apps