{{ summaryTitle }}
{{ summaryValue }}

{{ summaryLine }}

Per-VM link {{ resultsReady ? formatMbps(computation.values.usable_bandwidth_mbps) : '—' }} Downtime {{ resultsReady ? formatDuration(computation.values.downtime_seconds) : '—' }} Window {{ windowFitLabel }}
VM migration planning inputs
Choose the transfer path used by the hypervisor or storage platform.
Changing the unit preserves the same physical memory amount.
Use the payload still outstanding at the start of the change window.
Enter measured or reserved bandwidth, not interface line rate.
Mbps
Use hypervisor counters, migration logs, or a conservative workload estimate.
Mbps
Use the hypervisor policy limit when known; 8 is a practical planning default.
rounds
Set 0 when no maintenance-window limit applies.
h
Set 0 when the downtime objective is unknown.
s
The neutral default is 1.0; 1.2 sends about 83% of logical bytes.
The neutral default is 0 minutes.
min
Added to the final stopped-copy time; neutral default is 0 seconds.
s
The neutral default is 0 Mbps; churn at or above the effective link cannot catch up.
Mbps
The neutral default is 1 VM with the full reservation.
VMs
The neutral default is 0 MiB; the downtime target still provides a stopping budget.
MiB
The neutral default is 0%; add a reserve for production scheduling uncertainty.
%
PhaseDurationElapsedPlanning signalCopy
{{ row.phase }}{{ row.duration }}{{ row.elapsed }}{{ row.signal }}
{{ timelineExportStatus }}

Preparing the dirty-round chart…

{{ chartExportStatus }}

The chart renderer is unavailable. The downtime estimate remains in the summary and planning checks.

CheckStatusEvidenceActionCopy
{{ row.check }}{{ row.status }}{{ row.evidence }}{{ row.action }}
{{ checksExportStatus }}

A migration window has two clocks. The first measures the whole change, including preparation, bulk transfer, catch-up rounds, cutover, and a scheduling reserve. The second measures downtime, when a running VM is paused so its last dirty memory and device state can move. A plan can fit the maintenance window and still miss the application's pause target.

The transfer path determines which data matters. Shared storage removes the bulk virtual-disk copy from a live host move. Shared-nothing migration sends both memory and disk data, while a storage-only move omits live-memory pre-copy. Provisioned disk size is useful only when that amount will actually cross the path; changed-block or thin-provisioned payloads may be much smaller.

VM migration paths and the data they move
Migration pathMemory copyDisk copyMain planning risk
Shared-nothing liveYesYesDisk duration and dirty-memory convergence
Live with shared storageYesNoDirty-memory convergence and cutover pause
Storage-only moveNoYesDisk payload, write churn, and sustained throughput

Usable bandwidth means the sustained share available to one VM, not the interface label. Concurrent migrations divide that share. Compression reduces transferred bytes, but disk writes and memory dirtying create new work while the copy is running. If disk churn reaches the effective transfer rate, the disk copy cannot catch up; if memory dirties too quickly, pre-copy may reach its round limit with a large final pause.

Time is only one part of migration readiness. CPU compatibility, storage access, passthrough devices, snapshots, application quiescing, network reachability, platform throttles, and rollback steps still need separate checks.

How to Use This Tool:

Choose the actual transfer path first, then use measured payloads and reserved throughput for the change window.

  1. Select Migration type. Enter the VM memory and disk data that the chosen path will move, using GB or TB for decimal sizes and GiB or TiB for binary sizes.
  2. Enter Usable migration bandwidth and Memory dirty rate. Use hypervisor counters or migration logs rather than port speed; the bandwidth is divided by Parallel migrations sharing link.
  3. Set the migration window and downtime target. Open Advanced for compression, setup time, cutover overhead, disk churn, pre-copy rounds, dirty-set stop threshold, and schedule buffer.
  4. Review Planning checks alongside the timeline and convergence path. If disk churn is at or above the effective link, lower write activity or reserve more bandwidth before trying the plan again.

Interpreting Results:

Total time is the buffered elapsed estimate. Downtime is only the final stopped-memory copy plus cutover overhead. A target of zero means that no window or downtime limit is being tested; it does not mean the migration takes zero time.

  • A shrinking dirty set across rounds shows that pre-copy is catching up. Round limit reached means the estimate proceeds with the last modeled dirty set even though the stop budget was not reached.
  • Fits window uses total buffered time at or below the entered window. Fits downtime uses modeled downtime at or below the entered pause target.
  • A favorable estimate should be checked against a representative test migration. Storage latency, contention, throttling, and workload bursts can reduce sustained throughput after the plan is made.

Technical Details:

All data sizes are converted to bytes. GB and TB use powers of 1000; GiB and TiB use powers of 1024. A network rate in megabits per second becomes bytes per second by multiplying by 1,000,000 and dividing by 8.

Formula Core:

Let B be the entered usable bytes per second, P the number of parallel migrations, and C the logical-to-transferred compression ratio. The per-VM link share is B/P.

Bvm=BP Tdisk=D/CBvm-(Wdisk/C) Ti=Mi/CBvm Mi+1=min(Mvm,Wmem×Ti) Tdown=Mfinal/CBvm+Tcutover Ttotal=(Tsetup+Tdisk+inTi+Tdown)×(1+S)

Here D is disk bytes, Mvm is VM memory, Wdisk and Wmem are disk and memory change rates in bytes per second, and S is the schedule buffer as a fraction. Disk copy is valid only when its denominator is greater than zero. Compression is applied to transferred bytes and to disk churn before the net disk rate is found.

Rule Core:

Memory pre-copy begins with the full memory image. Each round's duration determines how much memory becomes dirty for the next round, capped at the original VM memory. The loop stops when the next dirty set is small enough or the selected round limit is reached.

Mstop= max(Mthreshold, max(0,Ttarget-Tcutover) ×Bvm×C)

A round converges when the next dirty set is less than or equal to this stop budget. The explicit dirty-set threshold and the remaining downtime copy budget are alternatives; the larger one controls the stop. Storage-only mode skips this loop, and shared-storage live mode skips disk copy.

Model values retain full floating-point precision. Duration formatting and chart labels round only for display. Window and downtime checks use the unrounded values with inclusive less-than-or-equal comparisons.

Accuracy Notes:

The estimate assumes steady bandwidth, a constant compression ratio, even bandwidth sharing, and constant dirty or write rates during each modeled phase. Real migrations often vary by phase and may be throttled by storage, CPU, encryption, or the hypervisor.

  • Measure migration throughput and dirty rate on a representative VM during a comparable busy period.
  • Use the data that will actually transfer, not provisioned capacity unless a full copy is required.
  • Add setup and schedule reserves for checks, orchestration, validation, and rollback time that arithmetic cannot predict.

Worked Examples:

Shared-nothing migration with a shrinking dirty set

A 64 GiB VM with 250 GiB of disk data, 5,000 Mbps of usable bandwidth, and a 400 Mbps dirty rate takes about 429.50 seconds for disk copy. Its first memory pre-copy round takes about 109.95 seconds and leaves roughly 5.12 GiB dirty. That fits the 45-second downtime budget, so the modeled final copy takes about 8.80 seconds. With no setup or schedule buffer, total time is about 548.24 seconds and both the one-hour window and 45-second downtime target pass.

References: