Custom Scale Profiles

Extend or override base scale profiles for specific services or pools

Overview

Custom scale profiles extend or override the predefined service profiles, and give precise control over
replicas and resources for one service or pool without affecting the entire cluster.

When to use a custom profile

  • Isolate changes. Adjust resources for one pool or container without affecting others.
  • Resolve resource issues. Increase memory or CPU for a specific service generation that's hitting limits.
  • Preserve baselines. Keep default profiles intact while testing different values.

Custom profiles sit between cluster-wide scale profiles and direct component overrides. Use them when you need
finer control than scale profiles, but don't want to manage every replica and resource individually.

How custom profiles work

Base profiles like prod, dev, or I define default resources for each service.
A custom profile is a named set of overrides. Any values not specified are inherited from the base profile.

This mechanism ensures:

  • Only the targeted service or container changes.
  • Other services continue using the base profile settings.

Create a custom profile

Define a new profile in the scale.profile section of hydrolixcluster.yaml.
This example increases memory for the merge-indexer container:

scale:
  profile:
    merge-indexer-2:
      merge-indexer:
        memory: 8Gi
  • Name: Choose any profile name. In this example, merge-indexer-2.
  • Inheritance: All values not listed are inherited from the base profile.

Apply the profile to a pool

Attach the custom profile to a pool by setting scale_profile in the pool definition:

pools:
  - name: merge-peer-ii
    scale_profile: merge-indexer-2
    service: merge-peer

When you apply this configuration, the pool restarts with pods that use the new resources.
Only the merge-peer-ii pool is affected.

Override a scale profile

You can override the settings from a base profile by specifying new values in the scale: section of your configuration.
This example increases both replicas and memory for the batch-peer service, even though the cluster uses the prod scale profile:

spec:
  scale_profile: prod
  scale:
    batch-peer:
      memory: 5Gi
      replicas: 5

Apply the configuration:

kubectl apply -f hydrolixcluster.yaml

The override applies only to batch-peer. All other services continue using the prod profile settings.

Change built-in defaults

Some components include predefined profiles named I, II, and III.
Override them directly in scale.profile when you want every place that references a built-in profile to inherit the change:

scale:
  profile:
    III:
      merge-indexer:
        memory: 15Gi

This applies the update to all services or pools that use III.