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.

Reply via email to