3.2. Sizing for Throughput


Home » Documentation » Planning Guide

3.2. Sizing for Throughput

The minimum hardware requirements for running a VoltDB database server is a 64-bit machine with two or more processor cores. The more cores the server has, the more VoltDB partitions can potentially run on that server. The more unique partitions, the more throughput is possible with a well partitioned workload.

However, the number of processor cores is not the only constraint on throughput. Different aspects of the server configuration impact different characteristics of the database process.

For example, although the more physical cores a server has increases the number of partitions that server can potentially handle, at some point the number of transactions being received and data being returned exceeds the capacity of the network port for that server. As a consequence, going beyond 12-16 cores on a single machine may provide little value to a VoltDB database, since the server's network adapter becomes the gating factor.

Rule of Thumb

VoltDB runs best on servers with between 4 and 16 cores.

It should be noted that the preceding discussion refers to physical processor cores. Some servers support hyperthreading. Hyperthreading is essentially the virtualization of processor cores, doubling the reported number of cores. For example, a system with 4 cores and hyperthreading acts like an 8 core machine. These virtualized cores can improve VoltDB performance, particularly for servers with a small (2 or 4) number of physical cores. However, the more physical cores the system has, the less improvement is seen in VoltDB performance. Therefore, hyperthreading is not recommended for VoltDB servers with more than 8 physical cores.

The alternative to adding processors to an individual server for improving throughput is to add more servers. If a single 4-core server can handle 3 partitions, two such servers can handle 6 partitions, three can handle 9, etc. This is how VoltDB provides essentially linear scaling in throughput.

But again, there are limits. For peak performance it is key that network latency and disruption between the cluster nodes be kept to a minimum. In other words, all nodes of the cluster should be on the same network switch. Obviously, the capacity of the network switch constrains the number of nodes that it can support. (A 32 port switch is not uncommon.)

Rule of Thumb

Best performance is achieved with clusters of 2-32 servers connected to the same network switch.

It is possible to run a VoltDB cluster across switches. (For example, this is almost always the case in cloud environments.) However, latency between the cluster nodes will have a negative impact on performance and may ultimately limit overall throughput. In these situations, it is best to benchmark different configurations to determine exactly what performance can be expected.

Finally, it should be noted that the speed of the processor cores may not have a significant impact on overall throughput. Processor speed affects the time it takes to execute individual transactions, which may be only a small percentage of overall throughput. For workloads with very compute-intensive transactions, faster processors can improve overall performance. But for many small or simple transactions, improved processor speed will have little or no impact.