Semeru Cloud Compiler

The Semeru Cloud Compiler provides just-in-time code compiling as a process independent of the application virtual machine. The benefits of this decoupling include CPU and memory utilization optimization in the application VM and improved resiliency.

CPU utilization improves because just-in-time compilation does not take CPU cycles away from the application. Memory utilization improves because the application VM does not need unnecessarily high memory allocations to prevent out-of-memory errors that can occur during just-in-time code compilation. If a failure occurs in the Semeru Cloud Compiler process, the application's VM can still handle the compilation request.

The Semeru Cloud Compiler is available as part of the OpenJ9 Java virtual machine. For more information, see https://www.ibm.com/docs/en/semeru-runtime-ce-z/11?topic=documentation-jitserver-technology.

Integration with WebSphere Liberty operator

You can configure a containerized application to use the Semeru Cloud Compiler using the WebSphereLibertyApplication custom resource.
  • Semeru Cloud Compiler is not enabled by default. To enable Semeru Cloud Compiler, set .spec.semeruCloudCompiler.enable field to true in the WebSphereLibertyApplication custom resource.
  • The version of the Semeru Cloud Compiler must match the version of the client in the application. To satisfy this requirement, the WebSphere Liberty operator uses the application image to create an instance of Semeru Cloud Compiler.
  • An instance of Semeru Cloud Compiler is configured for each application deployed using WebSphereLibertyApplication custom resource. Multiple instances (replicas) of the same application can share the same Semeru Cloud Compiler instance.
  • The application is not deployed until the Semeru Cloud Compiler is ready to handle compilation requests.
  • Configure the number of instances of Semeru Cloud Compiler using the .spec.semeruCloudCompiler.replicas field in the WebSphereLibertyApplication custom resource. The default value is 1.
  • Set CPU and memory resource requests and limits for each instance of Semeru Cloud Compiler using the .spec.semeruCloudCompiler.resources field in the WebSphereLibertyApplication custom resource.
  • During the application upgrade scenario (that is, when the .spec.applicationImage value is changed), the previous Semeru Cloud Compiler instance continues to exist until all instances (replicas) of the application are upgraded to the new application image. This continuity ensures that a compatible Semeru Cloud Compiler handles any compilation requests from the previous application instances. During this upgrade scenario, the cluster must have enough CPU and memory to handle the deployment of two sets of Semeru Cloud Compiler.
  • The communication between the Semeru Cloud Compiler (server) and the application (client) are encrypted. WebSphere Liberty operator generates a certificate for Semeru Cloud Compiler.