Cache Operations ================ Monitoring ---------- In addition to monitoring general system resources, Nucleus Cache will expose usage metrics to Prometheus. Cache Chaining -------------- Nucleus Caches can be chained together to provide optimal performance for Omniverse users. When designing your Cache infrastructure, refer to the :doc:`Designing your Caching Infrastructure ` Guide. To configure Cache Chaining, edit the :code:`nucleus-cache.env` file and locate the :code:`UPSTREAM_CACHE=` configuration option. Specify the IP Address or hostname of the upstream cache that this Nucleus Cache should use. If the Cache is active during this change, stop the Cache and restart. Cache Pre-Warming ----------------- As of Cache version 2022.1.0, Nucleus Cache supports pre-warming, which proactively pre-caches content that an administrator knows will be in high demand, providing faster file access to Omniverse users. To configure Cache pre-warming, first create an account within the Nucleus server that this Cache serves, then edit the :code:`nucleus-cache.env` file and locate the :code:`PREHEAT_CONFIG=` configuration option. Within this area, uncomment and configure the following options: :: #PREHEAT_CONFIG = " #- name: server-one # A unique name for this config entry # url: my-nucleus-1.my-company.com # IP or hostname of the Nucleus server # user: username # Login for server above # password: password # Password for server above # paths: # List of paths to keep warm # - /some/path/1 # - /some/path/2 # interval: 3600 # How often (in seconds) to re-warm those paths #" .. important:: For paths specified above- these are Nucleus file paths, not local file systems paths within your Nucleus server. For example, if you have a folder named ``OmniverseProject1`` within your ``Projects`` folder within Nucleus, the path to specify in the pre-warm configuration would be: :code:`/Projects/OmniverseProject1`. (Please note that paths are case-sensitive.) If paths within secondary or multiple Nucleus servers need to pre-warmed by this Cache, the configuration below can be used: :: #PREHEAT_CONFIG = " #- name: server-one # A unique name for this config entry # url: my-nucleus-1.my-company.com # IP or hostname of the Nucleus server # user: username # Login for server above # password: password # Password for server above # paths: # List of paths to keep warm # - /some/path/1 # - /some/path/2 # interval: 3600 # How often (in seconds) to re-warm those paths #- name: server-two # A unique name for this config entry # url: my-nucleus-2.my-company.com # IP or hostname of the Nucleus server # user: username # Login for server above # password: password # Password for server above # paths: # List of paths to keep warm # - /some/path/1 # - /some/path/2 # interval: 3600 # How often (in seconds) to re-warm those paths #" Cache Cleanup/Rotation ---------------------- Nucleus Cache is configured to automatically clean up/rotate once a disk size threshold is reached. There are two parameters within the :code:`nucleus-cache.env` file that control this behavior. * :code:`MAX_CACHE_SIZE_GIGS_PER_UPSTREAM=500` - Once the cache meets this threshold, the cleanup process will start. As the process is asynchronous, the actual total possible max footprint of this Cache may be slightly larger than the amount configured. * :code:`MIN_CACHE_SIZE_GIGS_PER_UPSTREAM=250` - This is the amount of space left occupied by the cache after cleanup. .. important:: The sizes configured above are per upstream Nucleus Server. For example, if this Cache will be used by users accessing two Nucleus instances, the total usage can be double the configured value.