It is important to understand if the performance problem is due to the latency or the bandwidth. These two are very different phenomena but they may have similar looking outcomes.
In case of latency a transaction or an IO is taking a long time to complete. The question would be: is the time taken to complete the transaction reasonable or is it longer than what is desired. In many cases, the latency is unavoidable but one can use several techniques such as filling the pipeline or sending the IO in blocks. And storing in the buffer to hide the delay due to latency.
Bandwidth on the other hand, sometimes the performance is low because either the bandwidth is not utilized fully or it is inadequate. Even in this case one would observe low performance. To improve the performance which is limited by bandwidth, one has to understand and match the bandwidth of various devices along the IO path. Several techniques can be used to optimize the bandwidth. Such as load balancing, multi path and adaptively adjusting the parameters.