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/9 
      <https://github.com/cloudius-systems/osv/issues/97>7 
      - 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.

Reply via email to