VMFleet Workload Profiles¶
This guide covers the predefined workload profiles for VMFleet testing and how to execute them.
Built-in Profiles¶
| Profile | Description |
|---|---|
| General | Balanced 70/30 read/write, 70% random, 8K blocks — general purpose validation |
| Peak IOPS | 100% random 4K reads — maximum IOPS measurement |
| VDI | Mixed small block I/O simulating Virtual Desktop Infrastructure patterns |
| SQL OLTP | 8K random read/write mix simulating SQL Server OLTP workloads |
| Sequential Throughput | 100% sequential 512K writes for maximum MB/s measurement |
Running Tests¶
Single Profile¶
.\src\solutions\vmfleet\scripts\Start-VMFleetTest.ps1 `
-ProfilePath "config/profiles/vmfleet/general.yml" `
-DurationSeconds 300
Profile Sweep¶
.\src\solutions\vmfleet\Invoke-VMFleetPipeline.ps1 `
-ClusterConfigPath "config/clusters/my-cluster.yml" `
-ProfilePaths @(
"config/profiles/vmfleet/general.yml",
"config/profiles/vmfleet/peak-iops.yml",
"config/profiles/vmfleet/sql-oltp.yml",
"config/profiles/vmfleet/vdi.yml",
"config/profiles/vmfleet/sequential-throughput.yml"
)
Profile Configuration¶
Profiles are defined in config/profiles/vmfleet/:
# config/profiles/vmfleet/general.yml
profile:
name: "General"
description: "Balanced read/write workload for general validation"
parameters:
block_size: "8k"
write_ratio: 30
random_ratio: 70
outstanding_io: 8
threads_per_vm: 2
duration_seconds: 300
warmup_seconds: 60
Profile Parameters¶
| Parameter | Description | Example |
|---|---|---|
block_size |
I/O block size | 4k, 8k, 64k |
write_ratio |
Percentage of I/O that is writes (0–100) | 30 for 70/30 read/write |
random_ratio |
Percentage of I/O that is random (0–100) | 70 for mostly random |
outstanding_io |
I/O queue depth per thread | 8 |
threads_per_vm |
DiskSpd threads per fleet VM | 2 |
duration_seconds |
Test duration (excluding warmup) | 300 |
warmup_seconds |
Warmup before measurement starts | 60 |
DiskSpd Parameter Mapping¶
| Profile key | DiskSpd switch | Meaning |
|---|---|---|
block_size |
-b |
I/O block size |
write_ratio |
-w |
Write ratio percentage |
random_ratio |
-r |
Random I/O ratio percentage |
outstanding_io |
-o |
Queue depth per thread |
threads_per_vm |
-t |
Threads per VM |
duration_seconds |
-d |
Measurement duration |
warmup_seconds |
-W |
Warmup duration |
Expected Thresholds¶
| Profile | Primary metric focus | Typical pass criteria |
|---|---|---|
| General | Balanced IOPS + latency | Stable mixed IOPS and latency under target |
| Peak IOPS | Max read IOPS | Highest sustained random read IOPS |
| SQL OLTP | Read/write DB pattern | Low latency under mixed random load |
| VDI | Light mixed desktop load | Predictable latency across many VMs |
| Sequential Throughput | MB/s | Highest sustained throughput |
Profile Selection Guide¶
- Use
peak-iops.ymlfor storage ceiling discovery. - Use
sql-oltp.ymlfor database-aligned validation. - Use
vdi.ymlfor desktop density readiness checks. - Use
sequential-throughput.ymlfor bulk transfer throughput checks. - Use
general.ymlfor a balanced baseline run.
Collecting Results¶
After tests complete, parse DiskSpd XML output and aggregate metrics:
Next Steps¶
- Monitoring — Metric collection during tests
- Reporting — Generate reports from results