I was doing some performance comparisons between the aic94xx sas adapter
and the mptsas (lsi1078 chip) and saw that performance was slightly
lower on lsi using the same drive. One thing I noticed the mptsas driver
was only setting sg_tablesize to 40 which restricts the maximum size of
the IO to 160kb. This is inefficient and so I changed it to 255 (max
value) for testing purposes. The results were not what I expected.
While CPU efficiency was improved at the larger block sizes (like I had
hopped), there were drastic improvements at small (<16k) block sizes
which is completely surprising). So I decided to see where all the time
was being spent. When doing oprofile, loss of idle ticks was confusing
things so I booted with idle=poll, and magically the original mptsas
driver now performs like the modified version at the small block sizes.
My suspicion is that we have some some sleep delay which is minimized by
going into poll mode, but I have no idea why changing the sg_tablesize
gives the same results regardless of poll mode. I should reiterate that
I am not talking about small difference. This is 2x performance at 1/3 cpu.
Also, is there any reason we can't increase sg_tablesize for mptsas?
Any thoughts or experiments to try are welcome.
Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html