Establish the symptom and baseline
Define what is slow, when it started, which hosts and LUNs are affected, and what normal latency and throughput looked like. Performance troubleshooting without a baseline easily turns into guesswork.
Check host-side demand and queueing
Review workload changes, device latency, queue depth behavior, path states, and multipathing. A host can create or amplify storage latency even when the array is healthy.
Inspect the fabric for errors and congestion
Review relevant switch ports for physical errors, link resets, credit-related symptoms, utilization, and topology changes. Compare both fabrics because redundant paths can hide a degraded side.
Check array ports, volumes, and backend resources
Correlate front-end port utilization and latency with volume, pool, controller, and backend metrics. Determine whether the bottleneck is localized to a workload or shared across the system.
Correlate, then change
Use a common timestamp and compare host, switch, and array evidence. Make changes only after the data points to a layer; otherwise a tuning change can mask the original problem or move it elsewhere.
This article is a general troubleshooting framework. Validate commands and procedures against your platform version, vendor documentation, support requirements, and change-control process before making production changes.