Skip to content
Tzach Livyatan edited this page Jul 3, 2014 · 2 revisions

We are pleased to announce the release of OSv 0.10 Alpha Release.

Performance

Some of the noteworthy performance improvement are in this release are:

  • Implementation of Timer Wheel
  • Improve TCP Tx performance by about 10% with virtio::net not using indirect buffers
  • Improve TCP Tx performance for small packets by about 5% with avoiding excessive kicks
  • Improve ZFS performance enabling real-time by default when creating ZFS data-set
  • Improve ZFS mount time when previous instance has performed I/O

Features

Some of the noteworthy additions are:

  • New REST API for:
  • Query thread status
  • Activate/Deactivate trace points
  • Controlling sampling profiler *Get environment variables New API schema is available here

libosv.so, a library containing all visible OSv symbols. Useful for loading as a module for JNI or JNA users.

Ported applications

more applications are enabled on OSv. Few of the latest are:

  • CRuby
  • OpenDayLight

AArch64 port

Work on AArch64 port continue to progress, few of the latest updates:

  • support for ELF lazy function resolution
  • QEMU system emulation now boots our image successfully, after fixes both here and in QEMU.
  • more complete pl011 console support (now takes inputs)

Known issues

  • There is a performance regression on GCE. We are looking into it and expect to have a fix release in the near future.

Images for download

Full List of contributions

Amnon Heiman (1):
      modules: add the osvinit module

Asias He (2):
      runtime: Implement times()
      scripts: Zero download GCE support

Avi Kivity (56):
      Merge branch 'memarea'
      vfs: add dentry_ref, a smart pointer for dentrys
      vfs: convert file::f_dentry to dentry_ref
      vfs: make error class build in C code
      vfs: add C++ namei()
      vfs: covert sys_stat, sys_statfs to C++ namei
      Merge branch 'timerwheel' of https://github.com/tgrabiec/osv
      build: fix tst-static-thread-variable.so dependencies
      x64: add lfence accessor
      pvclock: add LFENCE before reading the time stamp counter
      tests: add monotonic clock test case
      Merge branch 'dref'
      procfs: fix use-after-free
      vga: initialize _offset
      Update mgmt
      mgmt: update
      mgmt: update
      Update external/x64/misc.bin for yaml-cpp
      external: update x64 openjdk.bin
      xen: comment out HYPERVISOR_poll()
      mmu: avoid allocation in allocate_intermediate_level()
      x64: switch stacks in general_protection
      Add defer() utility
      mempool: protect debug allocator against recursion
      external: add aarch64 submodules
      build: add gcc sysroot for cross builds
      Update gcc.bin for glibc sysroot
      build: relax naming of boost libraries
      libc: define max_align_t
      runtime: define __stack_chk_guard
      Switch to newer gcc
      Merge branch 'mmu'
      build: make boost-lib-dir more robust
      mgmt: update
      mgmt: update
      build: allow side-by-side aarch64 and x64 builds
      build: provide a default for CROSS_PREFIX
      build: CROSS_PREFIX is always defined
      build: use build/$(mode).$(arch) in preference to the build/$(mode) symlink
      build: avoid referring to $(out) in internal Makefile
      build: rename *.mak to *.mk
      build: move mode-related configuration to conf/*.mk
      build: move arch-specific configuration to conf/$(arch).mk
      Merge branch 'build'
      vfs: remove checks on symlink target
      cpiod: don't ignore symlinks
      modules: allow symbolic links
      build: teach upload_manifest about symlinks
      java: fix RPATH trouble
      Merge tag 'rpath-5' of https://github.com/avikivity/osv
      apps: update
      scripts: add script to setup a development environment
      acpi: run interrupt handler in a thread
      mgmt: update
      mgmt: update
      vfs: stop polls before destroying file object

Calle Wilund (3):
      trace: make trace points active state / backtrace individually controlled, with API calls for external (REST) management
      trace: Cleanup enable_tracepoint function
      trace: Binary trace dump API

Claudio Fontana (21):
      aarch64: implement lock adapter for arch_fpu
      aarch64: update to latest Mach-Virt addresses
      elf: move arch-specific relocation enums to arch
      elf: replace non-ascii 'fi' character combination with 'fi'
      elf: aarch64: relocate pltgot
      elf: move arch-specific object rela relocs to arch
      elf: move arch-specific object jump slot relocs to arch
      elf: move arch-specific initial dynamic segment relocs
      aarch64: gic: do not abort on cpumask read as zero
      aarch64: exceptions: enable PPIs and SPIs separately
      drivers: pl011: implement data input path
      elf: initialize init_table to zero, ensure TLS is found
      build.mk: aarch64: don't destroy the instruction at offset 0x10
      runtime: make abort and __assert_fail callable early
      elf: support R_X86_64_COPY relocation
      aarch64: entry.S: do not treat all sync aborts as page faults
      aarch64: libc: remove unnecessary AARCH64_PORT_STUB
      async: remove unused include directive
      build.mk: fix info message broken by previous commits
      aarch64: handle more page fault cases
      tools: add uush

Dmitry Fleytman (17):
      release-ec2: update template AMIs
      elf-loader: avoid module self-referencing on local symbols resolution
      run-elf: cancel alarms after native program execution
      vmxnet3: mimic Linux driver registration
      vmxnet3: avoid excessive kicks on TX
      smp-boot-x64: fix switch to long mode
      ec2-release: check image format before upload
      release-ec2: make credentials management more robust
      setup.py: fix error handling
      setup.py: add missing packages for Fedora 20
      setup.py: get distribution type and version in a portable way
      setup.py: introduce Ubuntu 14.04 support
      setup.py: Introduce ec2 and testing environments
      README: add gawk to debian prerequisites
      release-ec2: move generic code to separate file
      ec2-utils: introduce more instance-related functions
      ec2-utils: introduce optional timeout for wait for instance start helper

Don Marti (1):
      Fix spelling of "below" in comments.

Elazar Leibovich (2):
      tests: add auto-load safe-path init command to gdb
      gdb: pretty print PERCPU(type, var)

Glauber Costa (18):
      math: make math functions generic
      math: provide some more floating point symbols
      fs: stub chroot
      sem: implement sem_timedwait
      libc: add header for ffsl and ffsll
      poll: fix problem with events
      stub __libc_start_main
      linux compat: define macros for syscalls
      sysconf: available number of physpages
      lib: Fix size of 'struct rusage'
      libc: Fix RUSAGE definitions
      time: move process_time to common code
      libc: Basic getrusage implementation
      run: "fix" redis boot.
      linux: adjust gettid visibility
      provide a shared library containing most of OSv symbols
      libosv: warn against version mismatch
      libosv.so make it work with python2 as well

Gleb Natapov (29):
      mmu: remove unused function debug_count_ptes
      mmu: call correct unmap() callback for huge pages in unpopulate class
      mmu: fix name of the function that reads pte in virt_to_pte_rcu
      mmu: fix a race in fast sigsegv code.
      mmu: remove unneeded code from cleanup_intermediate_pages
      mmu: fix RCU page table walking
      mmu: make hw_ptep class to be a template parametrized on pte level
      mmu: remove size parameter from page ops class and file map/unmap functions
      mmu: consolidate (small|huge)_page mapper operations
      console: do not capture local variables by reference
      mmu: check ParentLevel before checking if pte is large.
      mmu: drop the need for hw_ptep<-1>
      mmu: replace static arch_pt_element functions by class inheritance
      mmu: make user()/accessed() functions arch independent interface.
      mmu: make pt_element class to be a template parametrized on pte level
      mmu: remove unused make_large_pte function
      mmu: make pt_element::large() check pt level
      mmu: drop 'large' parameter from pt_element::addr()
      mmu: hide 'large' property from pte instantiation code
      mmu: provide pt_level_traits class
      mmu: assert if dirty() is called on wrong pte
      zfs: call vnode_pager_setsize() to set vnode size in zfs_write()
      mmu: re-enable clear_pte() tracepoint
      pagecache: trace dirty page eviction
      mmu: inject SIGBUS if a file is accessed beyond its end via mmap
      mmu: align vma range end address to a page size
      mmu: do not populate addresses beyond file size during mmap(MAP_POPULATE)
      acpi: shutdown OSv on power button ACPI event
      dhcp: add handling of option 121 "Classless Static Route"

Jaspal Singh Dhillon (15):
      vfs: implement futimesat()
      vfs: fix errno in futimesat()
      tests: add test for futimesat()
      dlfcn: implement dlclose()
      vfs: fix namei() and friends
      vfs: implement utimensat() and futimens()
      tests: add test for utimensat()
      vfs: fix utimes() to handle NULL as argument
      tests: add a test for utimes()
      core: implement ppoll()
      libc: implement sethostname()
      core: implement pselect()
      build.mk: move modules/tests/usr.manifest to build/
      poll: handle case of negative fds
      tests: enable test for negative fds in tst-poll

KANATSU Minoru (20):
      README: add description about building for Arch user
      libc: add getgrnam_r for porting CRuby
      libc: move getgrnam from runtime.cc
      libc: add function of pgid for porting CRuby
      libc: add getpgrp for porting CRuby
      libc: add getppid for porting CRuby
      libc: add getpwnam_r to porting CRuby
      libc: add setegid for porting CRuby
      libc: add seteuid for porting CRuby
      libc: add setregid for porting CRuby
      libc: add setreuid for porting CRuby
      libc: add sid function for porting CRuby
      libc: add waitpid for porting CRuby
      libc: add pthread_attr_getguardsize() for porting CRuby
      mempool: add malloc_usable_size() to C linkage for porting CRuby
      libc: add eaccess() to run irb
      Remove double include
      libc: add finite(), finitef(), finitel()
      libc: use weak_alias(); instead of declare eaccess()
      libc: add pthread_attr_setinheritsched to run WEBrick its ruby HTTP server

Nadav Har'El (20):
      clock_gettime(CLOCK_PROCESS_CPUTIME_ID) - subtract idle time
      elf: Run init functions only after loading object hierarchy
      Add missing cfgetispeed()
      Fix cfset*speed() nonsense
      Fix cfsetspeed()
      Fix bug in readv() and fread()
      Remove dead code
      Test readv() and fread()
      Fix writev() as well
      elf: warn when using unsupported combination of PIE and TLS
      Use osv::run in run_elf()
      Remove unnecessary #include
      sched: Add API for iterating over all threads
      Add test for sethostname() and friends
      Add names to threads running external executables
      scripts: top.py
      Fix libosv build with python 2
      top.py: add tie-breaker sort criterion
      console: Fix echo on VGA console
      kbd: change mapping of backspace from ^H to ^?

Pawel Dziepak (1):
      mempool, trace: use single tracepoint to track memory allocations

Paweł Dziepak (14):
      mmu: introduce memory areas
      mempool: use memory areas to determine the object allocator
      mempool: remove non_mempool_obj_offset
      kmem_cache: do not ignore alignment requirements
      zfs: align zio buffers to a page boundary
      mempool: introduce page memory allocator
      mempool: make large memory allocator less wasteful
      mmu: remove reinterpret_cast from get_mem_area_base()
      mmu: use static_casts in translate_mem_area()
      mmu: make get_mem_area() static inline instead of constexpr
      zfs: align vdev_label_t buffer to page boundary
      xen: align grant table to page boundary
      libosv: use .balign instead of .align
      libosv: add padding after the content of the note

Pekka Enberg (22):
      scripts: Fix download.osv.io S3 bucket name
      scripts: Fix capstan release upload
      tests: printf benchmark
      Merge branch 'master' of github.com:elazarl/osv
      drivers: Rename ConsoleDriver to console_driver
      drivers: Rename ConsoleMultiplexer to console_multiplexer
      serial: Fix formatting
      serial: Eliminate temporary variable
      serial: Drop unused <string.h> include
      serial: Move register definitions to source file
      serial: Split register definitions
      serial: Rename writeByte to putchar
      drivers: Rename IsaSerialConsole to isa_serial_console
      tests: Rename tst-fsx.c to misc-fsx.c
      Merge branch 'java' of https://github.com/tgrabiec/osv
      x64: Move pvclock-abi.cc under arch directory
      mgmt: update to latest
      mgmt: update to latest
      mgmt: update to latest
      mgmt: update to latest
      upload_manifest.py: Fix infinite loop in unsymlink
      Revert "build.mk: move modules/tests/usr.manifest to build/"

Prasad Joshi (11):
      vfs: change vfs_lookup to CPP code
      vfs: delete dentry of removed directory in sys_rmdir
      vfs: add support to follow symlink in namei
      vfs: open with O_NOFOLLOW must fail when path is symlink
      vfs: modify rename to work with symlink
      vfs: unlink change to work with symlink
      vfs: add lstat support
      vfs: add symlink support
      tests: add symlink test
      eventfd: add eventfd support
      tests: add eventfd unit test

Raphael S. Carvalho (24):
      bsd: Implement some of the kobj functions
      zfs: Re-enable spa_config_load
      tests: Make misc-fs-stress work on ZFS on Linux
      scripts: Add script for benchmarking ZFS mount time
      zfs: Improve mount time when previous instance has performed I/O
      Add entries to .gitignore
      shrinkers: wake_waiters should be called when target is zero
      drivers: Add null device
      random: save needlessly entropy waste during OSv build process
      vfs: Fix isatty on console file descriptors
      drivers: null: read must return zero upon success
      zfs: Port relatime property from ZFSonLinux
      zfs: Enable relatime by default when creating ZFS dataset
      elf: reuse page_size definition from mmu headers
      libc: stub getgroups and setgroups
      vfs: bio: call bio_sync when closing the vfs layer
      elf: unload _used_by_resolve_plt_got on object removal
      zfs: Implement zfs_ioctl
      tests: Fix misc-readbench
      random: hw source of entropy should be conditionally registered
      random: Avoid uneeded buffer allocation/deletion
      random: Add a note to avoid misconception about virtio_rng_read
      vfs: Move dentry-specific functions to a new file
      random: Clarify unblocking message

Takuya ASADA (8):
      pthread: implement pthread_exit
      vmxnet3: Fix TSO support on VMware Player/Workstation/Fusion
      libc: add inet_addr, inet_aton
      bsd: Add support IP socket options
      virtio-net: enable multicast
      vmxnet3: enable multicast
      console: probe PCI VGA device using driver_manager
      console: use existing isa_serial_console instance instead of creating new one

Tomasz Grabiec (46):
      gdb: implement __bool__ which is required by python3
      gdb: add osv load-elf command
      core: introduce bitset iteration utilities
      core: introduce timer_set data structure
      tests: add test for timer_set
      core: switch async timers to use timer_set
      core: switch sched::timer_list to use timer_set
      core: avoid unnecessary clock reschedules
      core: use unordered_queue_mpsc for released_timer_tasks
      pvclock: fix system_time() atomic-read logic
      java: fix indentation issues
      java: remove redundant local variable
      java: make 'java' module depend on 'fonts'
      java: add copyright banner to usr.manifest
      java: do not print uncaught exception form the child context on the console
      tests: detect ContextFailedException as a failure pattern
      java: make runjava.jar domain all-privileged
      tests: add test exploiting issue with protection domain permissions
      kvmclock: ensure _boot_systemtime is set only once.
      java: grant exitVM permission to isolates by default
      tests: add test for exitVM permission under presence of SecurityManager
      trace: remove use of global state in fetch_and_inc_if_less()
      build: Use -O0 for debug build instead of -Og
      pvclock-abi: respect the TSC_STABLE_BIT flag
      xen: remove trailing newline form xenirq thread's name
      clock: extract common code between kvmclock and xenclock
      tests: introduce microbenchmark for various locking primitives
      clock: use migration_lock to protect access to per-CPU data
      java: set OSv version in 'osv.version' system property
      tests: add test for presence of 'osv.version' property
      java: isolated contexts should not inherit system properties
      tcp: trim mbuf to IP packet length in the net channel path
      java: exclude '.' from default system class loader's class path
      tests: add test exploiting class path issue
      modules: make run_java() interface more convenient
      tests: do not rely on osv::power_off() to sleep
      modules: introduce a concept of repository
      modules: make api.require() impose compilation ordering
      sampler: make start_sampler() always succeed
      modules: include apps.git as module repository
      modules: configure osv.git/modules as module repository
      manifest: Add syntax for creating symbolic links in the guest image
      cpio: Log creation of symbolic links
      modules: Add syntax for creating symbolic links
      modules: java: Simplify creation of links
      build: fix the build

Vinicius Tinti (1):
      x64: Remove extra comma in boot16.S

Vlad Zolotarov (11):
      ring_spsc: revert the previous commit to push()
      virtio-vring: bug fix in use_indirect()
      virtio-vring: Make use_indirect() inline since it's heavily used in a fast path
      net: increase the minimum allocation size of the mbuf for TCP xmit
      virtio::net: Don't use indirect buffers
      virtio-net:txq: Don't caclucate the sg length
      sendmsg: kern_sendit(): create a local copy of user's iovec
      virtio::net::txq: Use proper size of virtio_net_hdr
      percpu_xmit: cleanup
      percpu_xmit::xmit(): fix an "if" on xmit_prep() exit code
      virtio::net::txq: Added some debug statistics.

Zika L'Etrange (2):
      tests: Add test to check access to static __thread variable
      posix: Add getcontext, setcontext, and makecontext

wangbicheng (1):
      dhcp: Fix MTU logging
Clone this wiki locally