Appendix: Azure deployment guidelines
Recommended instance types
As a general guideline, we recommend:
-
Processor Type: ARM-based CPU
-
Sizing: 2:1 disk-to-RAM ratio with spill-to-disk enabled.
Recommended Azure VM Types with Local NVMe Disks
When operating on Azure in production, we recommend Epdsv6 sizes Azure VM Types with Local NVMe Disk:
| VM Size | vCPUs | Memory | Ephemeral Disk | Disk-to-RAM Ratio |
|---|---|---|---|---|
| Standard_E2pds_v6 | 2 | 16 GiB | 75 GiB | ~4.7:1 |
| Standard_E4pds_v6 | 4 | 32 GiB | 150 GiB | ~4.7:1 |
| Standard_E8pds_v6 | 8 | 64 GiB | 300 GiB | ~4.7:1 |
| Standard_E16pds_v6 | 16 | 128 GiB | 600 GiB | ~4.7:1 |
| Standard_E32pds_v6 | 32 | 256 GiB | 1,200 GiB | ~4.7:1 |
See also Locally attached NVMe storage.
Locally-attached NVMe storage
For optimal performance, Materialize requires fast, locally-attached NVMe storage. Having a locally-attached storage allows Materialize to spill to disk when operating on datasets larger than main memory as well as allows for a more graceful degradation rather than OOMing. Network-attached storage (like EBS volumes) can significantly degrade performance and is not supported.
Swap support
Starting in v0.6.1 of Materialize on Azure Terraform, disk support (using swap on NVMe instance storage) may be enabled for Materialize. With this change, the Terraform:
- Creates a node group for Materialize.
- Configures NVMe instance store volumes as swap using a daemonset.
- Enables swap at the Kubelet.
For swap support, the following configuration option is available:
See Upgrade Notes.
Recommended Azure Blob Storage
Materialize writes block blobs on Azure. As a general guideline, we recommend Premium block blob storage accounts.
CPU affinity
It is strongly recommended to enable the Kubernetes static CPU management policy.
This ensures that each worker thread of Materialize is given exclusively access to a vCPU. Our benchmarks have shown this
to substantially improve the performance of compute-bound workloads.
TLS
When running with TLS in production, run with certificates from an official Certificate Authority (CA) rather than self-signed certificates.