Skip to content

Phase 15: Default IOPS Estimates

Researched: 2026-02-21 Domain: Layout engine — IOPS estimation for RVTools imports


Problem Statement

RVTools .xlsx exports contain disk provisioning and in-use data but no performance metrics. When the layout engine processes an RVTools import, every VMCalculation starts with peak_iops=0. Without IOPS estimates, the datastore IOPS budget constraint (default: 100,000 IOPS/DS) is permanently inactive — every VM "fits" any datastore on the IOPS dimension, producing placements that ignore I/O contention entirely.

Pre-sales sizing must account for IOPS even when measured data is unavailable. The solution is to inject conservative, workload-based IOPS estimates before layout placement when CalculationSummary.has_performance_data is False.


IOPS Values by Workload

Workload Default IOPS Source Notes
Database/Microsoft SQL 500 Dell PowerStore VMware Best Practices (H18264) Steady-state OLTP, 8K random I/O
Database/Oracle 800 Dell PowerStore Oracle Best Practices OLTP including redo log I/O overhead
Database/SAP HANA(S4) 1,000 SAP HANA Hardware Directory sizing criteria In-memory but persistent log I/O
VDI/Full Clone / MCS (Citrix) 30 VMware Horizon 8 Reference Architecture Boot storm excluded; steady state only
VDI/Linked Clone / PVS (Citrix) 50 VMware Horizon sizing guide Higher due to replica disk writes
Virtual Machines (generic) 50 Dell conservative estimate No OS/workload signal available
File/General Purpose 100 Dell PowerStore file services best practices NFS/SMB mixed I/O profile
Unknown (Reducible) 50 Conservative fallback Applied when workload is unclassifiable

All values are peak IOPS estimates. See the "Why Peak IOPS" section below.


Why Peak IOPS, Not Average

The layout engine evaluates datastore IOPS budgets to decide how many VMs can share a single datastore. The binding constraint is peak load, not average.

If average IOPS were used, an OLTP SQL server that peaks at 2,000 IOPS could be placed alongside many other "average 500 IOPS" servers. All would appear within budget until the peak hit simultaneously — exactly the scenario pre-sales must protect against.

Pre-sales sizing rule: Use peak IOPS for capacity planning. Average IOPS is used only for reporting (throughput summaries, utilization metrics).

The layout engine estimates avg_iops = 0.70 × peak_iops. The 70% ratio reflects industry observation that busy systems sustain 60–75% of peak in steady operation. This ratio applies to reporting only; the IOPS budget constraint always uses peak_iops.


Conservative Bias

All IOPS estimates use the lower bound of published ranges:

  • Microsoft SQL: 500 IOPS (range: 500–1,500/core for moderate OLTP)
  • Oracle: 800 IOPS (range: 800–1,200 for moderate databases)
  • SAP HANA: 1,000 IOPS (minimum required by SAP certification criteria)
  • Generic VMs: 50 IOPS (covers mixed general-purpose workloads)

Pre-sales sizing must not under-provision. A customer who buys hardware sized for 800 IOPS/Oracle VM and finds the system saturated at 600 IOPS will lose trust in the pre-sales recommendation. The conservative choice is to err toward more datastores with lower VM density.


CSV Configurability

IOPS defaults are loaded from src/store_predict/data/IOPS.csv (semicolon-delimited), following the same pattern as samples/DRR.csv. Pre-sales engineers can adjust estimates without code changes:

Workload Category;IOPS Estimate
Database/Microsoft SQL;500
Database/Oracle;800
Database/SAP HANA(S4);1000
VDI/Full Clone / MCS (Citrix);30
VDI/Linked Clone / PVS (Citrix);50
Virtual Machines/VMware / Hyper-V / KVM - No Database, File nor Email;50
File/General Purpose;100
Unknown (Reducible)/Unknown (Reducible);50

Operator workflow: Edit src/store_predict/data/IOPS.csv and restart the application. The loader strips whitespace and skips invalid rows. If the file is missing, the hardcoded constants take effect — unit tests remain independent.

Key-matching requirement: Column one must exactly match the workload_category strings produced by the classification engine (format: Category/Subcategory). A mismatch silently falls back to the 50 IOPS constant. Operators can verify key alignment by inspecting the VM review page workload category labels.


Known Limitation: Linux vs. Windows IOPS

REQ-014 specifies separate IOPS estimates for Linux VMs (40 IOPS) and Windows VMs (50 IOPS). This split is not implemented.

The workload_category field — the only lookup key available at layout time — does not distinguish OS for generic VMs. Both Linux and Windows VMs that are unclassified as database/VDI/file share the single category:

Virtual Machines/VMware / Hyper-V / KVM - No Database, File nor Email

Splitting by OS would require a sub-classification pass on the os column from the canonical DataFrame, which would mean the layout engine must accept the raw DataFrame in addition to the CalculationSummary. This is a data model change that is out of scope for Phase 15.

Resolution: 50 IOPS for all generic VMs (the more conservative value, aligned with Windows). Documented in ADR-059 as a known limitation.


PowerStore IOPS Architecture Context

PowerStore NVMe arrays (T model) claim up to 7 million IOPS at the array level. Per-datastore IOPS is bounded by software QoS policies (optional) or by pool saturation. The layout engine's default iops_budget_per_ds = 100,000 is a conservative planning value that:

  • Leaves headroom for peak spikes above the default estimates
  • Aligns with Dell H18264 recommendations for mixed workload datastores
  • Allows approximately 200 generic VMs (50 IOPS each) per datastore before hitting the budget — consistent with the 25 VMs/DS VM count default

When a customer provides LiveOptics data with measured IOPS, the default injection is skipped (has_performance_data=True) and real values are used.


References

Source Description
Dell PowerStore VMware Best Practices (H18264) IOPS planning values for mixed workloads on PowerStore
Dell EMC PowerStore and Oracle RAC Best Practices Oracle OLTP IOPS sizing at 8K block size
Dell EMC PowerStore and SAP HANA Best Practices SAP HANA log I/O requirements and sizing guidance
VMware Horizon 8 Reference Architecture VDI IOPS benchmarks — steady state and boot storm values
SAP HANA Hardware Directory Minimum IOPS certification criteria for HANA-certified storage
Microsoft SQL Server Storage Guidance IOPS per core recommendations for OLTP workloads