In this article, I will explain briefly on performance benchmarking considerations, factors affecting performance, and some of the best practices. We do performance benchmarking to understand the capabilities and bottlenecks of a system. When I say system it could be a storage system, CPU, GPU, network switch, etc. Now let's consider a VMware vSAN cluster infrastructure. It includes multiple components and each of these contributes to the performance. In this case, the vSAN cluster is the solution under test. We will have to conduct performance benchmarking to understand the storage performance behavior of the cluster. When I say storage behavior it includes the IOPS, latency, and throughput that the cluster can produce under varying loads.
The goal of benchmarking
- Identify bottlenecks
- Hardware bottleneck
- Software bottleneck
- Application bottleneck
- Compare tradeoffs
- Manage expectations
- Make decisions
Usually in a real-world scenario, benchmarking will be done once the cluster is deployed/ ready and before starting to host production workload on top of it. As these benchmark values define the performance maximums it will be helpful to decide on when to scale or upgrade the cluster before it hits a bottleneck.
Fundamental factors of vSAN performance
Server hardware
- Compatibility as per vSAN HCL
- Number of hosts in the cluster
- Power settings
- CPU - number of cores and frequency
Storage
- Hybrid or All-flash
- NVMe, SAS, or SATA
- Number of disk groups per host
- Storage controller configuration
- Compatibility of hardware devices as per vSAN HCL
Network
- 10/ 25/ 40 GbE
- MTU
- LAG
SPBM policy
- FTT (Failures To Tolerate)
- FTM (Mirroring/ Erasure coding)
- Thin or Thick provision
Security
- Encryption
- Checksum
Other
- Stripe width
- Flash read cache reservation
- IOPS limit for object
All of the above factors will affect performance. So you should know the benefits and tradeoffs.
Benchmarking methodology
Image credit: VMware |
Storage benchmarking tools
IO load generation tools
Application-specific tools
- HammerDB (MSSQL, Oracle)
- Jetstress (MS Exchange)
- SLOB (Oracle)
- DBGen (MSSQL, Oracle)
Best practices
- Understand the production performance metrics.
- Test what you plan to deploy.
- Workload modeling.
- Plan for use case testing.
- Choose an appropriate size for benchmarking
- Choose the right tool.
- Pre-allocate blocks while testing.
- Test for a longer time duration.
- Deploy multiple VMs with multiple VMDKs.
References