Had lots of problems using my IBM BR10i and Dell SAS 5I/r controllers; performance under ESXi 5 was terrible.
Just 3.5 MB/s on write. Under Linux, write performance was around 110-120 MB/s. So WTF ?
I thought that all this was needed (disable Interrupt Routing):
# esxcli system settings kernel list -o iovDisableIR
# esxcfg-advcfg -k TRUE iovDisableIR (just the above command wasn't enough)
# auto-backup.sh
# auto-backup.sh (yes, twice!)
# reboot
Check:
# esxcfg-advcfg -j iovDisableIR
# esxcli system settings kernel list -o iovDisableIR

But in the end, this wasn’t it. Seems that LSI1068E based controllers disable all disk caching built into the drives by default.
If the server has battery backup you can enable basic drive caching on the Logical Volumes without risk (or, without a battery, WITH risk).
Goto www.LSI.com (The controller is made by LSI) and download and install MegaRAID Storage Manager. In short, install the VIB on your ESXi machine, the Manager on a Windows or Linux machine, sync their host names and enable all ports on the ESXi firewall for incoming TCP traffic.
Highlight the Virtual Raid Volume, right click, properties. Enable Cache and save. You have to do this on every logical raid volume.
Your performance difference is incredible.
And I just lost a day of looking for the solution. Crap.