We've been hunting performance problems in some DB2 database applications and have fallen into this observation. First...
Lenovo DM5000h, active-active controllers, each with bonded 10gbE to our core switches for NAS load. Controller "A" has one IP address, B another.
OnTap 9.9.1, ESX cluster 7u3, each cluster member has an active/active pair of 10gbE links. Unfortunately, we're using NFS3 so no real multipath... Instead, we're using "poor man's multipathing" where we're mounting storage volumes from the filers in an A,B pattern. (That is, the first of 50+ volumes is mounted from controller A IP, the second from controller B, the third from A, etc.)
Now, the observation....
One of our db2 virtual servers has a tablespace that's partitioned into thirds... 1/3 of the data is on controller B (aggregate B,) one third on controller/aggr A, and the third also on controller/aggr B. This is actual partitioning, where a single table or tablespace is split into thirds in order to spread the I/O load across storage volumes.
We've been referring to this as "B,A,B storage"
The volumes were mounted from the IP addresses closest to the aggregates... volume 1 mounted from IP B, volume 2 from IP A, and volume 3 from IP B, hence "B,A,B network pathing."
By experiment, we discovered that our I/O speed is over 2.25 times faster if we break the "B,A,B" network pathing and mount all three volumes from controller B. ("B,B,B network pathing.")
I believe we're seeing the benefit of having all three volumes sent to the client from a single controller and its deduplication/re-constitution engine.
Is this a valid observation? Is there something I'm overlooking that explains a 2.27x performance increase?
