[Vm-dev] Re: [Pharo-dev] Cog in the cloud

Ben Coman btc at openInWorld.com
Mon Dec 22 12:14:04 UTC 2014


Ben Coman wrote:
> 
> (whoops forgot to cross-post)
> 
> Eliot Miranda wrote:
>> Hi Ben,
>>
>>
>> On Dec 19, 2014, at 8:08 PM, Ben Coman <btc at openInWorld.com> wrote:
>>
>>> Just some thoughts that arose as I skipped along the web...
>>>
>>> With the idea of using Pharo in the cloud, I was thinking of how 
>>> PharoNOS[1] is basing off top of the Linux kernel, but the examples 
>>> indicate its operating in User Mode.  So I was wondering about 
>>> performance being greater[2] if the CogVM ran in Kernel Mode. However 
>>> maybe this could get tangled in the GPL license of the kernel.
>>>
>>> Now I believe FreeBSD/NetBSD license is compatible with COG's MIT 
>>> license, so that seems a better option for eliminating layers of the 
>>> operating system.  They both[3][4] have pre-built Amazon Machine 
>>> Images to run on EC2, as well as instructions[5] to build your own 
>>> AMI.  So potentially we could build an AMI with the CogVM linked to 
>>> the FreeBSDKernel operating in Kernel Mode, with no User Mode. The 
>>> lack of direct access to memory from the Image, and probably single 
>>> application focus should be sufficient security to forgo User Mode, 
>>> and run faster.
>>>
>>> But we could go a step further.  Runing in the cloud relies heavily 
>>> on virtualisation, and for performance[6], most likely on the OS's 
>>> paravirtualisation interface - to Xen for example.  So from Cog, why 
>>> not interface direct to the Xen FrontEndDriver[7] and eliminate the 
>>> DomU operating system all together.  What I understand from [6] is 
>>> that Xen's paravirtualisation hooks makes it much easier to boot, 
>>> than booting on the bare metal of a fully-virtualised system. So the 
>>> former seems more achievable than the latter (which was the only 
>>> option in years past), and also be more portable as technology 
>>> evolves, to any platform Xen runs on.
>>>
>>> Squeak/Pharo on Cog-Xen could be a good choice for a Cloud Operating 
>>> System[8]. Maybe a good student research project?
>>
>> This sounds really cool, but could you analyse a bit further?
>>
>> - what key economic and managerial benefits accrue from this 
>> configuration?
> 
> I'll put some more thought into this, but just off the top of my head
> (so it turned out more technical than economic/managerial):
> 
> * Eliminates performance overhead of system call context switching.
> Although this is replaced by hypercalls, it removes one layer on
> hypervisor systems, which plausibly is going to be EVERYTHING in the 
> future.
> 
> * Eliminate performance overhead of OS networking stack
> http://roscidus.com/blog/blog/2014/08/15/optimising-the-unikernel/
> 
> * Data from virtual devices is event driven.
> 
> * More easily portable to different ARM platforms.  Xen will present a
> common interface to hide platform idiosyncrasies.
> --> More widespread embedded use Cog.
> http://www.slideshare.net/xen_com_mgr/free-rtos-xensummit
> 
> * Run databases in their own domain.
> 
> * Isolate plugin memory space. Rather than linking plugins into Cog,
> potentially threatening its stability, run them in a separate domain and
> use high-speed inter-domain shared memory.
> http://www.cs.ucsb.edu/~nanli/projects/cs270.pdf
> 
> * Have a cloud community of thousands** of Images running each in their
> own domain, communicating with high-speed inter-domain shared memory.
>    ** presumptive figure - would need to check scaling ability
> 
> * Data sharing on high density hosting providers. Not sure if its there
> yet, but may get Copy-On-Write
> http://www-archive.xenproject.org/files/xensummit_fall07/18_GregorMilos.pdf
> 
> * In very large Images, which Spur will allow, perhaps a better way to
> snapshot an Image is via virtual machine snapshotting using Copy-On.
> http://www.cercs.gatech.edu/tech-reports/tr2010/git-cercs-10-05.pdf
> 
> * Rather than convert the Cog/Image to be multi-threaded, could have
> many grid nodes running their own domain, communicating with high speed
> shared memory.
> http://www.cs.ucsb.edu/~nanli/projects/cs270.pdf
> http://osnet.cs.binghamton.edu/publications/hines07memx.pdf
> 
> * AMD's hardware virtualisation eliminated a Ring and also segmented
> memory protection used by virtualisation to separate address spaces, so
> 64-bit AMD can be slower.  Eliminating the OS kernel layer probably
> bypasses this limitation since there would be only two levels -
> Hypervisor & Cog.
> https://lse.epita.fr/data/2011-lse-summer-week/xen.pdf
> 
> * Its where all the cool kids hang out --> marketing opportunity
> 

* Security versus lines of code...

   Linux = 15.9 million (3.6 Kernel)
   OSX = 86 million
   FreeBSD = 6.25 million
   OpenSolaris = 10 million
   Windows = 64 million

   Xen-ARM = 90,000
   Xen-x86 = 140,000

https://www.google.com/fusiontables/DataSource?docid=12Eg7Ru1CH5MIjomcfjaGKe2qBd9ynmSQni5CAioK

http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions_whitepaper





> 
> 
>>
>> - what infrastructure is missing?  (e.g. what key drivers need 
>> implementing?)
> 
> I'll need to understand Cog more. As a start, here are some porting and
> API docs...
> 
> http://events.linuxfoundation.org/sites/events/files/slides/Porting%20FreeBSD%20on%20Xen%20on%20ARM%20.pdf 
> 
> 
> http://oss.org.cn/ossdocs/server_storage/xen/interface/interface.html
> 
> http://www.informit.com/articles/article.aspx?p=1160234&seqNum=4
> 
> https://lse.epita.fr/data/2011-lse-summer-week/xen.pdf
> 
> https://github.com/cloudius-systems/osv/blob/master/drivers/xenfront-xenbus.cc 
> 
> 
> cheers -ben
> 
>>>
>>> [1] http://pillarhub.pharocloud.com/hub/mikefilonov/pharonos
>>> [2] http://blog.codinghorror.com/understanding-user-and-kernel-mode/
>>> [3] http://www.daemonology.net/freebsd-on-ec2/
>>> [4] http://wiki.netbsd.org/amazon_ec2/amis/
>>> [5] http://wiki.netbsd.org/amazon_ec2/build_your_own_ami/
>>> [6] http://wiki.xen.org/wiki/Virtualization_Spectrum
>>> [7] http://wiki.xen.org/wiki/FrontendDriver
>>> [8] http://wiki.xen.org/wiki/Cloud_Operating_Systems
>>
>>
>> Eliot (phone)
>>
> 
> 
> 
> 



More information about the Vm-dev mailing list