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.
