Appendix: Cluster sizes
Default Cluster Sizes
For self-managed Materialize, the cluster sizes are configured with the following default resource allocations:
Size | Scale | CPU Limit | Disk Limit | Memory Limit |
---|---|---|---|---|
25cc |
1 |
0.5 |
7762MiB |
3881MiB |
50cc |
1 |
1 |
15525MiB |
7762MiB |
100cc |
1 |
2 |
31050MiB |
15525MiB |
200cc |
1 |
4 |
62100MiB |
31050MiB |
300cc |
1 |
6 |
93150MiB |
46575MiB |
400cc |
1 |
8 |
124201MiB |
62100MiB |
600cc |
1 |
12 |
186301MiB |
93150MiB |
800cc |
1 |
16 |
248402MiB |
124201MiB |
1200cc |
1 |
24 |
372603MiB |
186301MiB |
1600cc |
1 |
31 |
481280MiB |
240640MiB |
3200cc |
1 |
62 |
962560MiB |
481280MiB |
6400cc |
2 |
62 |
962560MiB |
481280MiB |
Custom Cluster Sizes
When installing the Materialize Helm chart, you can override the default
cluster sizes and resource allocations. These
cluster sizes are used for both internal clusters, such as the system_cluster
,
as well as user clusters.
💡 Tip: In general, you should not have to override the defaults. At minimum, we
recommend that you keep the 25-200cc cluster sizes.
operator:
clusters:
sizes:
<size>:
workers: <int>
scale: 1 # Generally, should be set to 1.
cpu_exclusive: <bool>
cpu_limit: <float> # e.g., 6
credits_per_hour: "0.0" # N/A for self-managed.
disk_limit: <string> # e.g., "93150MiB"
memory_limit: <string> # e.g., "46575MiB"
Field | Type | Description | Recommendation |
---|---|---|---|
workers | int | The number of timely workers in your cluster replica. | Use 1 worker per CPU core, with a minimum of 1 worker. |
scale | int | The number of pods (i.e., processes) to use in a cluster replica; used to scale out replicas horizontally. Each pod will be provisioned using the settings defined in the size definition. | Generally, this should be set to 1. This should only be greater than 1 when a replica needs to take on limits that are greater than the maximum limits permitted on a single node. |
cpu_exclusive | bool | The flag that determines if the workers should attempt to pin to a particular CPU core. |
Set to true if and only if the |
cpu_limit | float | The k8s limit for CPU for a replica pod in cores. |
Prefer whole number values to enable CPU affinity. Kubernetes only allows CPU Affinity for pods taking a whole number of cores. If the value is not a whole number, set |
memory_limit | float | The k8s limit for memory for a replica pod in bytes. |
|
disk_limit | float | The size of the NVMe persistent volume to provision for a replica pod in bytes. | When spill-to-disk is enabled, use a 1:2 memory-to-disk ratio. Materialize spills data to disk when memory is insufficient, which can impact performance. |
credits_per_hour | string | This is a cloud attribute that should be set to “0.00” in self-managed. | Set to “0.00” for self-managed deployments. |
NOTE: If you have modified the default cluster size configurations, you can query the
mz_cluster_replica_sizes
system catalog table for the specific resource allocations.