Skip to content

@wkozaczuk wkozaczuk released this Mar 12, 2019 · 28 commits to master since this release

This is the next release of OSv since the previous one 0.52.0 was crafted. Unlike previous one this release does deliver new exciting feature - it supports running OSv on new lightweight hypervisor firecracker which makes possible to boot OSv Read-Only FS image in as low as 5ms per bootchart. We hope next release will happen before end of second quarter of 2019.

Features Highlights

  • Enhanced OSv to run on firecracker (for details please see here)
    • OSv can boot as vmlinux (64-bit ELF - please see loader.elf attached)
    • OSv does not require ACPI to run
    • Added support of virtio mmio devices
  • Added support of both legacy and modern virtio 1.0 PCI devices (for details please see here)
  • Further reduced minimal memory to run OSv to 18MB (25% reduction)
  • Fixed critical bug affecting apps doing heavy floating point computations like ffmpeg (see issues #1019, #1020, #1010, #1018, #536)
  • Implemented some missing syscalls to better support Golang apps
  • Enhanced Python 3 app to support including modules
  • Upgraded tomcat app to version 9
  • Added support of graalvm apps

Specifics

  • Refactored virtio layer to support legacy and modern PCI and mmio devices
  • Implemented modern virtio PCI device
  • Enhanced OSv to boot without ACPI present
  • Enhanced OSv to discover SMP information by reading MP table if ACPI is not present
  • Made OSv bootable as a vmlinux 64-bit ELF
  • Added boot option to disable PCI enumeration
  • Added virtio mmio implementation
  • Made httpserver-api configuration file configurable
  • Enhanced ELF dynamic loader to support position dependent shared libraries (Graal VM)
  • Deleted “assigned virtio driver"
  • Made memory allocation more efficient
    • Handles small memory allocations ( < 16 bytes) more space efficiently
    • Implemented more space-efficient early memory allocation scheme (reduced memory utilization by 6MB - see #270)

Closed issues

  • #1030 - Test failure with Fedora Java 8
  • #1029 - Debug build fails because tracepoint sections are discarded
  • #1028 - scripts/firecracker.py doesn't pass input to OSv
  • #1020 - Maybe need to reset fpu status word on context switch
  • #1019 - Maybe need to reset fpu state after saving it
  • #1018 - OSv crashes sporadically with page fault when transcoding video with ffmpeg
  • #1017 - upload_manifest.py opens a port to the world, and always the same port
  • #1011 - Make allocations < 16 bytes more space efficient
  • #1010 - Memory access fault when OSv pounded by periodic /os/threads REST call
  • #1006 - Missing function fcntl64
  • #1004 - Handle (either support correctly, or forbid) non-fPIC shared objects
  • #956 - Missing readlinkat()
  • #536 - Cassandra with CLI crash with cassandra stress
  • #270 - Wasted memory in early malloc()

List of contributors alphabetically

  • Felix Yan (@felixonmars) - 1 patch
  • Nadav Har'El (@nyh) - 8 patches
  • Przemek Pikuła (@pshem) - 4 patches
  • Waldemar Kozaczuk (@wkozaczuk )- 45 patches
  • Geraldo Netto (@geraldo-netto) - 6 patches
  • Vinícius Fraga (@viniciusmsfra) - 1 patch

Acknowledgments

We want to thank all contributors to the project. But the special thanks go to:

  • Nadav Har’El for contributing and reviewing many patches and providing guidance for many others
  • Waldemar Kozaczuk for contributing most patches

Artifacts

This time we are only publishing kernel artifacts and capstan packages for Python 3 and REST API httpserver.

Assets 14
You can’t perform that action at this time.