You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
faster JVM startup time: from 120ms to 90ms for a simple hello world program (in that article)
reduces memory footprint when running multiple JVMs, apparently works in a containerized environment, should be great within OpenWhisk
There are two steps for the basic CDS AFAICS:
prepare the shared class files once via java -Xshare:dump: could be done during the docker image build (?)
call the JVM with the flag -Xshare:on to enable CDS (there is some talk about -Xshare:auto becoming the default which I assume would enable it automatically if the prepared files are present)
Leveraging AppCDS in OpenWhisk would mean to include the action Java code, and that might be tricky, as that can only be shared between containers with the same action code IIUC.
Same for Ahead-Of-Time compilation (AOT), new in Java 9, mentioned in the article as well, which has a costly pre-compilation step (that should include the application aka action code), not sure how that could be done within OW. It would be beneficial if an action needs to scale up, i.e. you are starting many new Java containers with a particular action and you want to get the fastest startup time. But maybe pre-warming makes this less useful. One would have to be able to run that action specific pre-compilation up front, and that might require to embed it in the docker image IIUC, which in turn would require building it dynamically from OW, which sounds complex.
The text was updated successfully, but these errors were encountered:
As described in this article, Java has a feature called class data sharing (CDS) that allows to share common class data for different JVMs.
This seems to be available since Java 5 (for JVM & JDK classes), and since Java 8 (u40) support application code as well (AppCDS).
The current OW java action runtime doesn't do anything like that yet.
Benefits:
There are two steps for the basic CDS AFAICS:
java -Xshare:dump
: could be done during the docker image build (?)-Xshare:on
to enable CDS (there is some talk about-Xshare:auto
becoming the default which I assume would enable it automatically if the prepared files are present)Leveraging AppCDS in OpenWhisk would mean to include the action Java code, and that might be tricky, as that can only be shared between containers with the same action code IIUC.
Same for Ahead-Of-Time compilation (AOT), new in Java 9, mentioned in the article as well, which has a costly pre-compilation step (that should include the application aka action code), not sure how that could be done within OW. It would be beneficial if an action needs to scale up, i.e. you are starting many new Java containers with a particular action and you want to get the fastest startup time. But maybe pre-warming makes this less useful. One would have to be able to run that action specific pre-compilation up front, and that might require to embed it in the docker image IIUC, which in turn would require building it dynamically from OW, which sounds complex.
The text was updated successfully, but these errors were encountered: