Re: LuaJIT-on-Xen?

  • From: Alexander Gladysh <agladysh@xxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Sun, 5 May 2013 09:17:51 +0400

On Sun, May 5, 2013 at 9:09 AM, Javier Guerra Giraldez
<javier@xxxxxxxxxxx> wrote:
> On Sat, May 4, 2013 at 11:22 PM, Alexander Gladysh <agladysh@xxxxxxxxx> wrote:
>>
>> There are several projects that aim to launch an application framework
>> as a Xen VM instance without OS.
>>
> .....
>>
>> This kind of feat should be possible with LuaJIT too, and it looks
>> like an interesting and potentially very useful project.
>
>
> I see a few different ways to architect this:

<...>

> - LuaJIT "kernel" + some "ljxencall" (like ljsyscall but for Xen
> syscalls instead of Unix ones).  Now there's really no OS!  not even
> ljsyscall would work on such an image, but the FFI can do all the
> Xen-provided syscalls.  the downside is that these are _very_ low
> level, more like some high-level hardware than some low-level system.
>  AFAIK, there's no filesystem, no TCP/IP, no processes, no threads...
> What you _do_ get is a high-speed channel to communicate with other
> VMs, and some calls to manage CPU states and interrupts.

> so... which would you like?   myself, i'd go the busybox way, if
> feeling hardcore maybe the "LuaJIT as init" way.  the last one (LuaJIT
> as kernel) would be more realistic if you add a TCP/IP stack.  maybe
> the µIP library... or even better, rewrite it on LuaJIT+FFI!  but I
> think the Xen syscalls don't include even a packet-level device, just
> an inter-VM channel that is used to talk to the Dom0 daemons.

I'm interested in the last one — LuaJIT "kernel". As I understand
(correct me if I'm wrong), both examples in my original post do that
(and it should be possible to borrow something from them, perhaps).

I need some way to communicate with nginx frontend (in a separate
DomU, lives in a full-blown OS), with Redis DB (same), with neighbour
workers / request handlers (OS-less), and somewhere to write logs (can
be a networking-based logger or equivalent).

Lack of processes/threads is not a problem — my code is not threaded,
and I'll simply spawn several more VMs.

Alexander.

Other related posts: