Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

Share

RunX: deploy real-time OSes as containers at the edge

Download to read offline

Containers are incredibly convenient to package applications and deploy them quickly across the data center.

This talk will introduce RunX, a new project under LF Edge that aims at bringing containers to the edge with extra benefits. At the core, RunX is an OCI-compatible container runtime to run software packaged as containers as Xen micro-VMs. RunX allows traditional containers to be executed with a minimal overhead as virtual machines, providing additional isolation and real-time support.

It also introduces new types of containers designed with edge and embedded deployments in mind. RunX enables RTOSes, and baremetal apps to be packaged as containers, delivered to the target using the powerful containers infrastructure, and deployed at runtime as Xen micro-VMs. Physical resources can be dynamically assigned to them, such as accelerators and FPGA blocks.

This presentation will go through the architecture of RunX and the new deployment scenarios it enables. It will provide an overview of the integration with Yocto Project via the meta-virtualization layer and describe how to build a complete system with Xen and RunX.

The presentation will come with a live demo on embedded hardware.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

RunX: deploy real-time OSes as containers at the edge

  1. 1. © Copyright 2020 Xilinx RunX Stefano Stabellini Bruce Ashfield Wesley Skeffington Brian Woods LVC20
  2. 2. © Copyright 2020 Xilinx Introducing RunX  A new OCI-compatible containers runtime to start containers as Xen VMs  Written for Embedded  Very simple  Minimal overhead  Real-Time support  Accelerators support  Secure by Default  New project started under the Linux Foundation Edge (LF-Edge) umbrella  Early collaborationwith Zededa  Permissive license (Apache v2)  Open to contributions from the start  All developmentusing a public mailing list: https://lists.lfedge.org/g/eve-runx
  3. 3. © Copyright 2020 Xilinx RunX Linux Container xl create Container 1 2 Container Orchestration Framework (e.g. Kubernetes) Xen ramdisk kernel VM containerd containerd “shim” Introducing RunX
  4. 4. © Copyright 2020 Xilinx RunX: implementation choices  Easy to Build: minimal build dependencies  gcc,make, go  Easy to Run: minimal runtime dependencies  (in addition to Xen,) bash, jq, socat, daemonize  No in-guest agents: minimal runtime overhead  Provides a minimal Linux kernel and Busybox-based ramdiskfor booting regular containers as VMs  Pristine container environment  Tiny Micro-VMs optimized for embedded  A minimal environment  No device emulation  No in-guest firmware or bootloaders  OCI Runtime Spec compliant  Developedtogetherwith ContainerD  Should work with any container engines
  5. 5. © Copyright 2020 Xilinx RunX (Cross)Build Cross-build requirements:  cross-compilationtoolchain  e.g. Linaro: https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu  golang compiler (soon to be removed)  distro golang package expected to work $ export ARCH=aarch64 $ export GOROOT=/usr/lib/go-1.10 $ export CROSS_COMPILE=/path/to/aarch64-linux-gnu- $ ./build.sh
  6. 6. © Copyright 2020 Xilinx RunX Runtime Copy runX and /usr/share/runX to target Enable it in containerd’s config.toml [plugins.linux] runtime="/usr/sbin/runX"
  7. 7. © Copyright 2020 Xilinx Yocto + RunX meta-virtualization provides the recipes for RunX, Xen and supporting components (containerd, etc) Why use Yocto / OE to build / deploy RunX ?  Leverage the Yocto / OE core values  Transition path from development to production  Active community and integration with BSPs (e.g. meta-xilinx)  Multiconfig builds  Build host + guests + containers + firmware in a single platform Note: development and build directly with upstream projects is always possible
  8. 8. © Copyright 2020 Xilinx Yocto + RunX: Simplified build Use master branches (there are no stable/released variants yet) $ git clone -b master http://git.yoctoproject.org/git/poky $ git clone -b master http://git.openembedded.org/meta-openembedded $ git clone -b master https://git.yoctoproject.org/git/meta-virtualization $ git clone -b master https://github.com/Xilinx/meta-xilinx.git $ . ./oe-init-build-env zcu102-zynqmp $ bitbake-layers add-layer $(readlink -f $PWD/../meta-openembedded/meta-oe) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-openembedded/meta-filesystems) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-openembedded/meta-python) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-openembedded/meta-networking) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-virtualization) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-xilinx/meta-xilinx-bsp) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-xilinx/meta-xilinx-contrib) $ bitbake-layers add-layer $(readlink -f $PWD/../meta-xilinx/meta-xilinx-standalone)
  9. 9. © Copyright 2020 Xilinx Yocto + RunX: Simplified setup Local build setup (will eventually be in a xen distro config) $ cat <<EOF >> conf/local.conf MACHINE ??= "zcu102-zynqmp" DISTRO = "poky" BBMULTICONFIG ?= "pmu" do_image[mcdepends] = "multiconfig::pmu:pmu-firmware:do_deploy" IMAGE_FSTYPES += "tar.gz cpio.gz.u-boot jffs2" DISTRO_FEATURES_append=" xen virtualization vmsep" IMAGE_INSTALL_append = " busybox xen-tools zlib-dev runx" IMAGE_INSTALL_append += " virtual/containerd virtual/runc" ASSUME_PROVIDED += "iasl-native" PACKAGECONFIG_remove_pn-xen += " sdl" PREFERRED_PROVIDER_qemu-native = "xilinx-qemu-native" PREFERRED_PROVIDER_nativesdk-qemu = "nativesdk-qemu-xilinx" BUILDHISTORY_FEATURES ?= "image package sdk" QB_DEFAULT_KERNEL="none" QB_MEM = "-m 4096" EOF $ cat << EOF > conf/multiconfig/pmu.conf MACHINE="microblaze-pmu" DISTRO="xilinx-standalone" TMPDIR="${TOPDIR}/pmutmp" EOF
  10. 10. © Copyright 2020 Xilinx Yocto + RunX: build steps Note: not all changes are merged upstream, but will be shortly # download and extract pmu files (optional: only if not using multiconfig): # Download: https://www.xilinx.com/member/forms/download/xef.html?filename=xilinx-zcu102-v2020.1-final.bsp&akdm=1 $ tar -O -xf xilinx-zcu102-v2020.1-final.bsp xilinx-zcu102-2020.1/pre-built/linux/images/pmu_rom_qemu_sha3.elf > pmu-rom.elf $ tar -O -xf xilinx-zcu102-v2020.1-final.bsp xilinx-zcu102-2020.1/pre-built/linux/images/pmufw.elf > pmufw.elf $ tar -O -xf xilinx-zcu102-v2020.1-final.bsp xilinx-zcu102-2020.1/pre-built/linux/images/system.dtb > system.dtb # copy files to deploy dir: $ cp pmufw.elf build/tmp/deploy/images/zcu102-zynqmp/pmu-zcu102-zynqmp.bin $ cp pmufw.elf build/tmp/deploy/images/zcu102-zynqmp/pmu-zcu102-zynqmp.elf $ cp pmu-rom.elf $BUILDDIR/tmp/deploy/images/zcu102-zynqmp/pmu-rom.elf $ cp system.dtb $BUILDDIR/tmp/deploy/images/zcu102-zynqmp/system.dtb # build the image(s) $ bitbake core-image-minimal $ bitbake xen-image-minimal
  11. 11. © Copyright 2020 Xilinx Yocto + RunX: runtime steps Note: some on target configuration may be required (and will be automated in the future) # core-image-minimal as a sanity test. Works out of deployed artifacts by default: $ runqemu core-image-minimal slirp nographic # xen-minimal: requires manual u-boot config, or boot.scr support from image builder (https://gitlab.com/ViryaOS/imagebuilder) $ runqemu xen-image-minimal nographic slirp
  12. 12. © Copyright 2020 Xilinx RunX Linux Container xl create Container 1 2 Container Orchestration Framework (e.g. Kubernetes) Xen ramdisk kernel VM containerd containerd “shim” RunX: Traditional Containers
  13. 13. © Copyright 2020 Xilinx RunX Linux Container xl create Tarball w/ kernel, ramdisk, & rootfs 1 2 Container Orchestration Framework (e.g. Kubernetes) OCI Image Spec Extensions: - KERNEL - RAMDISK Xen Provided ramdisk Provided kernel VM containerd containerd “shim” RunX: Containers with a Kernel
  14. 14. © Copyright 2020 Xilinx RunX Linux RTOS xl create RTOS packaged as a container 1 2 Container Orchestration Framework (e.g. Kubernetes) Xen VM containerd containerd “shim” RunX: Baremetal and RTOS Containers
  15. 15. © Copyright 2020 Xilinx RunX: Containers with a Kernel  Support containers that come with their own Kernel and/or Ramdisk  a specific versionof the Linux kernel  a specific kernel configuration  LinuxRT  Non-Linux OSes  RTOSes  Baremetal applications  VxWorks  Kernel and Ramdisk are advertised using new OCI Image flags  TBD; currently Implemented using Environmental Variables  RUNX_KERNEL  RUNX_RAMDISK  Workwith CNCF to standardize the new labels
  16. 16. © Copyright 2020 Xilinx containerd RunX + extra args Linux Container Tarball w/ kernel, ramdisk, & rootfs Container Orchestration Framework (e.g. Kubernetes) Xen Provided ramdisk Provided kernel VM Heterogeneous HW Resource containerd “shim” xl create 2 1 RunX: Device Assignment
  17. 17. © Copyright 2020 Xilinx Device Assignment  Device Assignment support via XLCONF  Appends configurationoptions to the xl config file  It can be used for anything from device assignmentto changing vcpus and memory configurations  It can be used to set real-time configurations  It is set by the user/admin (not by the container)
  18. 18. © Copyright 2020 Xilinx containerd RunX [extra args] or config.json Linux Container Tarball w/ kernel, ramdisk, & rootfs 1 2 Container Orchestration Framework (e.g. Kubernetes) OCI Image Spec Extensions: - RESOURCE = DEVICE_DATA - KERNEL - RAMDISK Xen Provided ramdisk Provided kernel VM Device Config Heterogeneous HW Resource containerd “shim” Vision: Accelerators & FPGAs
  19. 19. © Copyright 2020 Xilinx Vision: Accelerators & FPGAs 1. Containers come with their own accelerator's binaries and data  FPGAbitstreams  Co-ProcessorKernels  AIE Kernels 2. ContainerD calls to a service to program the accelerators 3. RunX assigns the accelerator's resources to the VM
  20. 20. © Copyright 2020 Xilinx Demo
  21. 21. © Copyright 2020 Xilinx containerd RunX + extra args Linux Baremetal Xen VM TTC Timer containerd “shim” xl create 2 1 RunX RTOS and Device Assignment Demo Baremetal Container with access to the physical TTC timer
  22. 22. © Copyright 2020 Xilinx Thank You

Containers are incredibly convenient to package applications and deploy them quickly across the data center. This talk will introduce RunX, a new project under LF Edge that aims at bringing containers to the edge with extra benefits. At the core, RunX is an OCI-compatible container runtime to run software packaged as containers as Xen micro-VMs. RunX allows traditional containers to be executed with a minimal overhead as virtual machines, providing additional isolation and real-time support. It also introduces new types of containers designed with edge and embedded deployments in mind. RunX enables RTOSes, and baremetal apps to be packaged as containers, delivered to the target using the powerful containers infrastructure, and deployed at runtime as Xen micro-VMs. Physical resources can be dynamically assigned to them, such as accelerators and FPGA blocks. This presentation will go through the architecture of RunX and the new deployment scenarios it enables. It will provide an overview of the integration with Yocto Project via the meta-virtualization layer and describe how to build a complete system with Xen and RunX. The presentation will come with a live demo on embedded hardware.

Views

Total views

134

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

3

Shares

0

Comments

0

Likes

0

×