-
-
Notifications
You must be signed in to change notification settings - Fork 605
OSv release 0.05
Announcing the release of OSv “El Colorado” 0.05 (unstable release) This release focus on performance and stability improvements.
Continuous effort is put on improving the throughput of OSv, and of OSv appliances. Few of the improvements in 0.05 are: Improved ZFS performance via proper setting of ARC cache bounds Improved virtio-blk performance by enabling write caching In particular, significant improvement was made in TCP, UDP roundtrip benchmark - 71%, 87% better than other OS (see Netperf) Memcached benchmark - 43% better than other OS (see Memcached)
Support key-per authentication on EC2 instance launch Enabling 8xlarge (32 vCPU) EC2 instances
Allow FS size specification from command line Generate tests manifest Allow image caching during build Support “make image=” for building modules
Automatic patch testing Performance analysis
Clean the default boot sequence. A new --verbose option allow backward compatibility with full boot messages. Posix thread clocks Support for virtio-scsi. SCSI is require for future support for OSv on Google Compute Engine (GCE) Improve Posix-compatibility with support for file remove, mknod, unlink, rmdir, readdir and thread detach.
For complete list of open issues https://github.com/cloudius-systems/osv/issues?state=open
Full list of contributions
Amnon Heiman (8): random: Separate device node from virtio-rng java: Add exception information to uncaught exceptions java: Fix argument splitting in MultiJarLoader OSv Coding Style api: Add osv::version for querying OSv version Makefile: Add httpserver rule modules: Add httpserver.so to mgmt module Makefile: Add httpserver rule Asias He (56): interrupt: Allow not providing a bottom half thread for easy_register virtio-net: Drop tx_gc_thread thread virtio-net: Do _tx_queue->get_buf_gc() in virtio_net::tx_gc() virtio-net: Remove _tx_gc_lock lock virtio: Fix vring::used_ring_is_half_empty() calculation virtio: Do not scale desc_needed by _num / 2 virtio: Fix vring::use_indirect virtio: Add vring::used_ring_can_gc() helper virtio-blk: Do not call queue->get_buf_gc() with wait_until virtio-rng: Do not call queue->get_buf_gc() with wait_until virtio-blk: Disable interrupts while irq handling is in progress vfs: Fix endless loop in bdev_read and bdev_write virtio: Use emplace_back instead of push_back virtio: Add add_out_sg and add_in_sg helper virtio: Add init_sg helper virtio-blk: Switch to sched::thread_handle for thread wakeup virtio-blk: Do not use std::stringstream for _driver_name virtio-net: Do not use std::stringstream for _driver_name bio: Add bio_private bio: Introduce BIO_SCSI virtio-scsi: Initial support ramdisk: Use dev->size instead of sc->size vfs: Do uio size check in bdev_read adn bdev_write ramdisk: Skip uio size check in driver virtio-blk: Skip uio size check in driver xenfront-blk: Skip uio size check in driver virtio-blk: Make the class name to virtio::blk. virtio-blk: Make the make request func name shorter virtio-blk: Reduce extra indention virtio-blk: Remove CamelCase naming virtio-blk: Do not call biodone in struct blk_req's destructor virtio-blk: Initialize req->bio in constructor virtio-blk: Add space around = virtio-blk: Rename response_worker to req_done virtio: Add add_buf_wait and wakeup_waiter virtio-blk: Use add_buf_wait and wakeup_waiter virtio-scsi: Use add_buf_wait and wakeup_waiter virtio-scsi: Share the same vblk name with virtio-blk run.py: Add --scsi option to boot from virtio-scsi run.py: Use newer -device and -drive syntax for virtio-blk device virtio-net: Reduce extra indention virtio-net: Make the class name to virtio::net. virtio-net: Rename if_ functions virtio-net: Rename vnet_txq_stats and vnet_rxq_stats net: Rename if_get_if_info to if_getinfo virtio-rng: Make the class name to virtio::rng. run.py: Add aio=native for virtio-blk device tests: Wait until all bio are done in bdev-write test. virtio-net: Do not specify VIRTIO_RING_F_INDIRECT_DESC twice. virtio: Enable indirect descriptor for vblk and vscsi tests: Fix bytes_written overflow in bdev-write and fs-stress tests: Print err when bio is not finished correctly in bdev-write Add "make image=haproxy" pci: Enable mmio bar support virtio: Do not call setup_features twice virtio-scsi: Skip uio size check in driver Avi Kivity (46): elf: fix DPTMOD64 relocations with null symbol build: use -Og for mode=debug, if available runtime: fix prio_find_thread() ignoring missing threads rcu: forward declare preempt_enable() to avoid #include hell rcu: add preempt_lock_in_rcu rcu: make rcu_ptr default initialize to a reasonable value sched: add a wake() function that is safe to use on a thread that may terminate sched: change wake_with() to use rcu locking sched: remove thread::_ref_counter tst-threadcomplete: fix race between t2 running and t1 destroying linux_ioctl.cc: fix unicode in comment build: get rid of libunwind.a net: remove unneeded linux compatibility macros net: reconcile bsd and api IPPROTO_* macros net: reconcile bsd and api SOL_* macros net: reconcile in.h IN_CLASS* macros and friends net: reconcile bsd and linux IP_ socket options net: reconcile api and bsd INADDR_* macros net: reconcile bsd and api IP_MAX_MEMBERSHIPS bsd: fix horrible m_* macro clash poll: move away from bsd msleep() build: allow image cacheing during build rcu: add variant of assign() for null pointers netport: make CTASSERT work in both C and C++ net: convert most of the networking stack to C++ vring: avoid expensive divides bsd: convert the Xen stuff to C++ bsd: refine __ntohl() and friends as inline functions bsd: convert tcp_seq to a class bsd: add comparison operators to tcp_seq bsd: change operator-(tcp_seq, tcp_seq) to be signed net: fix excessive window updates virtio: fix received packet size tracepoint virtio: support UDP fragmentation offload (UFO) x64: enable A20 gate very early xen: remove designated initializer in C++ code serial: initialize word size correctly net: call socket constructor and destructor condvar: make WAIT_MORPHING required condvar: rename members to conform to coding style condvar: improve constructor condvar: switch implementation to member functions mutex: remove spinlock-based mutex gdb: fix 'osv info thread' thread address printout net: fix socket send/receive timeout tst-kill: fix timeout test Benoît Canet (1): loader: Move back __libc_stack_end to the loader. Dmitry Fleytman (13): release-ec2: bugfixes release-ec2: beautifications netperf: patch to work-around partial alarm() functionality build: allow FS size specification from command line netinet: Fix broken checksum verification in LRO mechanism alarm: prepare for syscall interruption implementation msleep: prepare for interruptible sleep implementation wait_until: introduce infrastructure for interruptible wait msleep: wait in interruptible manner alarm: wake threads in interruptible sleep tst-kill: add tests for interrupted syscalls (SIG_ALRM) netperf: drop patch for limited alarm() implementation workaround DHCP: Support MTU option Dor Laor (1): Silence the qemu-ifup script Eduardo Piva (3): debug: create circular buffer for silent mode loader: Add --verbose option to OSv debug: Change calls to printf on boot messages Glauber Costa (47): loader.cc: don't start DHCP when no interface is found loader.py: unbreak info threads xen: int vs long issues - OSv side sched: initialize clock later xen: disable pvclock for more than 32 CPUs sched: Use an integer for thread ids sched: standardize call to _cleanup sched: implement pthread_detach tests: add test for thread completion mmu: don't bail out on huge page failure tests: Test huge page allocation failure. mmu: support MAP_UNINITIALIZED flag tests: fix threads being destroyed earlier. vma_fault: propagate exception frame to fault handlers mmu: fix allocate_intermediate_level enable interrupts during page fault handling mempool: memory statistics runtime: Fix hard-coded _SC_PAGESIZE linux: add support for clock_getres through syscall sched: keep track of thread's runtime sched: reserve some thread ids pthread: add support for pthread_getcpuclockid tests: add test for memmove string library functionality mem: fix allocation accounting x64: Provide a backwards version of memcpy string: implement memmove using memcpy string: add fixups for memcpy operations mmu: make operate quantifiable. mmu: account evacuated size semaphore: allow extending the interface mempool: shrink memory when no longer used. mmu: implement a new JVM vma JVM ballon driver jvm_balloon: control shrinker activation / deactivation java: memory pressure monitor jvm: insert probe mm: Count total memory used by the JVM heap jvm_balloon: disable balloon upon jvm memory pressure. jvm: set max_heap to all available memory. libc: support more time modes tests: add test for thread clock msleep: make it accept any kind of mutex bsd glue: simplify curproc so it returns a pointer reclaim: export address of the OSV reclaimer ZFS: remove one OSv ifdef balloon: remove leftover code java: disable balloon when heap size is set. Gleb Natapov (20): pthread: add stubs for pthread_condattr_* functions mprotect() should not fail if it encounters non present pte mmu: Hold vma list lock in mmap() paths mmu: Move code around mmu: generic page table walker based on linear_map_level mmu: convert populate/unpopulate/protect page walkers to the generic page walker mmu: convert virt_to_phys_pt() page walker to generic one mmu: add constexpr to some functions mmu: do not free pages before flushing remote tlbs during unpopulate mmu: do tlb flush while changing permission only if permissions are reduced mmu: remove tlb_flush from vdepopulate mmu: Align mmap start address to large page if possible mmu: Validate file permission in mprotect() tests: add mprotect() permission checking test mmu: split map_range() into two functions mmu: make map_level<> usable only through map_range() function. mmu: fix calculation of offset during page table traversal mmu: fix vma locking during mmap related operations mmu: Make map_file() more efficient loader.py: print flags and permissions in "osv mmap" Juan Antonio Osorio (2): corrected small typo on the README.md run.py: Remove global variable usage Nadav Har'El (53): Support "make image=rogue" Support "make image=specjvm" Revive testrunner.so Don't assert() in tests/tst-readdir.cc libc: Fix remove() return value Some small fixes to tst-pipe.cc Reindent fs/vfs/main.cc Implement mknod() Fix wrong error codes in unlink(), rmdir() and readdir() Fix shared-object finalization Rename blacklisted tests Verify slow page fault only happens when preemption is allowed Add "make image=memcached" gdb: make "osv info threads" work again Add rcu_lock_in_preempt_type Fix wake_with() Fix race between join() and thread completion backtrace(): Use libgcc_eh.a instead of libunwind.a. Fix assertion failure during many-cpu boot Trivial: pipe.cc doesn't need to include af_local.h sched: correctly fix for timer re-set bug Convenience attr constructor for a thread with a small stack Add timerfd_*() system calls tst-timerfd.cc: Test for timerfd_*() Update pre-requisites in README.md sched: Overhaul sched::thread::attr construction libc: fix size check in select() tst-mmap: fix two leaks README: build requires 64-bit distribution file: reduce boiler-plate code in special files fs: clean up old "fo_*" C functions Sched: fix race start_early_threads() README: Add a short intro to OSv Exile spinlock to a separate file build.mk: Fix dependency Refactor timerfd.cc clock: add monotonic uptime clock loader: fix spurious error message time.cc: generalize the std::chrono -> timespec conversion Makefile: remove unnecessary -lstdc++ tst-vfs: don't rely on some random Java file modules: Move more files to modules/{java,mgmt}/usr.manifest Makefile: get rid of "make external" Move tests to a separate module Document clock::time() and fix its implementation on kvmclock osv/clock.hh: Add std::chrono::duration literals Add osv::clock::wall Fix regression in early output to stdout loader.cc: make error messages visible sysinfo(): fix stack overwrite sysinfo(): Provide some real measurements run.py: without -e, revert to the default command line. run.py: Add -V (--verbose) option Or Cohen (1): libc: Add getgrgid_r for group querying Pekka Enberg (58): Revert "Add tests into tst-fs-link.so to check vnode duplicity" Revert "vfs: Fix duplicate in-memory vnodes" mman: Fix errno handling in mmap and munmap test.py: Make test runner silent by default test.py: Switch to blacklist test.py: Make output pretty and show duration test.py: add '--repeat' option tst-fs-link.so: Use mktemp() for path names core: vma abstract base class mmu: Use addr_range for vma constructors x64: Make page fault handler arch specific loader: Remove locale test test.py: Add tst-threadcomplete.so to blacklist test.py: Show blacklisted tests mmu: Add is_page_aligned() helper function mman: Move mincore() to libc/mman.cc mman: Simplify mmap() munmap: Fail if munmap address range is not mapped x64: Move PTE definitions to arch-mmu.hh virtio-blk: Use 'auto' where possible test.py: Bring back tst-threadcomplete.so Revert "build: allow image cacheing during build" acpi: Use tprintf-based API for logging java: Simplify uncaught exception reporting pci: Remove unused 'Driver' forward declaration build: Require 64-bit x86 compiler modules: support "include"ing a module list images: Bring back haproxy.py build.mk: Fix Java test build Update mgmt.git version loader: Update Cloudius copyright bsd: Simplify networking init message x64: Simplify CPU bringup boot message x64: Drop APIC base boot message Remove vga.cc.orig committed by mistake Add patch command backup files to gitignore build: Force version.h generation Revert "build: Force version.h generation" Update to latest mgmt.git Revert "Makefile: Add httpserver rule" modules: Remove httpserver.so from mgmt java: Use debugf() for autotuning message run.py: Add '--graphics' option trace: add 'extract' command loader: Bring back OSv version at boot mgmt.git: boot message cleanups README: Replace debugging sections with links to Wiki devfs: Remove "device not found" printout loader: Remove copyright statement from boot log pthread: Add pthread_attr_getstacksize() libc: Use pthread stack info for RLIMIT_STACK vfs: 'struct file' to VOP_READ mmu: procfs support proc filesystem vfs: mount procfs at boot tests: miscs-procfs.so Revert "build: Support VMDK and other image formats" java: Disable JVM balloon Raphael S. Carvalho (25): vfs: Fix duplicate in-memory vnodes Add tests into tst-fs-link.so to check vnode duplicity libc/mount: Change umount2 and add umount libc: Add munmap validation tests: Add munmap tests into tst-mmap-file vfs: Fix duplicate in-memory vnodes Add tests into tst-fs-link.so to check vnode duplicity tst-fs-link.so: Use mktemp() in check_vnode_duplicity() mmu: Add page_size_shift constant to avoid magic values umount2: Add parameter checks tst-zfs-mount: Rename and change test to use report approach mmu: Replace magic values by constants bsd: Fix unimplemented copystr() and copyinstr() loader: Fix leak on library objects tst-fsx.c: Fix: fallocate() is defined when FALLOCATE is defined gdb: Add 'osv zfs' command for ZFS analysis vfs: change the approach of releasing dentries during unmount vfs: Fix dentry leak in sys_pivot_root vfs: Add hierarchy support to directory entries Fix fs/vfs/vfs_lookup.c coding style tst-vfs: Add test case to dentry hierarchy support scripts/test: Add option to run all test cases in a single OSv instance Fix tests/testrunner.cc coding style gdb: improve 'osv zfs' command zfs: Fix on-disk data inconsistency on shutdown Takuya ASADA (8): pci: Fix offsets in *_pci_config_* vga: Fix VGA base address vga: Handle line feed VGA: Add input_ready() and readch() stubs loader: Add '--vga' to switch console build: Support VMDK and other image formats console: add vga.hh include elf: fix object::lookup_addr to lookup correct symbol Tomasz Grabiec (79): tst-rename: simplify Add test for sequential write performance at file I/O layer Add test for sequential write performance at bdev layer virtio-blk: enable write caching loader.py: Make 'osv info threads' not fail when all frames are blacklisted loader.py: Skip inlined frames in 'osv info threads' run.py: Use 'signal' option of chardev to control signal behavior loader.py: Make 'osv trace duration' not sorted by default elf: implement missing module_index() function. elf: change module_index type from unsigned long to ulong tls: Make __tls_get_addr() work for symbols defined in core module tests: add test for std::promise elf: fix handling of R_X86_64_TPOFF64 relocation tests: print stats asynchronously in fs/bdev write tests Make BSD code use hardware atomics Fix compilation error in uips_socket.cc loader.py: fix 'osv memory' and 'osv mmap' commands tests: print average transfer rate after test tests: Convert 'total' to double instead of float bsd: Initialize physmem variable loader.py: fix `osv info threads` vring: move add_buf_wait() definition to .cc vring: add tracepoint for tracking _avail_count runtime: fix "may be uninitialized" warnings core: extract graceful shutdown logic runtime: call shutdown() on exit() bsd/xdr: Silence uninitialized use warnings with -O3 netinet: fix uninitialized use of 'nims' in inm_merge() sched: add tracepoint for thread creation libc: make dlopen() return main program for empty file name tests: add tests for dlopen() imgedit: fix potential deadlock between qemu and nbd_file.__init__ imgedit: simplify the loop imgedit: fix hang in case qemu terminates before nbd client connects imgedit: fail if qemu exits with non-zero code config.json: convert tabs to spaces modules: support nested module dependencies modules: make presence of either manifests optional modules: cleanup resolve.py modules: make java a separate OSv module modules: introduce higer level API to aid manifest generation modules: allow for file mapping declaration in module.py java: add all JRE files to the image by default conf: make release build use -O3 module.py: move test.manifest.gen processing out of jvm class Add netperf image configuration build: incremental make without image= argument should use the default gdb: make Trace convertible to string gdb: support backtraces shorter than backtrace_len gdb: resolve tracepoint_base outside the loop Add python wrapper for addr2line gdb: extract trace related abstractions to an independent module trace: support persisting trace stream to file gdb: introduce command to save traces in binary form trace: add command-line tool for processing trace files Introduce python module for tree printing trace: add source address formatting options sched: add tracepoint for resuming from wait trace: add command for printing wait profile trace: add command for printing tracepoint hit profile trace: separate backtrace elements with a comma rather than space trace: show all digits of timestamp debug.py: fix output parsing for addr2line ver. 2.23.52.0.1-9.fc19 trace: remove WritingPacker.offset trace: improve help trace: exit silently when stdout pipe is broken trace: add `summary` command trace: use call-site instead of return-site in flat backtrace trace: move trace related commands from loader.py to trace.py trace: move TimeRange from prof.py to trace.py trace: make time slicing options available in trace listing trace: introduce '--period' time slicing option trace: accept time units in --since and --until trace: make -t option required for prof command trace: get rid of unnecessary int_or_none() trace: fix help text of 'trace.py summary' trace: get rid of extra new-line in 'list-timed' output Revert "conf: make release build use -O3" build: do not generate .d file of the uploaded manifest Vlad (3): include/api/assert.h: Add the missing protection compilation: Fix compilation errors virtio-net: use if_transmit() instead of legacy if_start() Vlad Zolotarov (17): build: Fix some debug build errors build.mk: Add -DNDEBUG when mode!=debug Added DEBUG_ASSERT() macro virtio-net: Introducing rxq and txq structs net: Added IFCAP_HWSTATS virtio-net: Collect statistics in virtio-net net: Added ifnet->if_get_if_info() ifconfig: Fix issue #134 loader.cc: Print a message when a program returns a non-zero status test.py: Add additional error patterns to test.py test.py: Blacklist tst-fsx test since it fails usr.manifest.skel: Add missing tests build.mk: Generate a manifest of tests automatically posix_memalign: Remove the extra check on size libc: added gethostbyname() libc: added __snprintf_chk() and __vasprintf_chk() libc: added rand_r() Zhi Yong Wu (1): xen: Fix "error: unable to find tring literal operator"