-
-
Notifications
You must be signed in to change notification settings - Fork 604
OSv Release 0.12
We are pleased to announce the release of OSv 0.12 Alpha Release
Some of the noteworthy additions are:
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
-
REST API now support SSL, making cloud deployment more secure. For more on enabling SSL see here
- 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
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
-
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
Images of the new release are available at osv.io/downloads and using capstan search.
EC2 community AMI are available here
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