On Thu, Mar 19, 2020 at 4:05 PM Pekka Enberg <[email protected]> wrote:
>
> Hi,
>
> On Thu, Mar 19, 2020 at 3:30 PM Yuanqi Li <[email protected]> wrote:
> > Recently we've been looking for new directions. One of the ideas is to 
> > merge JVM and kernel together, so that kernel can expose more system 
> > information (e.g., memory usage and layout, scheduling, network stack) to 
> > JVM. Some potential benefits may include better Java application 
> > performance, better GC performance, faster bootstrapping time, etc.  The 
> > main target will be serverless functions (e.g., AWS Lambda) where most 
> > tasks are short lived function invocations. A slow start of JVM is 
> > prohibitive. An insight is that both the guest OS and JVM are virtual 
> > machines essentially, a lot of language and security checks in JVM may be 
> > redundant given that the guest OS is already well isolated. Memory 
> > allocation and reclaim may also work better since OS can see semantic 
> > information of memory pages. So our first try will be making JVM and kernel 
> > share the same memory management subsystem.
>
> Yeah, I think this is an interesting direction! Merging the JVM and
> the OS was one of the things we were looking to do with OSv, as you
> can see from the JVM memory balloon feature.
>
> > For the new project, I am doing preliminary experiments to collect 
> > performance numbers and estimate potential benefits of the design. OSv is a 
> > very interesting and promising kernel that we'd like to dig more. Its boot 
> > time is blazing fast with Firecracker. I also saw from the original ATC 
> > paper and source code that it has a JVM ballooning mechanism. But I didn't 
> > see how it could work with unmodified JVM. In addition, if I want to 
> > compile both OSv and OpenJDK together from source into a single bootable 
> > image, is there any solutions or resources? I didn't see such documentation 
> > in OSv's github wiki.
>
> I don't remember if we ever built JVM from sources (I'm CC'ing Calle
> for this), but it shouldn't be too hard to do.

(Really CC'ing Calle this time....)

>
> The way it works in OSv is that you pass the "image" option to
> "./scripts/build" to build an image with OSv and some applications:
>
> https://github.com/cloudius-systems/osv#building-osv-kernel-and-creating-images
>
> What you need to do is define a OSv "module" or "application" that
> builds JVM from sources. You can find an example of Python being built
> from sources here:
>
> https://github.com/cloudius-systems/osv-apps/tree/master/python27-fromsource
>
> Please note that OSv still consumes the applications as ELF
> executables and shared libraries, and not combine them into one binary
> like other unikernels like Mirage do.
>
> > I know that OSv is designed to support arbitrary unmodifed Linux binaries. 
> > So our idea diverges from OSv's goal. But given the popularity of FaaS and 
> > microservices, a dedicated bootable JVM worths a try. Or we may later find 
> > some low-intrusive disign that doesn't conflict with OSv's goal.
>
> We wanted to run Linux executables out-of-the-box, but did not rule
> out OSv-specific APIs. If you allow yourself to modify the JVM
> sources, then there's really no problem in adding more OSv "system
> calls" (they're really functions) to do what you need to do.
>
> Hope this helps!
>
> - Pekka

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/CAGUyND92aBWis5oGx4_AVdM5ACMbdzZPKrghR_BnAJQGBcs%2Bow%40mail.gmail.com.

Reply via email to