Skip to content
tzach edited this page Nov 3, 2014 · 1 revision

We are pleased to announce the release of OSv 0.14 Alpha Release. Some of the noteworthy new features and improvements below.

OSv Dashboard

We are proud to present OSv Dashboard The dashboard is a browser base UI pretension of the OSv and the virtual appliance status, visualizing the current system status in one place. Dashboard includes (among others):

  • Main tab with Memory, CPU Disk chart
  • Thread tab with interactive visualization of thread status and thread usage. You can select and search for particular thread by name.
  • Trace tab, including a for each trace point frequency. Selection by name and search are available.
  • JVM tab present basic JVM information like memory and GC, for the cases the Virtual Appliance is java base.
  • Virtual Appliance tab present information relevant to the particular appliance. Tabs for Cassandra and Tomcat are currently available, with more too come.
  • Swagger-UI for REST API interaction is still available, now as part of the bigger dashboard. To build the dashboard, just includes httpserver in the module list For example:
$ make -j 4 image=cassandra,httpserver

Once the appliance is running, the dashboard can be access via osv-ip:8000

REST API

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

  • Run API: new run API allows running an application after OSv has already started. The most common way to use a virtual appliance is to pre build it using Capstan or directly from source. However, in some cases, one would like to run an application after OSv already started. Possible use cases are:

    • During the dev process, reducing the build/test cycle time
    • When there is a configuration updates which must be done after OS is running, but before the application started
    • Creating a generic OSv cloud image (e.g. EC2 AMI), uploading and run different application to it
  • Batch API: a "meta API", enabling a query/response of multiple REST API in one HTTP request. Useful in case one need to execute many query frequently, for example from the new OSv dashboard.

Full spec for latest API is available

Capstan quick launch

Capstan now allow launching a Java application from the command line, with out the need of manually building a Capstanfile. Its as easy as:

$ capstan run target/capstan-example-java.jar

See example

Lua CLI now support HTTPS

More on setting SSL for the REST API (which the CLI usage) here

64-bit ARM Porting

Some of the noteworthy additions are: initial support for device trees, including dynamic discovery of components (previously hard coded). This includes getting the physical memory information, OSv CLI, pl011 UART device, GIC interrupt controller, and the virtual timer.

Performance

  • Zerocopy implementation for both Tx and Rx
  • Set high priority on virtio-net's receive and transmit thread. What these two threads have in common is that each runs on a single CPU, but other CPUs can find themselves idle waiting for these threads to read new packets (or send old packets). To fully employ all available CPUs, it is important that both these threads run as soon as they can, regardless of which other thread happen to run on the same CPU. Setting both threads to high priority achieves that. This improve performance of a ycsb workload-C cassandra test on a KVM Guest with 4 vCPU by up to ~29% depend on the number of threads. Single vCPU results are desegregated by ~18% for the same use case.

Virtual Appliances

Two of the most popular application development run time are now available on OSv:

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 (20):
      Http Server: Support stringstream for multi-part body
      Http Server: Move the json_exception wrapper to exception.hh
      Http Server: Make set_headers static
      Http Server: Return a json object when no handler is found
      Http Server: expose the url parsing method
      Swagger Definition: Add an API for batch processing
      Http Serve: Add a batch api implementation
      Http Server Testing: Add basic FS testing
      Http server testing: Add basic network testing
      Swagger API definition: The batch command parameter should be declare form
      Http Server: dynamically generate the api-doc swagger
      Http Server: register the models on call to their init function
      Http Server: Add thread information
      Http Server: Add redirect exception
      Http Server: Adds a force path option to file_handler
      Http Server: Setting the GUI as the root URL
      Http Server: Add firmware provider API
      Http Server: Expose the hypervisor type
      Adding application registry support
      Http Server: Add run_app API

Asias He (1):
      epoll: Fix trace_epoll_ctl

Claudio Fontana (1):
      drivers: do not repeat the pci config parsing

Constantine Peresypkin (1):
      Add gnu_dev_* symbols

David Halls (2):
      libc/time: Return GMT instead of NULL for tm_zone
      libc: Fix pipe flag logic

Glauber Costa (1):
      scripts/setup.py: Fix prerequisites for Ubuntu 14.04

Gleb Natapov (1):
      pagecache: calculate size of the write page cache dynamically

Haifeng Gao (1):
      virtio-net: remove unnecessary colon

KANATSU Minoru (4):
      add option "nohalt" to use osv::poweroff() instead of osv::halt() if Guest aborted
      drivers: add TIOCGWINSZ support to ioctl
      scripts: add words for filtering error to tests/testing.py
      scripts: add test script for CRuby

Nadav Har'El (16):
      stub libaio support
      libc: Implement pthread_attr_setstack()
      mmap(): special treatment for MAP_STACK
      poll(): fix bug in no_poll
      console: support poll()
      setup.py: add missing comma
      api/sched.h - improve const correctness
      sched: allow migrating an existing thread
      Support Linux affinity-setting functions
      tests/misc-ctxsw - eliminate OSv-only code
      cpiod: exit early when can't create directories
      cpiod: create implicit directories with default permissions
      gdb: look for objects also in apps/ directory
      Implement chmod()
      libaio: stub more functions
      Stub signalfd()

Or Cohen (6):
      setup.py: Add libssl.so installation
      Lua: Add LuaSec module
      cli: Add support for HTTPS
      Lua: Add LuaSec module
      cli: poll() when waiting for ANSI codes response
      cli: Fix depends/build for executable

Paweł Dziepak (10):
      tests: fix quitting qemu
      libc: add poll_[un]install() functions to event_fd
      zcopy: create eventfd before calling zsend()
      zcopy: make sure that non-zero value is written to eventfd
      tests: zcopy: wait for POLLIN instead of POLLOUT
      libc: use poll_wake() in eventfd implementation
      eventfd: release mutex before calling poll_wake()
      x64: skip unformated sections when iterating through dmi table
      elf: get object entry point
      app: use object entry point if failed looking up main()

Pekka Enberg (24):
      scripts: Add 'osv-crash' image
      httpserver/osv-gui: update to latest
      Merge pull request #511 from rvs/master
      apps: update to latest
      cloud-init: Fix formatting glitches in main.cc
      apps: update to latest
      Revert "Lua: Add LuaSec module"
      Firmware API
      Hypervisor API
      cloud-init: Probe for data source only on EC2 and GCE
      config.json: Enable cloud init by default
      apps: update to latest
      testing.py: Fix broken regular expression
      tools/cpiod: Show bad CPIO magic
      tools/cpiod: mkdirp() error reporting
      httpserver/osv-gui: update to latest
      apps: update to latest
      java: JVM assertion command line options
      libc: sys_errlist and sys_nerr symbols
      apps: update to latest
      scripts/upload_manifest: Fix symlink permissions
      scripts/osv: Add support for symlinks in filemap.py
      scripts/osv: Respect allow_symlink flag in filemap
      apps: update to latest

Raphael S. Carvalho (2):
      vfs: update file system's vnode operation list
      vfs: use va_size instead when calculating st_blocks

Roman Shaposhnik (1):
      Derivates of Sun JDK treat -Dfoo as -Dfoo=true

Sergei Turukin (1):
      x64: Fix R_X86_64_TPOFF64 relocation without symbol

Shlomi Livne (10):
      Tester script to compile and execute tests
      EC2 Tester script to launch an instance and run tests
      loader: Moving resolution of environment of cmdline args
      build.mk: Allow setting of environment variables in images args
      ec2-tester bug fix for sh
      Enhance run.py XEN networking support to allow mac address
      ec2-simulator: allow reuse of address
      loader: Extend resolution of arg environment variables
      bsd/porting: Adding if_ip function to return an interface ip address
      loader: Adding OSV_IP environment variable

Takuya ASADA (13):
      net: Implement zerocopy TX
      net: Implement zerocopy RX
      tests: Add zerocopy send test
      tests: Add zerocopy recv test
      tests: Add zerocopy send&recv test
      Hypervisor API: VMware support
      setup.py: Lua CLI requires OpenSSL headers
      setup.py: Add support Fedora 21
      zcopy_rx: Don't assert when bytes = 0
      zcopy_tx: add socket type check to drop unsupported protocol
      zcopy_rx: add socket type check to drop unsupported protocol
      cli: Add reboot command
      libc: add __strncpy_chk

Tomasz Grabiec (3):
      tests.py: add ability to run only tests which match a regex
      httpserver: Accept only TLSv1.2
      httpserver: tests: ensure that SSLv3 is rejected

Tzach Livyatan (1):
      Update the Wiki URL in error message

Vlad Zolotarov (5):
      virtio::net: Set infinite priority to worker threads
      percpu_xmit::poll_until(): Beautify the code a bit
      percpu_xmit::poll_until(): Call a yield() when trying to bypass a control to the "next" tx-worker
      sched: yield() don't overwrite the runtime of a yielding thread
      sched::yield(): Get rid of extra dereferencing
Clone this wiki locally