Как мы уже писали, компания VMware сделала еще один тип виртуального SCSI-адаптера в VMware vSphere, который получил название VMware Paravirtual SCSI (PVSCSI). Паравиртуализованное устройство PVSCSI позволяет добиться большей производительности дисковой подсистемы витуальных машин на серверах VMware ESX и снижения нагрузки на CPU серверов.
Если посмотреть в документ компании VMware PVSCSI Storage Performance, то там можно увидеть вот такие интересные результаты для производительности дисков виртуальных машин на ESX по сравнению с адаптером LSI:
Однако, когда нужно использовать адаптер PVSCSI для виртуальных машин на ESX? Оказывается, несмотря на его чудесную производительность, не всегда. Согласно вот этой статье Скотта Драммонда, одного из гуру производительности VMware ESX, адаптер PVSCSI нужно использовать только тогда, когда ваше приложение дает значительную нагрузку на дисковую подсистему (high IO workload), а совокупная пропускная способность канала к СХД ее поддерживает (включая то, сколько IOPS может выдавать система хранения).
Вот объяснение данного явления. При росте требований виртуальных машин к дисковой подсистеме возникают interrupt coalescing, то есть объединение прерываний к СХД в пачки для более их быстрой обработки. С помощью этой техники производительность адаптера SCSI увеличивается по сравнению с одиночным выполнением прерываний при большом количестве IO.
На собирание этой пачки требуется какое-то время, поэтому возникает небольшой delay, который потом компенсируется быстрым выполнением команд пачки.
Теперь пара терминов:
Outstanding IOs (OIOs) - количество запросов на ввод-вывод со стороны виртуальной машины (demand of IO).
IOs per second (IOPS) - количество запросов на ввод-вывод, которое может обеспечить хранилище (supply of IO).
Так вот LSI адаптер увеличивает этот самый interrupt coalescing на базе как OIOs, так и IOPS по мере роста нагрузки на сторадж. При малом количестве запросов IO, он этот coalescing не использует.
А вот PVSCSI сейчас работает по другому - он использует interrupt coalescing только на базе OIOs. То есть, если растут только требования виртуальных машин к СХД (без роста пропускной способности по IOPS) - начинается interrupt coalescing, соответственно растут задержки.
Для больших же OIOs и IOPS - адаптер PVSCSI дает ощутимый рост производительности и снижает нагрузку на CPU за счет паравиртуализации (на значениях 10-50K IOPS). На нескольких же сотнях IOPS этот эффект практически не ощутим. То есть, если запросы на IO от виртуальных машин больше того, что может выдавать система хранения, то адаптер LSI будет работать эффективнее PVSCSI в силу меньших задержек.
В следующих версиях ESX компания VMware сделает interrupt coalescing на базе как OIOs, так и OIPS, поэтому адаптер PVSCSI будет работать лучше.
Вывод таков - не используйте PVSCSI в окружениях с малой производительностью дисковой подсистемы и низких нагрузках по IO.
А вот, что советует Скотт:
На данный момент используйте PVSCSI для дисков VMDK, которые находятся на быстром хранилище (более 2,000 IOPS).
Если у вас есть адаптеры PVSCSI в окружениях с низким IO, не надо их переконфигурировать на LSI, поскольку потери производительности почти незаменты, а приложения все равно не требовательны к ней.
Для будущих версий VMware ESX / ESXi адаптер PVSCSI будет эффективнее LSI Logic для любых окружений.