I've got to say: this is a really awesome list! On Tue, Nov 13, 2018 at 10:54 AM Waldek Kozaczuk <[email protected]> wrote: > > This is somewhat revised version of the roadmap I sent couple of months ago. > I think that the main premise of it which I wrote in the original version > still stands: > > "In my opinion, if OSv is to become more relevant than it is now, its primary > target should be a platform for running stateless and serverless apps. > Therefore it needs to become leaner (memory usage and kernel size), a little > more modular and boot faster while preserving its functionality in terms of > Linux/POSIX ABI (and possibly expanding where it makes sense). That is not > say that we should not improve support for stateful apps like mysql or > elasticsearch which would require optimizations to VFS and possibly ZFS which > I list below." > > OBJECTIVES > > Make OSv more modular > > ZFS and commands/runscript functionality should be moved as optional modules > in form of shared libraries > The key building block to achieve it should be an improved ROFS intended as a > default filesystem to load code from > > Optimize kernel size > > My experiments show that kernel (loader-stripped.elf) can be as small as > 5.1MB after ZFS and program options are compiled out (and there is still room > for improvements) > > Optimize boot time > > OSv can execute under 50ms on hyperkit and under 100ms on QEMU with qboot > Smaller kernel should reduce boot time > > Optimize memory usage > > My recent investigation about memory allocation is OSv shows that it should > be possible and quite easy to reduce memory utilization in many areas > The aggressive but quite realistic goal should be an ability to run OSv with > simple C app using no more than 10MB of RAM > Smaller kernel should also reduce memory usage > > > MORE IMPORTANT > File systems > > ROFS > > [FASTER BOOT] Add compression - > https://github.com/cloudius-systems/osv/issues/978 > [LESS MEMORY] Avoid creating another copy when mmap-ing ROFS file - > https://github.com/cloudius-systems/osv/issues/979 > > ZFS > > [MODULARITY, SMALLER KERNEL, FASTER BOOT] move all ZFS code in kernel into > libzfs.so > > Make ZFS an optional library - > https://github.com/cloudius-systems/osv/issues/1009 > > RAMFS > > [SPEED, LESS MEMORY] Fix slow write/append of files on RAMFS - > https://github.com/cloudius-systems/osv/issues/884 > Eliminate BootFS > > 9pFS > > [ENHANCEMENTS] https://github.com/cloudius-systems/osv/issues/1008 > > > Optimize memory usage > > Wasted memory in early (pre-SMP-enabled) malloc (possibly save 6MB of > memory!!!) - https://github.com/cloudius-systems/osv/issues/270 > Make allocations < 16 bytes more space efficient - > https://github.com/cloudius-systems/osv/issues/1011 > Improve physical memory utilization by using memory below 2MB - > https://github.com/cloudius-systems/osv/issues/1012 > Make L1/L2 memory pool sizes self-configurable depending on physical memory > available - https://github.com/cloudius-systems/osv/issues/1013 > Consider more space-efficient allocation between 1024 and 4096 bytes - > https://github.com/cloudius-systems/osv/issues/1000 > > > Improve modularity > > Remove boost programs_options from kernel by rewriting > loader.cc::parse_options() to use getopt_long() and extract > commands.cc:parse_command_line(const std::string line, bool& ok) as a > optional library commands.so; see > https://github.com/cloudius-systems/osv/issues/1014 for details > > > Optimize kernel size > > Be more selective on symbols exported from the kernel - > https://github.com/cloudius-systems/osv/issues/97 > > Remove/hide symbols > > Investigate what else can be discarded using bloaty > > eliminate some debug strings in BSD code tree that should further reduce > .rodata section > remove/hide symbols (reduces ELF .dynsym (others?) section) - > https://github.com/cloudius-systems/osv/issues/97 > reduce size of other sections in loader.elf > > > Other > > Make more programs run without having to re-compile (on ubuntu already pies) > > look at adding missing symbols to make coreutils (ls, find) programs run > (sent email about it) > > Stop using libraries and headers from external - > https://github.com/cloudius-systems/osv/issues/743 and related … > https://github.com/cloudius-systems/osv/issues/687 > Assertion failed: timestamp >= _last (timer-set.hh: expire) - > https://github.com/cloudius-systems/osv/issues/382 > > > COMPLETE BUT NOT COMMITTED PATCHES > > [SECURITY] Read-only REST API > > https://github.com/cloudius-systems/osv/issues/820 > > mprotect() syscall stack > > we could commit it as is but then it would syscall stack use more memory (1 > page per thread) until we fix this issue - > https://github.com/cloudius-systems/osv/issues/1000 > > full revival of multiboot > > there may be still controversial issues resolved before this patch is ready > to be merged > > > LESS IMPORTANT > > [ENHANCEMENTS] Support new hypervisors > > qboot > NEMU > Hyperkit - https://github.com/cloudius-systems/osv/issues/948 > > multiboot - https://github.com/cloudius-systems/osv/issues/981 > > File systems > > RAMFS > > [LESS MEMORY] Avoid creating another copy when mmap-ing RAMF - > https://github.com/cloudius-systems/osv/issues/979 > [BUG] readdir does not handle asynchronous entry removal properly - > https://github.com/cloudius-systems/osv/issues/68 > > ZFS > > [ENHANCEMENTS] create ZFS image on host instead of booting OSv - see > https://github.com/cloudius-systems/osv/issues/918 > > Make VFS locking more granular > > VFS: read()/write() lock the vnode for too long - > https://github.com/cloudius-systems/osv/issues/450 > > this commit addresses ZFS - > https://github.com/cloudius-systems/osv/commit/b5eadc37f12c4b97a52705830d2d9097498049c2 > > people reported that some FS apps did not scale even though commit above > addresses > this commit > https://github.com/cloudius-systems/osv/commit/697943f631960b3d55f66381581e1435b726a1a8 > reverted previous one because of > https://github.com/cloudius-systems/osv/issues/504 > > Async IO - https://github.com/cloudius-systems/osv/issues/656 > > [MONITORING] REST API enhancements > > Remote test execution - https://github.com/cloudius-systems/osv/issues/445 > Page in/page out - https://github.com/cloudius-systems/osv/issues/465 > Block IO - https://github.com/cloudius-systems/osv/issues/466 > Network stat - https://github.com/cloudius-systems/osv/issues/467 > Load average - https://github.com/cloudius-systems/osv/issues/469 > > [SECURITY] OpenSSL upgrade > Do not use setimg.py in Makefile - > https://github.com/cloudius-systems/osv/issues/733 > > > IN PROGRESS > > Add support for Mono, C# - https://github.com/cloudius-systems/osv/issues/34 > > added sample app > > -- > You received this message because you are subscribed to the Google Groups > "OSv Development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout.
-- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
