Skip to content

@wkozaczuk wkozaczuk released this Mar 12, 2019 · 615 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 15