[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-API] [MirageOS-devel] [Minios-devel] [RFC] Unicore Subproject Proposal



On 15.09.2017 11:35, Anil Madhavapeddy wrote:
On 15 Sep 2017, at 09:36, Simon Kuenzer <simon.kuenzer@xxxxxxxxx <mailto:simon.kuenzer@xxxxxxxxx>> wrote:
Hey Anil,

On 13.09.2017 12:11, Anil Madhavapeddy wrote:
On 11 Sep 2017, at 13:08, Simon Kuenzer <simon.kuenzer@xxxxxxxxx <mailto:simon.kuenzer@xxxxxxxxx>> wrote:
Just my 2 cents:
1. Is this academic project, or it have specific goals and areas of application? Would be good to have some practical use-cases and well formulated list of problems (we all feel these by guts, but...), it aiming to solve. IMHO that will help to prioritize functionality and get usable result faster :)
It is kind of both, however we aim a strong focus on real world 
problems: IoT, Mobile Edge Computing (MEC), Automotive, Virtual 
Network Functions (VNFs), and others.
We have played with many Unikernels (ClickOS, Mirage, Rump, OSv, and 
others) and tried to apply them in the several areas. While doing 
this, we noticed that each area benefits differently from the 
properties that Unikernels give - which is great (e.g., instant boot 
times for MEC, high performance for NFV, resource efficiency for 
IoT). However, building and maintaining new Unikernels (as we did 
with ClickOS, MiniCache, and Minipython) is currently painful.
Because of different focuses on properties and ported/implemented 
applications, most Unikernel today are bound to their own OS layers 
(e.g., ClickOS uses a different Mini-OS than Mirage). Each 
application requires a different subset of OS layers but also 
enables different optimizations of them.
In order to solve this, we came up with the Unicore proposal. But I 
agree with your suggestion at this point: It helps for the project 
start to focus on some initial areas. For now, I hope this is driven 
by the first contributors, and I have personally IoT in mind. Since 
the project goal is so ambitious, we should keep the long-term goal 
in mind from the beginning.
Thanks very much for kicking off this initiative. Maintaining a forked MiniOS has been a multi-year source of a maintenance burden for MirageOS, and we would love to be more aligned with an upstream version and benefit from new features such as (e.g.) HVM booting.
We have the same burden with ClickOS and all the other unikernels we 
have built. Features like HVM booting or support for different 
hypervisors, are always something that users ask for. Since many 
Unikernel projects struggle with this, I would like to have the 
maintenance effort of a common base concentrated.
But we also learned that each Unikernel has own requirements: This is 
why Unicore has to provide full configuration flexibility. Only then, 
all Unikernel projects could really benefit from it.
So, I think we should all focus on the Unicore base and make our 
individual projects successful with it ;-).
This sounds good. It's worth thinking through the explicit differences 
in goals from MiniOS, to address Samuel's points.
Yes, I agree. I am going to have a second round through the proposal.

It seems to me that MiniOS should remain the primary "support kernel" 
for Xen-related activities, for instance as a stub domain support 
kernel.  Unicore on the other hand explicitly tries to parameterise 
across its configuration so that it can be library linked to language 
runtimes more easily.
This split may help simplify MiniOS by removing some of the pseudo libc 
code that may be unnecessary outside Xen support functions, and also let 
us package up language runtimes in Unicore more easily via simple 
library package management and cross compilation.
It might be handled in this way during the project start, however I see 
Unicore more than just a set of base libraries to support language 
runtimes. The main intention is to support applications natively written 
to it and to support existing applications you may want to port.
For these cases you need more than a minimal base, you want to select a 
libc, a certain scheduler, and most likely a TCP/IP stack, as well as 
filesystem support. These libraries should work together and should also 
work with the base libraries. Additionally, the requirements to the 
libraries might differ among the projects.
Our content cache node Unikernel (called MiniCache), for instance, uses 
newlibc and lwIP. On top we have developed a single-purpose filesystem 
and web server code. Together we could achieve impressive performance 
results by using a single CPU compared to traditional web server 
applications running on a traditional OS [1].
In sum, the aim with Unicore is to have fine-granularity libraries so 
that it's flexible enough to accommodate a wide range of unikernels. 
Because of this, I see Unicore as having potential to eventually replace 
MiniOS.
regards,
Anil

Thanks,

Simon


[1] http://dl.acm.org/citation.cfm?doid=3050748.3050757

--
============================================================
Simon Kuenzer
シモン クゥンツァー
Research Scientist,
Networked Systems and Data Analytics Group
NEC Laboratories Europe, Network Research Division
Kurfuerstenanlage 36, D-69115 Heidelberg
Tel.     +49 (0)6221 4342-264
Fax:     +49 (0)6221 4342-5264
e-mail:  simon.kuenzer@xxxxxxxxx
============================================================
NEC Europe Ltd | Registered Office: Athene, Odyssey
Business Park, West End Road, London, HA4 6QE, GB
Registered in England 2832014

_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxx
https://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.