Skip to main content

System Requirements and Recommendations

The following are some requirements and recommendations you should follow when provisioning and setting up your hosts to optimize the performance of your cluster.

Note

Some sections in this document contain an associated "Toolbox checkers" section. As these “accordions” contain additional, detailed information about the checks that Toolbox performs prior to deploying SingleStoreDB, it is recommended that you expand and review each of these sections.

Cloud Deployment Recommendations

For cloud deployments, all instances should be geographically deployed in a single region.

Here are some recommendations to help optimize for performance:

  • Cross-AZ / Multi-AZ failover is not recommended. Please see the Recommended Configurations to Tolerate Failure of a Cloud AZ or Nearby Data Center.

  • Network throughput - look for guaranteed throughput instead of bursting "up to" amount. For example, favor "10 Gbps" over "Up to 10 Gbps".

  • For memory-intensive workloads, consider the memory optimized SKUs, typically with a ratio of 8 GB of memory per vCPU.

  • Optimize for NUMA (Non-Uniform Memory Access). Queries across NUMA nodes can be expensive. Optimize for CPU types with a single NUMA node for VM type. Typically, more recent Intel versions are more optimized for NUMA compared to AMD, which has smaller NUMA node sizes.

  • For storage, cloud providers should use SSD disks at a minimum. Provisioned SSD with higher IOPS throughput if storage performance is an issue with SSD, though there is a cost trade-off.

  • Each leaf node should map to a separate SSD disk. Parallel I/O is important due to limitations in disk I/O.

  • Use a Network Load Balancer (NLB) for TCP (Layer 4) connectivity. Do not use the classic load balancer option in AWS.

Here are some platform-specific recommendations:

Platform

Compute

Storage

AWS

Memory Optimized: r5.4xLarge

i.e. r5.4xLarge: 16 vCPU and 128 GB of RAM

EBS volumes with SSD: gp2

For higher throughput and cost, use provisioned IOPS: io2

Azure

Memory Optimized SKU: eds_v5

i.e. Standard_E16ds_v5: 16 vCPU and 128 GB of RAM

Managed Disks: LRS only

Premium SSD: Ultra SSD for more performance/cost

GCP

General Purpose SKU with an 8:1 ratio: N2 series

i.e. n2-highmem-16: 16 CPU and 128 GB of RAM

SSD storage type: pd-ssd

pd-extreme is a more expensive option for higher throughput provisioned storage

Self-Managed Columnstore Performance Recommendations

SingleStore supports the ext4 and xfs filesystems. Many improvements have been made recently in Linux for NVMe devices, so we recommend using a 3.0+ series kernel. For example, CentOS 7.2 uses the 3.10 kernel.

If you use NVMe drives, set the following parameters in Linux (make it permanent in /etc/rc.local):

# Set ${DEVICE_NUMBER} for each device
echo 0 > /sys/block/nvme${DEVICE_NUMBER}n1/queue/add_random
echo 1 > /sys/block/nvme${DEVICE_NUMBER}n1/queue/rq_affinity
echo none > /sys/block/nvme${DEVICE_NUMBER}n1/queue/scheduler
echo 1023 > /sys/block/nvme${DEVICE_NUMBER}n1/queue/nr_requests