20141111_sos3_gallo

56
11th November 2014 - Andrea Gallo Enabling Server Class Workloads for ARM Servers

Upload: andrea-gallo

Post on 16-Jul-2015

121 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 20141111_SOS3_Gallo

11th November 2014 - Andrea Gallo

Enabling Server Class Workloadsfor ARM Servers

Page 2: 20141111_SOS3_Gallo

ARM Progress in Servers

ARM-based servers on track▪ 16 licenses now signed for server applications▪ 2013: Chip development▪ 2014: Software optimization accelerates▪ 2015: First production systems▪ 2018: ARM expects 10-15% share

of total server market

Data Center Workloads are Changing

Today Next 3 Years 5 Years +

Largediscrete

tasks

Page 3: 20141111_SOS3_Gallo

● Linaro is a collaborative software engineering company funded by members

● Instead of duplicating effort for common open source software, competitors share development costs and software is built once

● The work is carried out in the open, tested and then upstreamed into the relevant open source projects: kernel.org, Gnu, Fedora, Ubuntu, OpenJDK etc.

Linaro Overview

Page 4: 20141111_SOS3_Gallo

Linaro Organization

● Founded 2010

● Now 30 members

● $50M annual revenue

● >200 OSS engineers

● Global footprint

Technical Steering Committee (TSC)

Offi

ce o

f the

CTO

(OC

TO)

Enterprise Group (LEG)16 companies

Digital Home Group (LHG)8 companies

Mobile Group (LMG)10 companies

Networking Group (LNG)12 companies

Core Development

Kernel

Power Management

Security

Virtualization

Product Technology

LAVA Software Linaro Stable Kernel (LSK) Toolchain

Platform Engineering

Builds & Baselines

Systems

LAVA Lab

QA Services

MemberServices

Club/Core Services

Linaro Developer Technical Support

(LDTS)

Field Engineering

Page 5: 20141111_SOS3_Gallo

Confidential

CORE

CLUB

GROUP

COMMUNITY

Page 6: 20141111_SOS3_Gallo

● Linux 3.17 October 2014 ● 12,353 total patch sets

in this release

● 180 known companies contributed

● Linaro is #4 company contributor; in top 5 for last 8 kernel versions (since 3.10)

Linux Kernel Upstreaming

Source: http://www.remword.com/kps_result/3.17_whole.html

Top Linux 3.17 Patchset Contributors by Company

1 Unknown/Hobbyists 3705 (30.00%)

2 Intel 1261 (10.21%)

3 Red Hat 980 (7.93%)

4 Samsung 491 (3.97%)

5 Linaro 412 (3.34%)

6 Vision Engraving & Routing 393 (3.18%)

7 Novell 326 (2.64%)

8 Texas Instruments 306 (2.48%)

9 Renesas Electronics 263 (2.13%)

10 Google 227 (1.84%)

Page 7: 20141111_SOS3_Gallo

Linaro Projects

Page 8: 20141111_SOS3_Gallo

Confidential

● OSS for the digital home ● W3C EME Secure

Media playback for RDK and Android

● Middleware and user-space stack

● DRM, DLNA, CVP-2, HTML5

● LSK kernel version for STB/IPTV

● Common media frameworks

● OSS for mobile devices● Android 64 bit, “L”● big.LITTLE power

management● QEMU based Android

development● 64-bit Chromium browser

● Support members, ARM and Google Android development

● OSS for networking ● Real Time Support● Virtualization● Core isolation● OpenDataPlane (ODP)● Big-endian legacy support

● ODP cross-platform support for SoC accelerators

● OSS for ARM servers● UEFI/ACPI● KVM/Xen● ARMv8 optimization● OpenJDK, Hadoop,

OpenStack

● Reduces fragmentation, cost, accelerates time to market

Linaro Segment GroupsDigital Home - LHG Mobile - LMG Networking - LNG Enterprise - LEG

Page 9: 20141111_SOS3_Gallo

● Formed in November 2012● enable the ARM server ecosystem● share costs of the enablement

engineering● focus on standards, avoid

fragmentation● identify, test and optimise

workloads and core libraries

Linaro Enterprise Group (LEG)

http://wiki.linaro.org/LEG

Page 10: 20141111_SOS3_Gallo

Engineering (1): enablement

● All patches already upstream or under deep constructive review● Strong engagement with all maintainers

Page 11: 20141111_SOS3_Gallo

Engineering (2): workloads

Page 12: 20141111_SOS3_Gallo

● LEG projects agreed and prioritized by LEG Steering Committee● One representative per member, plus Linaro LEG Director

● ARM Boot Architecture● ARM Server Base System Architecture; ACPI, UEFI, Grub; ARM Trusted firmware

● KVM and Xen Virtualization● Stable ARM kernel version based on upstream● LAMP Stack optimization

● HDFS CRC, LibTBB, CRC, Hugepages, OpenSSL

● Facebook HipHop JIT● High performance OpenJDK for ARMv8 with C1 and C2 JIT

Engineering I

Page 13: 20141111_SOS3_Gallo

● Middleware and user-space stack testing● Hadoop, OpenStack, Ceph

● Testing through multinode CI validation in LAVA● ARMv8 Ubuntu, Fedora/Red Hat and OpenStack builds

● LEG also works with Linaro core working groups and can request resources through the Linaro Technical Steering Committee (TSC)● ARMv8 64 bit toolchain optimization● Multi-core power management

● Security and Secure boot using Trustzone and ARM Trusted Firmware

Engineering II

Page 14: 20141111_SOS3_Gallo

● UEFI● Aligned ARM Tianocore to other architectures, boot as an EFI application, runtime

services, pass ACPI tables from firmware, support for SMBIOS 3.0● Support GRUB and network boot● Ported GNUEFI to build EFI apps easily● Verified Tianocore Secure boot and ported the Shim layer to ARM● Ported UEFI to EL1 as a guest in KVM/QEMU hypervisor (ongoing for Xen)● Established a monthly UEFI release rebased on Tianocore EDK2 + all Linaro patches,

tested with UEFI SCT suite● ACPI

● Ported ACPICA core kernel support and tools to ARM● Ported key ARM core peripherals to ACPI● Able to boot ARM FVP, Juno, AMD Seattle and Cavium Thunder-X model via ACPI● Developed a PCC driver to support the new CPPC power management model● Ported all reference test suites to ARM, e.g. FWTS, ACPI API test, ACPI ASL test, etc.● Releasing an updated LEG ACPI kernel for every new weekly kernel 3.xx-rc

Achievements (1)

Page 15: 20141111_SOS3_Gallo

● OpenJDK● Excellent cooperation with Red Hat on OpenJDK C1 and C2 JIT● Driven by OpenJDK8, backported to OpenJDK7 and being forward ported to

OpenJDK9● On par with x86 as JIT performance vs interpreted code● Close to 10,000 tests executed every night: Mauve, JTREG, JCStress, SPECjbb2013● Hadoop TeraSort and Jenkins as functional testing workloads

● Optimisations for the LAMP Webserver workload● ARMv8 assembly tuning for OpenSSL, CRC32, etc. up to 5x-16x speed up● Hugepages, fast_gup, etc.

● OpenStack● Built OpenStack on ARMv8 with KVM/QEMU (ongoing for Xen)● Running the Tempest test suite and the Rally benchmarking suite● Functional test deploying multiple VM’s to run Java JTREG testing in parallel

● Early proof of concept with Docker and Go

Achievements (2)

Page 16: 20141111_SOS3_Gallo

it’s time for some cloud and server stuff now….

Page 17: 20141111_SOS3_Gallo

Platform as a Service (PaaS)

Infrastructure as a Service (IaaS)

Software as a Service (SaaS)

Page 18: 20141111_SOS3_Gallo

Platform as a Service (PaaS)

Infrastructure as a Service (IaaS)

Software as a Service (SaaS)

Database as a Service (DBaaS)Mobile Backend as a service (MBaaS)

Logging as a Service (LaaS)

Desktop as a Service (DaaS)Data as a Service (DaaS)

Payments as a service (PaaS)

Security as a service (SECaaS)Network as a service (NaaS) IT as a service (ITaaS)

Storage as a service (STaaS)

Location as a service (LaaS)

Recovery as a service (RaaS)

Mobility as a Service (MaaS)

Page 19: 20141111_SOS3_Gallo

Let’s start with one remote machine

Page 20: 20141111_SOS3_Gallo

Let’s add few more remote machines

Page 21: 20141111_SOS3_Gallo

It is not sustainable and not scaling

Page 22: 20141111_SOS3_Gallo

Let’s go back to one control point

Page 23: 20141111_SOS3_Gallo

Let’s add nodes now

Page 24: 20141111_SOS3_Gallo

We can now run multiple VM’s per node

Page 25: 20141111_SOS3_Gallo

We can run multiple runtimes per VM

Page 26: 20141111_SOS3_Gallo

And one or more apps per runtime

Page 27: 20141111_SOS3_Gallo

PaaS

SaaS

IaaS

It’s all ...as a Service

Page 28: 20141111_SOS3_Gallo

OpenStack logical architecture

http://docs.openstack.org/admin-guide-cloud/content/logical-architecture.html

Page 29: 20141111_SOS3_Gallo

OpenStack conceptual architecture

http://www.solinea.com/blog/openstack-grizzly-architecture-revisited

Page 30: 20141111_SOS3_Gallo

OpenStack software diagram

http://www.openstack.org/themes/openstack/images/openstack-software-diagram.png

Page 31: 20141111_SOS3_Gallo

OpenStack modules

http://www.ca.com/us/lpg/ca-technology-exchange/sunny-outlook-for-openstack-clouds.aspx

Page 32: 20141111_SOS3_Gallo

It’s running on ARM 64-bit now!

http://www.ca.com/us/lpg/ca-technology-exchange/sunny-outlook-for-openstack-clouds.aspx

Page 33: 20141111_SOS3_Gallo

It’s running on ARM 64-bit now!

● Long cooperation with Canonical and Red Hat engineers● Reusing pre-built DevStack packages from Ubuntu● Leveraging on LEG kernel and Linaro KVM work● Running on real ARM 64-bit hardware,

APM X-Gene and HP Moonshot● Running all applicable Tempest tests

● Ongoing● PackStack packages from Fedora● libvirt running on XEN

Page 34: 20141111_SOS3_Gallo

● AARCH64 port of OpenJDK● Based on same codebase as x86 OpenJDK● 95%+ code in common with Oracle JDK● Same relative C2 vs interpreter JIT performance within a few % as Oracle JDK● Goal is to track all x86 optimisations / features● No support for ARMv7 or earlier or for 32 bit on ARMv8

● Three releases are supported: JDK7, JDK8 and JDK9

OpenJDK on ARMv8

Page 36: 20141111_SOS3_Gallo

● Daily native build of Hadoop from source● Daily benchmark testing

● Client and server run of Terasort to test for performance regression

● Single node testing only.

● Looking at multinode testing

● Optimisation focused on optimising OpenJDK for Hadoop● +24% improvement since FCS release in April

● Some optimisation on Hadoop directly● CRC optimisation using SIMD

● Pushed to list but not yet adopted upstream

Hadoop Testing / Optimisation

Page 37: 20141111_SOS3_Gallo

Demonstrated at LCU14:OpenStack running OpenJDK JTREG testing with Jenkins

LXC 0..3

OpenStack Cloud Controller

Compute Node 0

Compute Node 1

Page 38: 20141111_SOS3_Gallo

● 3x APM Mustang systems running Ubuntu Trusty 14.04● All services deployed with juju● Mustang 01 as cloud controller and jenkins master with LXC● Mustang 02 and 03 as OpenStack compute nodes with KVM

● Run a subset of the OpenJDK JTREG test regression harness● jenkins dynamically provisions SIX VM’s instances via OpenStack on Mustang 2 and 3● the VM’s are destroyed upon test completion

Demo Overview

Page 39: 20141111_SOS3_Gallo

What’s the effort and cost to port OpenStack?

let’s review few open source projects

let’s rely on ohloh.net and the co.co.mo. model

http://csse.usc.edu/csse/research/COCOMOII/cocomo_main.html

Page 40: 20141111_SOS3_Gallo

OpenStack: lines of code

Page 41: 20141111_SOS3_Gallo

OpenStack: commits per month

Page 42: 20141111_SOS3_Gallo

Hadoop: lines of code

Page 43: 20141111_SOS3_Gallo

Hadoop: commits per month

Page 44: 20141111_SOS3_Gallo

Linux Kernel: lines of code

Page 45: 20141111_SOS3_Gallo

Linux Kernel: commits per month

Page 46: 20141111_SOS3_Gallo

Chrome: lines of code

Page 47: 20141111_SOS3_Gallo

Chrome: commits per month

Page 48: 20141111_SOS3_Gallo

Comparison

Project SLOC (M) Commits/month Start date

OpenStack 2 3992 2010*OpenJDK 8 5 983 2007Hadoop 2.5 219 2006mongoDB 0.6 500 2007Linux Kernel 17 6000 2002Google Chrome 8 5000 2008

(*) 1st commit for OpenStack was in 2006 but really picked up in mid 2010

● OpenStack is still relatively small but growing as fast as the Linux Kernel itself…

Page 49: 20141111_SOS3_Gallo

What about OpenStack on ARM then?

Page 50: 20141111_SOS3_Gallo

a.k.a. percussive maintenance

Tapping the server with a hammer: $0.00.Knowing where to hit it: $5,000.00.

The Fonzarelli Fix

http://tvtropes.org/pmwiki/pmwiki.php/Main/PercussiveMaintenance

Page 51: 20141111_SOS3_Gallo

● nova: "Support setting a machine type to enable ARMv7/AArch64 guests to boot"http://git.openstack.org/cgit/openstack/nova/commit/?id=15d4f8a3af1b4e105d91e6b66d7b19187fbd41af

● libvirt: "AArch64: Add AArch64 architecture to list of valid arches."http://libvirt.org/git/?p=libvirt.git;a=commit;h=670c08afd461cba6164f7a8a643f5a5b41782e8d

● libvirt: "AArch64: Porting of armv7l conditons to run qemu for aarch64."http://libvirt.org/git/?p=libvirt.git;a=commit;h=27e32e0f3d4d5840cee7e361bdff94c68ae181e2

● libvirt: "AArch64: CPU Support for AArch64 (ARMv8 64bit)."http://libvirt.org/git/?p=libvirt.git;a=commit;h=5cb6816715968dc08486307bd1894dc91e22342c

● libvirt: "qemu: Add support for virt machine type with virtio-mmio devices on armv7"http://libvirt.org/git/?p=libvirt.git;a=commit;h=c7ccd2c44be99b81ffce29374faeab3d1644a151

Patches available upstream

Page 52: 20141111_SOS3_Gallo

● nova: "Support setting a machine type to enable ARMv7/AArch64 guests to boot"http://git.openstack.org/cgit/openstack/nova/commit/?id=15d4f8a3af1b4e105d91e6b66d7b19187fbd41af

● libvirt: "AArch64: Add AArch64 architecture to list of valid arches."http://libvirt.org/git/?p=libvirt.git;a=commit;h=670c08afd461cba6164f7a8a643f5a5b41782e8d

● libvirt: "AArch64: Porting of armv7l conditons to run qemu for aarch64."http://libvirt.org/git/?p=libvirt.git;a=commit;h=27e32e0f3d4d5840cee7e361bdff94c68ae181e2

● libvirt: "AArch64: CPU Support for AArch64 (ARMv8 64bit)."http://libvirt.org/git/?p=libvirt.git;a=commit;h=5cb6816715968dc08486307bd1894dc91e22342c

● libvirt: "qemu: Add support for virt machine type with virtio-mmio devices on armv7"http://libvirt.org/git/?p=libvirt.git;a=commit;h=c7ccd2c44be99b81ffce29374faeab3d1644a151

LibVirt patches

Thanks to libvirt maintainer Cole Robinson at Red Hat for his support!

Page 53: 20141111_SOS3_Gallo

● nova: "Support setting a machine type to enable ARMv7/AArch64 guests to boot"http://git.openstack.org/cgit/openstack/nova/commit/?id=15d4f8a3af1b4e105d91e6b66d7b19187fbd41af

OpenStack patches: only 114 lines in Nova

Thanks to Canonical engineers for their contribution!

Page 54: 20141111_SOS3_Gallo

DeploymentReady

Software

Developer ARMv8 Server Cluster to Accelerate Deployment-ready Software

Operating System Vendors

+ +

Open Source

Community

Independent Software Vendors

www.linaro.org/leg/servercluster/

Page 55: 20141111_SOS3_Gallo

● OpenStack is at the heart of the cloud revolution● All workloads run well on Linaro ARMv8 foundations● Linaro fosters the open source collaboration on ARM

Summary

Page 56: 20141111_SOS3_Gallo

More about Linaro: www.linaro.org/about/Linaro members: www.linaro.org/members