Native-image in-memory cache for containerized ahead-of-time applications
A method includes identifying an ahead-of-time (AOT) native-image application to be compiled and during AOT compilation of the AOT native-image application; bypassing an operating system page cache corresponding to the AOT native-image application; and accessing, by a processing device, the native-image application from an in-memory cache shared using inter-process-communication.
1. A method, comprising:
identifying a containerized ahead-of-time (AOT) native-image application to be compiled; and
during AOT compilation of the containerized AOT native-image application:
bypassing an operating system page cache in kernel space, the operating system page cache corresponding to the containerized AOT native-image application; and
accessing, by a processing device, the containerized AOT native-image application from an in-memory cache in user space, the in-memory cache shared using inter-process-communication.
2. The method of claim 1 , wherein the containerized AOT native-image application is a containerized Java® application.
3. The method of claim 1 , wherein the containerized AOT native-image application is a Graal AOT native image.
4. The method of claim 3 , wherein the Graal AOT native image is to generate an immutable serialized heap snapshot file that is shared using copy-on-write memory mapping.
5. The method of claim 1 , further comprising determining that the containerized AOT native-image application is capable to produce an input/output (I/O) burst load exceeding a predetermined threshold.
6. The method of claim 1 , wherein the containerized AOT native-image application is indexed using an application identifier.
7. The method of claim 1 , further comprising:
saving physical memory corresponding to the containerized AOT native-image application across a plurality of containers; and
saving an initial I/O disk to a memory map corresponding to the containerized AOT native-image application.
8. The method of claim 1 , wherein the in-memory cache comprises a temporary file system-backed (tmpfs-backed) file-system.
9. A system, comprising:
an in-memory cache in user space, the in-memory cache to store containerized ahead-of-time (AOT) native-image application; and
a processing device operatively coupled to the in-memory cache, the processing device to:
identify the containerized AOT native-image application to be compiled; and
during AOT compilation of the containerized AOT native-image application:
bypass an operating system page cache in kernel space, the operating system page cache corresponding to the containerized AOT native-image application; and
access the containerized AOT native-image application from the in-memory cache shared using inter-process-communication.
10. The system of claim 9 , wherein the containerized AOT native-image application is a containerized Java® application.
11. The system of claim 9 , wherein the containerized AOT native-image application is a Graal AOT native image.
12. The system of claim 11 , wherein the Graal AOT native image is to generate an immutable serialized heap snapshot file that is shared using copy-on-write memory mapping.
13. The system of claim 9 , the processing device further to determine that the containerized AOT native-image application is capable to produce an input/output (I/O) burst load exceeding a predetermined threshold.
14. The system of claim 9 , wherein the containerized AOT native-image application is indexed using an application identifier.
15. The system of claim 9 , the processing device further to:
save physical memory corresponding to the containerized AOT native-image application across a plurality of containers; and
save an initial I/O disk to a memory map corresponding to the containerized AOT native-image application.
16. The system of claim 9 , wherein the in-memory cache comprises a temporary file system-backed (tmpfs-backed) file-system.
17. A non-transitory computer-readable storage medium including instructions that, when executed by a processing device, cause the processing device to:
identify a containerized ahead-of-time AOT native-image application to be compiled; and
during AOT compilation of the containerized AOT native-image application:
bypass an operating system page cache in kernel space, the operating system page cache corresponding to the containerized AOT native-image application; and
access, by the processing device, the containerized AOT native-image application from an in-memory cache in user space, the in-memory cache shared using inter-process-communication.
18. The non-transitory computer-readable storage medium of claim 17 , wherein the containerized AOT native-image application is a containerized Java® application.
19. The non-transitory computer-readable storage medium of claim 17 , wherein the containerized AOT native-image application is a Graal AOT native image.
20. The non-transitory computer-readable storage medium of claim 19 , wherein the Graal AOT native image is to generate an immutable serialized heap snapshot file that is shared using copy-on-write memory mapping.