Skip to content
Tzach Livyatan edited this page Dec 17, 2013 · 3 revisions

Release Announcement

Announcing the release of OSv “Dobrinishte”0.0.4 (unstable release). OSv is a new OS, designed from the ground up to run in a virtual, cloud environment We are very pleased to announce the release of OSv 0.0.4. This release contains new features, performance and stability improvements over OSv 0.0.3

  • release date: Dec 9 2014

New features

Scheduler

OSv scheduler was re-implemented to follow our fair decaying scheduler design [1]. The new “Fair Scheduler” advantages are:

  • Simpler, easier to reason about, and as result less buggy
  • Thread priority survive CPU migration
  • Can use longer history More on Decay fair scheduler

Modules

External modules can be now easily build with OSv. The following application already available as examples:

  • cassandra
  • memcached
  • tomcat
  • specjvm
  • rogue

for more information, see the new submoudole project

Demand paging

Switch to demand paging for anonymous virtual memory. Using lazy physical memory allocation for anonymous mmap'd memory regions, as used by Cassandra

Java Launch

It is now possible to set a javamain file with multiple Java main declarations. This allows setting a launch sequence of multiple, independent Java services. Practically it allow to decouple the CLI/SSH execution the web server.

Random

Add support for /dev/random implementation includes reading from host virtio-rng if available, allowing Java secure random generator faster boot

Update dependencies

  • openjdk 1.7.0.60-2.4.3.0.fc19
  • CRaSH 1.3.0-beta11

Ready to use images

Full list of contributions:

Amnon Heiman (2):
      java: Support for loading multiple mains
      Start up shell and management web in parallel

Asias He (5):
      fs: Remove execute mode of files under fs directory
      zfs: Remove unused zfs_freebsd_xxx zfs_vnodeops
      build.mk: Rename usr.raw to bare.raw
      Add .swp files to gitignore
      virtio-blk: Switch to and add tracepoint

Avi Kivity (82):
      build: fix .tls_template_size calculation
      poll: refactor poll() in terms of file pointers, not file descriptors
      epoll: switch to file based implementation using do_poll()
      tests: add tcp connection test
      build: bring back libgcc_s.so
      tst-except: add test for _Unwind_Resume
      epoll: switch epoll_object to using file pointers
      vfs: give 'file' a proper destructor
      vfs: prevent double initialization of file::f_lock
      tst-tcp: clean up better after threads
      tst-tcp: close socket before retaking the lock
      epoll: remove epoll registrations after close()
      sched: prevent a re-armed timer from being ignored
      sched: fix iteration across timer list
      build: source dialect control
      libc: implement the GNU variant of strerror_r()
      tests: add a test for strerror_r()
      tests: add strerror_r() test
      build: add missing tst-strerror.so to tests list
      net: adjust SO_REUSEADDR to match Linux semantics
      tst-tcp: set SO_REUSEADDR
      gdb: add 'osv info virtio'
      zfs: remove fake struct file definition
      vfs_syscalls.c: convert to C++
      Add helper for converting designated initializers to C++
      vfs_fops.c: convert to C++
      ramfs_vnops: convert to C++
      devfs_vnops: convert to C++
      file: move file operations out-of-line
      socketpair: fix wierd initialization
      file: add helpers for accessing fields
      file: make it a C++ type
      file: make sys_open() allocate the file structure
      uipc_syscalls.c: convert to C++
      fdesc: make it a little more efficient
      net: avoid falloc() in sys_close()
      net: avoid falloc() in kern_accept()
      net: avoid falloc() in kern_socketpair()
      vfs: drop falloc()
      Merge branch 'file++'
      file: add make_file() API
      file: add a variant of make_file() with unique_ptr<> opaques
      net: switch sys_socket() to make_file()
      net: switch kern_accept() to make_file()
      net: switch kern_socketpair() to make_file()
      epoll: convert to make_file()
      console: convert to make_file()
      sys_open(): convert to make_file()
      af_local: convert to make_file()
      pipe: convert to make_file()
      file: drop public declarations of falloc_noinstall() and finit()
      file: drop file_makebad()
      file: don't initialize with memset()
      file: move initialization from falloc_noinstall() to finit()
      file: fix falloc_noinstall() error case
      file: fold falloc_noinstall() into make_file()
      file: convert finit() to file's constructor
      file: allow make_file() to create files with a type derived from 'file'
      file: generalize make_file() to be able to create derived types
      file: add virtual functions corresponding to f_ops
      file: close() outside destructor
      file: make fo_init() optional
      file: make 'opaque' optional
      console: make it a derived class of file
      initialize: add a way to initialize an array, similar to C99 designated initializers
      sys_socket.c: convert to C++
      linux_ioctl_socket.c: convert to C++
      net: use a file derived class for sockets (socket_file)
      pipe: make it a derived class of 'file'
      af_local: convert to a derive class of file
      epoll: convert to a derived class of file
      vfs: convert vfs files to be derived from class file
      file: remove unused make_file() implementations
      file: remove badfileops
      file: remove fileops
      external: update openjdk to 1.7.0.60-2.4.3.0.fc19
      Merge branch 'file++'
      virtio-rng: fix excessive serialization with multiple consumers
      virtio-rng: fix incorrect use of valarray
      virtio-rng: drop excessive producer/consumer serialization
      net: fix socket ioctl() bypassing Linux adjustments
      linux_ioctl.cc: fix indentation

Benoît Canet (4):
      loader: Allow to execute multiple .so file in sequential order.
      mkfs.so: split mkfs.so in mkfs.so and cpiod.so.
      build.mk: Create an intermediate bare.img containing only a formated /usr.
      core: make osv::run return shared pointer or null and store it on loader.cc

Dan Schatzberg (1):
      x64: Fix rare SMP deadlock when acquiring stack

Dmitry Fleytman (5):
      release-ec2: fix AMI replication code
      release-ec2: Introduce image and version parameters
      xen: move per-cpu interrupt threads to .percpu section
      release-ec2: Make replicated AMIs public
      release-ec2: use tput for message coloring

Glauber Costa (14):
      mmu: move huge_page_size to mmu.hh
      sched: start thread list early
      sched: avoid dereferencing current() fields on thread creation
      sched: add a new thread state, prestarted
      sched: start and initialize early threads
      mmu: allow early tlb flushes
      sched: delay initialization of early threads
      x64: Use inline assembly for setcsr function
      xen: use bsrq instead of bsrl for event channels
      apic: fix allbutself delivery mode
      sched: remove on_thread_stack
      sched: change thread list into an unordered map
      sched: add function to find a thread given its id
      linux: add priority stubs

Gleb Natapov (1):
      trace: infer storage/runtime args from assign() signature

Nadav Har'El (26):
      percpu: Reduce size of .percpu section
      Partial implementation of aligned_alloc() and posix_memaligned().
      Explicitly request alignment when allocating per-cpu area
      Power-off, instead of halt, when loader can't run command
      Replace numbers in prio.hh by automatically defined numbers
      Fix possible deadlock in condvar
      Warn about incorrect use of percpu<> / PERCPU(..).
      sched: Don't change runtime of a queued thread
      sched: Use schedule(), not yield() in idle thread
      sched: No need for "yield" parameter of schedule()
      sched: New scheduler algorithm
      sched: Doxygen documentation of a bit of the scheduler
      Overhaul "debugging" section of README
      Reduce number of unnecessary sections in our executable
      gdb: Fix printout of runtime
      Test for scheduler's single-CPU fairness.
      Test: Small bugfix for tst-loadbalance
      Trivial: typos in core/lfmutex.cc
      Fix boot-time stdout support
      sched: ignore backward jumps in clock
      Fix HPET driver clock rollback
      Fix exception (in x86 sense, not C++) handling during boot
      Fix crash on malformed command line
      Add license/fastlog2.txt
      Add a few missing __*_chk functions
      Fix error in __vsnprintf_chk()

Or Cohen (1):
      Use interrupt flag for jline stty mode

Pekka Enberg (42):
      bsd: Fix formatting in porting/network.cc
      x64: Fix stack alignment in fault handlers
      Remove scripts/nbd_client.pyc from the tree
      Add .pyc files to gitignore
      libc: pthread_kill() stub
      build.mk: Fix bootfs and usr manifest dependencies
      libc/pthread.cc: Switch to WARN_STUBBED()
      vfs: Add pivot_root() system call
      ramfs: unmount
      ZFS root filesystem
      scripts/test.py: Show running test case name
      Reformat Java code
      test.py: add tst-except.so
      mmu: VMA permission flags
      mmu: Optimistic locking in populate()
      mmu: Anonymous memory demand paging
      mmu: MAP_POPULATE support for anon mmap()
      tests: Anonymous demand paging microbenchmark
      tests: mincore() tests for demand paging
      test.py: add utimes.so
      test.py: add tst-strerror_r.so
      pthread: Populate mmap'd stack pages
      test.py: add tst-pipe.so
      virtio: Add virtio::probe() helper
      virtio-net: Use virtio::probe() helper
      virtio-blk: Use virtio::probe() helper
      vfs: Make '/dev' directory at image creation time
      devfs: device_destroy() API
      virtio: Fix device init with no MSI support
      virtio: Add virtio-rng driver
      tests: tst-random.so
      Update to latest mgmt.git
      test.py: Stop test execution on error
      vfs: MNT_FORCE unmount
      vfs: Fix sys_pivot_root()
      loader: Unmount rootfs at poweroff
      virtio-rng: Remove blocking /dev/urandom
      mgmt: Start up web earlier
      run.py: Make guest memory 2 GB by default
      zfs: Fix build breakage in zfs_setattr()
      apps: Bump version
      usr.manifest: Add missing JVM security files

Raphael S. Carvalho (19):
      scripts/run.py: Add wait feature
      mmu: Make fill from fill_page support variable page sizes
      vfs: Introduce vop_eperm
      scripts: Change mkzfs.py to call run.py with unsafe cache.
      vfs: Make error messages when mounting rootfs more verbose.
      libc/network: feof shouldn't be used on a closed file
      zfs: Wire up VOP_SETATTR
      devfs/ramfs: Change vop_null to vop_eperm
      vfs: Unify attribute flags into a common place
      vfs: Add the utimes system call
      tests: Add tst-utimes
      zfs: Fix debug mode build
      vfs: Fix hard link on subsequent calls for the same dentry
      Add tst-fs-link.so to the whitelist of test.py
      mmap: fail if flags contain both MAP_SHARED and MAP_PRIVATE
      mmap: Improve mmap validation
      mmap: Check file-backed mmap arguments
      tests: Add new tests into tst-mmap-file.so
      mmu: Simplify mmu::map_file interface

Takuya ASADA (2):
      OSv module support
      Add negotiation flag check for FLUSH

Tomasz Grabiec (24):
      Fix lack of locking in libc in file and memstream related operations
      Introduce test for libc locking
      Add missing tst-libc-locking.cc file
      loader.py: add wrapper for intrusive list
      loader.py: extract trace iteration so that it can be reused
      loader.py: add commands for function duration analysis
      Makefile: use abolute paths in generated variables
      build.mk: process modules in one rule
      vfs: end message printed by sys_panic() with new line
      module.py: refactor
      Consolidate module manifests generation
      Add /tmp entry to usr.manifest
      module.py: fix "make module" invocation
      Add java.security properties to the image
      test.py: extend failure patterns
      modules: Add support for run configurations
      modules: Add support for resolving variables in manifest rules
      modules: Use OSV_BASE variable in manifest for mgmt
      Add 'empty' image config
      Add image configuration for tomcat appliance
      Add image configuration for cassandra
      mgmt: use prod environment in module run config
      Add osv-apps as submodule under apps
      Configure module paths for tomcat and cassandra

dleifker at gmail.com (1):
      Fix make flag in readme for debug mode

ufokaradagli at gmail.com (1):
      README.md: Fix typos

大谷津昂季 (1):
      ovs: fix build error. (bsd/porting/networking.cc)
Clone this wiki locally