Skip to content
Tzach Livyatan edited this page Aug 28, 2014 · 1 revision

We are pleased to announce the release of OSv 0.12 Alpha Release

Features

Some of the noteworthy additions are:

REST API

We are continuously extending REST API coverage of OSv. Latest additions are:

  • Trace REST API was significantly enhanced. It now allow enabling, disabling of trace points, and collecting trace point counters.

  • Jolokia REST API; a JMX-HTTP bridge acting as a REST facade to JMX operation. It allows easy interaction with running JVM from REST or the OSv GUI.

    REST API spec is available here

    More on Jolokia and OSv here

  • os/threads REST API was extended, and now includes thread priority, stack size and status. very useful when debugging OSv, or building a OSV GUI dashboard.

  • REST API os/memory/balloon return the current status of the JVM Balloon

  • REST API network/ifconfig returns a list of all the interfaces with their configuration and data, similar to Linux ifconfig

  • New external scripts, built on top of the REST API, gives insight into OSv run time. Latest two are:

    • top - thread/cpu status

    • freq - trace points counter rate

SSL Support

REST API now support SSL, making cloud deployment more secure. For more on enabling SSL see here

More improvements:

  • Migration to upstream musl started. There's still work to be done but eventually OSv will track upstream musl releases.
  • Cloud init is now supported on EC2 and GCE See here on how to enable it

Virtual Appliances

redis-memonly is now part of the standard release process and is available as official Capstan and stand alone images More on Redis appliance and benchmarks results here

Performance

  • scheduler was revisited, tuned for better performance and a few minor bug was fix. One noteworthy example is change default time-slice length, "thyst" (hysteresis time) scheduler parameter was updated from 2ms to 5ms. This prove to improve throughput in many use cases, in particular Cassandra.

  • Enable ZFS read/write parallelism on the same file, by removing per-file lock. Removing the bottleneck, significantly improves operations throughput when concurrently working on the same set of files. OSv VFS layer will now rely on ZFS r/w range lock, which is mapped 1:1 to VFS vnodes.

  • memory: Global page buffer pool a new global page buffer pool in addition to the percpu page buffer pool

Get the new release

Images of the new release are available at osv.io/downloads and using capstan search.

EC2 community AMI are available here

Full List of contributions

Amnon Heiman (21):
      Add dependency of ifconfig in libtools
      Http server: Add a helper function in the reply to add a header
      Http Server: Support optional Access-Control-Allow-Origin header
      Http server: Expose ifconfig infromation in the API
      Http server: Add recursive operation for directories
      Http Server: file length was missing in file API
      jvm_balloon: Add API to get the JVM balloon size
      Http Server: Add an API to return the balloon size
      Http Server: Add optional configuration file
      Cloud init: Add httpserver-module
      Cloud-init: Change from a run command to a model
      Http Server: Add test for thread CPU
      Http Server: Returned error messages should be json objects
      Adding the osv-gui is a submodule of the httpserver
      Http Server: Compile and copy the gui to the image
      Httpserver: Mapping the GUI files in the server
      Http Server: Add float support to the json formatter
      Http Server: Allow extending the json interface with a common base class
      Http server: Code generation extended enum support
      Swagger definition file: Add Thread status and priority
      sched: expose thread status

Asias He (20):
      timer_task: use external lock
      memory: Global page buffer pool
      vfs: Convert fs/vfs/kern_physio.c -> fs/vfs/kern_physio.cc
      vfs: Convert fs/vfs/vfs_bio.c -> fs/vfs/vfs_bio.cc
      vfs: Convert fs/vfs/vfs_bdev.c -> fs/vfs/vfs_bdev.cc
      vfs: Convert fs/vfs/subr_uio.c -> fs/vfs/subr_uio.cc
      vfs: Convert fs/vfs/vfs_vnode.c -> fs/vfs/vfs_vnode.cc
      vfs: Convert fs/vfs/vfs_task.c -> fs/vfs/vfs_task.cc
      vfs: Convert fs/vfs/vfs_conf.c -> fs/vfs/vfs_conf.cc
      vfs: Convert fs/devfs/device.c -> fs/devfs/device.cc
      vfs: Convert fs/ramfs/ramfs_vfsops.c -> fs/ramfs/ramfs_vfsops.cc
      net: Remove socket access dead code
      poll: Fix two indention
      net: Kill unused struct protosw inetsw[]
      bio: Switch to use mutex_t and waitqueue
      vfs: Use boost::intrusive::list in C++ code
      vfs: Cleanup vfs_bio.cc
      epoll: Check if fileref is valid
      net: Remove poll_wake in sofree
      vfs: Fix race in fdrop

Avi Kivity (31):
      build: parallel build support for modules
      libc: fix __unused name collision
      rcu hashtable: add size() and empty()
      apps: update
      epoll: a real epoll
      trace: reduce tracepoint fast-path overhead
      apps: update
      mgmt: update
      pagecache: don't assume ARC buffer virtual addresses are in 1:1 map
      vfs: better rcu file deletion
      epoll: improve tracepoints
      epoll: fix deadlock in socket_file::epoll_add()
      apps: update
      net: drop custom net_channel allocators
      build: simplify building musl files
      build: fix missing include path for libc/multibyte
      epoll: fix up lock ordering issues
      build: don't place mnttab.o in source directory
      build: don't place mnttab.o in source directory (again)
      runtime: stub __cxa_thread_atexit_impl
      memcpy: use aligned sse load/stores when alignment permits
      memcpy: omit frame pointer in wrappers
      Add helper template for generating a compile-time index list (0, 1, 2...)
      initialize: add variant for compile-time initialization via template instantation
      string: use initialized_array<> instead of enumerating a list inline
      string: copy 256-1023 bytes using sse as well
      string: extract sse register file helpers into "sse.hh"
      x64: add xmm register helper
      string: ssse3 optimized unaligned copier
      string: use ssse3 memcpy when available
      tests: convert misc-memcpy.c to C++

Calle Wilund (7):
      Ensure plain_transport::close does not throw
      Jolokia JMX REST integration
      Jolokia - change 'p' parameter to non-required in swagger definition
      Cloud-init : use dependencies in Makefile
      Cloud-init : generate httpserver.conf from YAML using YAML-cpp emit
      Httpserver - allow specific CORS host(s) + use "Origin" header
      httpserver : Add some more CORS header support

Claudio Fontana (4):
      aarch64: implement cpuid features_str API
      build.mk: aarch64: add --nomount to cmdline
      build.mk: aarch64: switch to image=uush as default
      aarch64: add, build libfdt

Daniel Zautner (1):
      API: Return thread status in response

Dmitry Fleytman (3):
      release-ec2: do not rely on hard-coded template AMI ID
      setup.py: add support for Ubuntu 13.10
      setup.py: fix regression on Ubuntu 14.04/Fedora 20

Elazar Leibovich (1):
      init_prio::apic was never used, git log -Sinit_prio::apic finds nothing

Glauber Costa (16):
      vfs: stub lchown
      elf: do not open code s_program
      elf: don't use get_program in program context
      libc: stub system() libc function
      fs: simple getdtablesize implementation
      ucontext: implement swapcontext
      upload_manifest: be more forgiving with encoding errors
      libc: _chk versions for memset and memmove
      libc: add the new memory files to the build
      tests: test more cases for misc-memcpy.so
      tests: gtod
      page scanner changes too sharp
      pthread_yield: mark as extern
      add __syscall symbol
      linux: make close syscall available through syscall gate.
      enhance symbol detection script

Gleb Natapov (1):
      Use file offset in msync instead of vma address

Haifeng Gao (3):
      ifconfig/dmesg: Fix MAC address format
      ifconfig: Fix flags value
      print the ip address when set static ip

Jiao Xiang (1):
      libc: implement __strndup

KANATSU Minoru (1):
      release-ec2: add --image-size option

Nadav Har'El (34):
      Fix SCOPE_LOCK to be usable twice in the same scope.
      rwlock: Prevent construction of rwlock_for_* objects
      Remove dead code umem.c
      Remove bogus taskq implementation from zpool.so
      Fix finite*() definitions in include/api/math.h
      tests: add benchmark for calibrating setpriority()
      sched: calibrate setpriority() to match Linux's behavior
      musl cleanup: remove two header files
      sched: run exit notifiers earlier, in thread context
      Fix errors in "make clean"
      musl: don't use _GNU_SOURCE
      musl: take trigonometric functions from upstream musl
      musl: clean up more libc/math/ files
      musl: more cleanups in stdio/
      musl: clean more files from libc/stdio
      musl: more stdio files from musl
      musl: remove libc/stdio/stdio.h
      musl: get rid of more stdio files with trivial changes
      musl: remove libc/errno/*
      sched: fix exit notifiers mutual exclusion
      musl: take alphasort and scandir from musl
      httpserver: fix JSON boolean formatting
      tracepoints: make tracepoint_counter generally useful
      httpserver: add operations for counting tracepoints
      add "freq.py" tool to show tracepoint frequency in a running OSv guest
      top.py: also print total idle time
      sched: add "sched_preempt" tracepoint
      Move tracepoint_count functions into the kernel
      net channels: don't drop packet when the channel is full
      tests: add benchmark for timeslice length
      sched: change default timeslice length
      console: fix support for discarding or keeping input
      Fix compilation problem
      libc/stdio: Flush stdout on read from stdin

Or Cohen (13):
      cli: Remove code reference from error messages
      libedit: Reference ncurses libraries properly
      Lua: Fix build flags and libraries
      Lua: Added LuaFileSystem and LuaPath
      cli: Add our ncurses build to includes
      cli: Add CWD handler
      cli: Get the prompt from Lua code with CWD
      cli: Add cd command
      cli: Make cat command use cwd
      cli: Handle non-decodable API output
      cli: Pass console size to Lua
      cli: Add method to print lists to console
      cli: Add ls command

Paweł Dziepak (12):
      loader.py: get free memory from memory::free_memory
      memory: call on_alloc()/on_free() hooks in bitmap allocation
      memory: don't allocate huge page range if it is not big enough
      memory: update memory allocation related comments
      shm: access iterator before invalidating it
      mmu: fix freeing huge pages in shm_file::_pages
      elf: make sure section '.note.osv-mlock' actually exists
      tests: add OSV_ELF_MLOCK_OBJECT() to tests that need it
      tst-async: ensure that callback fires before cancellation
      tst-async: migration lock is enough
      elf: eagerly resovle PLT entries in mlocked object
      elf: fail early when resolving PLT with preemption disabled

Pekka Enberg (60):
      Fix spinlock busy-loop to use non-atomic test
      Merge branch 'stable/v0.11'
      Merge branch 'stable/v0.11'
      Merge branch 'stable/v0.11'
      Merge branch 'stable/v0.11'
      Merge branch 'app' of github.com:tgrabiec/osv
      mmu: Fix mmap() to fail if address space is exhausted
      Add musl git submodule
      libc/string: Migrate to upstream musl
      libc/ctype: Migrate to upstream musl
      libc/locale: Migrate to upstream musl
      build.mk: Include libc/stdio directory
      libc/stdio: Migrate to upstream musl
      libc/internal: Remove math.h header file
      libc/math: Migrate to upstream musl
      Fix musl submodule URL
      libc/math: Migrate to upstream musl, take 2
      libc/math: Migrate to upstream musl, take 3
      Revert "build.mk pass arch to the module compilation"
      libc/locale: Use iconv from upstream musl
      core: Simplify application construction
      core: Fix code duplication in application::run()
      include: Clean up osv/app.hh header
      libc/multibyte: Migrate to upstream musl
      libc/process: Migrate to upstream musl
      libc/unistd: Migrate to upstream musl
      libc/env: Migrate to upstream musl
      libc/stdlib: Migrate to upstream musl
      Merge branch 'vmxnet3'
      libc/time: Migrate to upstream musl
      libc/temp: Migrate to upstream musl
      libc/network: Migrate to upstream musl
      Revert "epoll: fix up lock ordering issues"
      libc/misc: Migrate to upstream musl
      libc/passwd: Migrate to upstream musl
      libc/thread: Migrate to upstream musl
      libc: Move _chk variants into separate files
      Revert "trace.py: optimize unpack()"
      x64/misc.bin: openssl libraries
      httpserver: Export thread CPU via the API
      top.py: Fix typo
      elf: Fix SIGSEGV if dynamic table section is missing
      Remove obsolete TODO.zfs file
      x64/misc.bin: update to latest
      Merge branch 'ssl' of github.com:tgrabiec/osv into ssl
      scripts: Fix Python 3 compatibility in client.py
      vfs: Fix vget() error handling
      vfs: Use nullptr in C++ code
      percpu.hh: Fix pointer arithmetic
      Fix git submodule URLs to be relative
      Merge branch 'jolokia'
      Kernel base address constant
      scripts: Add "redis-memonly" to Capstan images
      vfs: Convert mount point list into C++
      vfs: Use delete instead of free in vfs_mount.cc
      vfs: Use C++ locking in vfs_mount.cc
      httpserver: Drop XML support from Swagger definitions
      httpserver: Copy-edit operating system API documentation
      httpserver: Fix broken test cases
      misc.bin/x64: update submodule head

Prasad Joshi (7):
      vfs: remove unnecessary while loop
      cloud-init: fix spelling mistake in error message
      libc: add special file class to implement *mnt* functions
      procfs: add mounts file
      zfs: fix umount and export functionality
      modules/lua: fix build failure
      vfs: count_match return failure when mountpt does not match

Raphael S. Carvalho (14):
      zfs: automatically import extra pools
      vfs: fix rename on non-empty directories
      libc: add mount(2)
      gdb: rework 'osv zfs' to provide better ARC data
      vfs: move zfs_init to vfs switch table
      vfs: avoid recursive locking on vp when checking vnode refcnt
      vfs/zfs: remove per-file lock enforcement for ZFS read/write ops
      fs: Fix 'exception nested too deeply' by re-enabling ZFS code
      tests: add misc-concurrent-io
      vfs: kill vcount()
      vfs: simplify namei external loop
      vfs: remove dead code from namei
      zfs: initialize znode's z_vnode field
      tests: misc-concurrent-io: add option to measure reads from the same range

Takuya ASADA (10):
      libc: add include path for locale
      xmitter: move xmitter_functor to driver indipendent header
      vmxnet3: implement xmitter
      vmxnet3: move slice_memory to header
      vmxnet3: rename enums
      vmxnet3: move vmxnet3 RX methods to vmxnet3_rxqueue
      vmxnet3: move vmxnet3 TX methods to vmxnet3_txqueue
      vmxnet3: Switch to vmxnet3_rx/txqueue::enable/disable_interrupt()
      vmxnet3: drop error packet on receiver
      libc: Add gethostbyaddr

Tomasz Grabiec (70):
      loader: remove redundant postfix incrementation
      loader: handle opt_leak before commands are run
      loader: print boot chart once, before commands are run
      core: introduce applicaton abstraction
      core: track current application context
      core: add support for requesting application's termination
      core: introduce application::get_return_code()
      core: sprinkle tracepoints around application management code
      core: add application::get_command()
      httpserver: add termination handler
      core: request termination of detached commands before proceeding to shutdown
      core: integrate osv::run with osv::application
      tests: add test for application termination requesting
      api-doc: cleanup descriptions
      tst-sendfile: indent using spaces
      tst-sendfile: add printouts on failures
      tst-sendfile: fail the test when accept() fails
      tst-sendfile: fix use of uninitialized variable.
      app: fix osv::application never getting destroyed
      trace: use monotonic clock for trace samples
      trace: adjust unimportant_prefixes
      core: make sched::cpu::current() out of line in DSOs
      trace.py: optimize split_format()
      trace.py: optimize unpack()
      vfs: stop polls before calling close()
      runtime: make sure halt() is not called before abort() message is printed
      trace: show thread name in 'trace.py prof'
      zfs: add missing ZFS_EXIT()
      trace: show thread's name in list-timed output
      trace: fix 'trace.py download'
      trace: make 'trace.py download' convert the buffers to tracefile by default
      tst-seek: convert to boost UTF
      tst-seek: add test case which checks that seek actually works
      httpserver: tests: fix invalid use of assert_between()
      httpserver: tests: fix assetion failure in testfile.py
      libc: implement __fread_chk()
      modules: add libz module
      modules: make java depend on libz
      modules: add openssl module
      httpserver: link against boost_program-options which matches the includes
      httpserver: make: make 'init' target phony
      httpserver: make: simplify rules
      httpserver: make: link against openssl
      httpserver: make: do not use relative paths
      httpserver: template API docs on the protocol name
      httpserver: remove unused field
      httpserver: abstract away HTTP transport
      modules: introduce run_on_init() declaration
      httpserver: introduce .fg run configuration
      Bump up swagger-ui.git HEAD ref
      httpserver: add support for SSL transport
      modules: add module with SSL certificates
      scripts: add utility for writing REST API clients
      Document dependency on python-requests
      httpserver: run tests on both SSL and non-SSL server
      httpserver: add SSL-specific tests
      scripts: convert top.py to use SSL transport
      scripts: make 'trace.py download' support SSL
      httpserver: abort in a graceful way upon exception
      freq.py: calculate column widths dynamically
      modules: add libyaml module
      cloud-init: depend on libyaml
      httpserver: add missing libyaml.so when cloud-init module is not included
      Bump up mgmt submodule head
      elf: add libresolv.so.2 to supplied libraries
      libc: use in6addr_any.c from muls
      openssl: add all dependant libraries into the image
      modules: add ca-certificates module
      java: depend on ca-certificates
      net: fix page fault in route_cache::lookup() when no route is found

Tzach Livyatan (2):
      Jolokia REST API - add documentation to the JSON file
      scripts: Add "redis-memonly" to VM images

Vlad Zolotarov (15):
      tcp_output.cc: added tracepoints allowing to debug the Tx flow
      virtio: added some tracepoints
      TSO: descrease the maximum aggregation size
      virtio::kick(): fix missed notification #2
      virtio::net::xmit_one_locked(): call the kick_pending() only once before staring to poll
      virtio::net::try_xmit_one_locked(): call vring::add_buf() instead of vring::avail_ring_has_room()
      httpserver::network.json API: fix the interface enumeration function
      net: added a few new statistics counters to if_data
      vmxnet3: added Tx debug statistics to enable DEBUG_VIRTIO_TX compilation
      virtio::net: Added DEBUG_VIRTIO_RX stats.
      net: make all statistics to be collected all the time
      httpserver::network.json API: Added new statistics counters to ifconfig interface
      net: added ifi_oqueue_is_full statistics counter
      virtio::net: added a tx_hw_queue_is_full statistics
      httpserver::network.json API: Added a ifi_oqueue_is_full statistics counter to /network/ifconfig/{if} output

Zifei Tong (8):
      bsd: separate network unrelated code from net_init()
      pthread: remove magic number for limit of pthread tsd keys
      pthread: call dtors for pthread thread specific data
      tests: add tests for pthread tsd related functions
      sched: remove abandon_current() call in thread::complete()
      sched: adopt application in thread context
      app: remove application::adopt()
      loader: remove unused extern declaration
Clone this wiki locally