Visit Azul.com Support

Configuring Blob Storage Auto Cleanup

Optimizer Hub uses your cloud provider’s blob storage as the main persistence mechanism. Artifacts persisted to blob storage are:

  • ReadyNow Orchestrator: saved profile logs.

  • Code Cache: previously performed compilations.

Optimizer Hub includes auto cleaner mechanisms to clean up unused data. Cleanup for ReadyNow profile logs and Code Cache entries are configured separately.

Code Cache Cleanup

You specify the target size for the blob storage that Optimizer Hub should not exceed, as well as how often Optimizer Hub should check if cleaning is necessary.

The following are the default values, which you can modify in your values-override.yaml file:

 
codeCache: cleaner: enabled: true targetSize: "107374182400" # 100GiB, use quotes for large numbers interval: PT2H # 2 hours

How Code Cache Storage Gets Cleaned

At a regular interval, the Code Cache cleaner checks whether the current usage is bigger than targetSize. If so, the cleanup process is triggered. This process deletes the Code Cache items that are least recently used to get below the targetSize.

Check Used Code Cache Storage Size

You can check the used storage size in the Grafana dashboard in the "Details: cache” section.

ReadyNow Profile Log Cleanup

ReadyNow Orchestrator performs automatic cleanup of unused profile logs in order to fit collected data in the configured storage. When the data size in your storage exceeds a threshold, ReadyNow Orchestrator deletes old profile logs, thus guaranteeing that a promoted profile log is available for all profile names.

The following are the default values, which you can modify in your values-override.yaml file:

 
readyNowOrchestrator: cleaner: enabled: true externalPersistentStorageSoftLimit: "10Gi" targetSize: 0 # use only to override auto-settings warningSize: 0 # use only to override auto-settings keepUnrequestedProfileNamesFor: 0 keepDebugOnlyGenerationProfilesFor: "P7D"

You can configure ReadyNow Orchestrator to delete unused profile names completely after a given duration using the keepUnrequestedProfileNamesFor property in your values-override.yaml. For example, to keep unused profiles for 5 days, use the following:

 
readyNowOrchestrator.cleaner.keepUnrequestedProfileNamesFor=P5D
Note
Depending on your usage, ReadyNow Orchestrator’s clean-up mechanism may not be able to keep the actual size of your stored profiles below the size of your storage when not enough profiles can be cleaned up. When you reach 90% usage, a warning is printed in the log of the gateway service. In that case, you need to increase the externalPersistentStorageSoftLimit.

If your storage fills up completely, JVMs attempting to write to ReadyNow Orchestrator receive an error.

How ReadyNow Storage Gets Cleaned

By default, the ReadyNow profile log auto cleaner follows these steps:

  • For each profileName: deletes all the profiles that are not promoted at this time. The cleaner keeps the five last-used profileLogs. It only deletes enough profileLogs to get under targetSize.

    • The currently promoted profiles will never be deleted.

  • Deletes all debug only profileLogs, meaning profileLogs with a generation higher than readyNowOrchestrator.producers.maxPromotableGeneration, if they have not been accessed longer than the period defined in keepDebugOnlyGenerationProfilesFor.

    • Can delete all of these debug profileLogs, but only deletes enough to get under targetSize.

  • Deletes any completely unrequested profileNames.

    • Will delete all of them, regardless of targetSize.