Le 14/01/2015 04:39, Joerg Beekmann, DeepCove Labs a écrit :
Hi
I've been exploring the possibility of hosting the Squeak/Pharo VM on MirageOS. MirageOS
is a Unikernal or "Library OS" where rather than creating an executable to be
run on Linux the compiler analyses dependencies right down through the device drivers and
creates a kernel that can be booted on Amazon AWS EC2.
http://www.openmirage.org/
http://queue.acm.org/detail.cfm?id=2566628
http://blog.acolyer.org/2015/01/13/unikernels-library-operating-systems-for-the-cloud/
It seems to me that having a Smalltalk hosed in this environment would be quite
useful on a number of fronts:
* A simple build and deploy of Smalltalk to the cloud. The Mirage group is
building unikernals from sources and then because they are small committing the
entire kernel to GitHub and then pushing the kernel to AWS EC2. Web sites and
APIs are an obvious application.
http://amirchaudhry.com/from-jekyll-to-unikernel-in-fifty-lines/.
* Smalltalk on small devices. The Mirage group is running Xen with mirage on
small Intel and ARM boards. See
http://openmirage.org/blog/announcing-mirage-20-release/.
* These kernels can be very small, on the order of 0.25Meg for minimal HTTP
servers with boot times in the ms range. A project called Jitsu
https://github.com/MagnusS/jitsu modifies a DNS server to boot kernels in
response to socket requests. The system making the request is unaware of the
boot.
* The Mirage group envisions thousands of kernels running on a single
Hypervisor with his speed inter-kernel communications. See
http://openmirage.org/blog/update-on-vchan. The facilitates Smalltalk systems
consisting of a swarm of communicating images where each image is single
threaded and concurrency is via message passing.
I've corresponded with the MirageOS group asking if they thought a language VM could be
hosted on Mirage. The discussion is here:
http://lists.xenproject.org/archives/html/mirageos-devel/2015-01/msg00053.html. Assuming
we understood each other it seems the answer is "yes that should be possible".
My question is what would be involved on the Smalltalk side? I presume the effort is going to
be mostly in the VM. Based on the conversation on the Mirage list I think the VM will need to
be able to run a Library with an entry point called by Mirage. That seems similar to the
" Embedding/VM as a DLL" project proposed here:
http://www.mirandabanda.org/cogblog/cog-projects/. Is this project active? The comment
indicates this is mostly refactoring & repackaging. Anyone have a perspective on this?
Best regards
Joerg
Given that the openmirage kernel is written mostly in ocaml, I think
that the "port" of the vm could imply quite some work, like rewriting
the plugins (socket at first), dealing with Ocaml bindings etc. and not
easy at all.
Digging into that, I went across the rump kernel, and think that it may
be much simpler to deal with than openmirage, with some nice other
features (micro or dedicated kernels) that could make the pharo system a
pharo os.
see
http://rumpkernel.org/
and http://lib.tkk.fi/Diss/2012/isbn9789526049175/isbn9789526049175.pdf
It is still a unix kernel (NetBDS)
written in C so more friendly to lot of developers and much simpler for
pharo vm port
integrates well in xen and other hypervisors
can be run without the hypervisor platform
can be tailored at will, and give very lean systems.
Extremely interesting
--
Regards,
Alain