Назад | Перейти на главную страницу

Виртуализация подходит для приложений с интенсивным использованием пакетов?

У нас есть собственное и ОЧЕНЬ индивидуальное приложение, которое работает на сервере Windows 2008R2. Его основная функция - как можно быстрее подключиться ко многим десяткам тысяч IP-адресов и опросить конкретный TCP-порт - по сути, сканер сети, но в значительной степени адаптированный к нашим требованиям. Между сервером и адресами назначения нет NAT, и приложение не потребляет большого количества памяти или процессора.

Приложение (основанное на .NET) оптимизировано, и мы уверены, что код максимально точен. Однако скорость, с которой приложение может перемещаться по IP-адресам, по-видимому, ограничивается комбинацией стека Windows TCP и оборудования, на котором оно работает - на данный момент это низкопроизводительный блок серверного класса.

Поскольку производительность этого приложения имеет первостепенное значение, мы планируем перенести его на новый сервер с более высокими характеристиками, возможно, HP DL360 G8. Однако потенциально мы можем запускать несколько экземпляров приложения на разных машинах одновременно, и поэтому я хотел бы изучить возможность использования нового сервера в качестве виртуального хоста.

Мы, вероятно, будем использовать VMWare ESXi с Hyper-V в качестве альтернативы. Однако я не уверен, что приложение с интенсивным использованием пакетов, работающее на виртуальных машинах на сервере, просто переместит узкое место на гипервизор?

DL360 имеет 4 сетевых адаптера: потенциально мы могли бы «подключить» 4 виртуальных машины к каждому из 4-х сетевых адаптеров и запускать их параллельно. Эффективно ли VMWare / Hyper-V пропускает трафик непосредственно к сетевой карте, обеспечивая «родную» производительность сети, или есть элемент трансляции между гостевой ОС и оборудованием, который потенциально может вызвать узкое место пакетов на гипервизоре?

Для Hyper-V: это зависит от обстоятельств. Вы хотите использовать SR-VIO, подключенный к аппаратной карте, виртуальной сети и сетевой карте. В противном случае все пакеты проходят через виртуальный коммутатор, что означает накладные расходы. При наличии приличной сетевой карты это приведет к тому, что виртуальной машине будет назначена аппаратная очередь, которая будет работать так же быстро, как и на уровне виртуализации.

В VMware вы также можете выполнять SR-IOV, имейте в виду, что для этого требуется сетевая карта, которая его поддерживает. Хороший обзор SR-IOV Скотт Лоу, если вы не знакомы с ним. VMware также дает вам возможность выполнять «DirectPath I / O», когда вы предоставляете гостю прямой доступ к устройству pci, ищите «DirectPath» в этом PDF для получения дополнительной информации. Также стоит отметить, что вы можете попробовать его в VMware без использования DirectPath или SR-IOV, производительность действительно хороша, если вы используете гостевой драйвер VMXNET3.

Мы сделали аналогичные вещи на RHEV (или просто KVM), используя либо SRIOV, либо, если вы используете Cisco UCS - с VMFEX - для этого вам понадобятся карты Palo в блейд-модулях.

Очень большие развертывания в обоих случаях (пятизначные номера серверов) работают очень хорошо уже несколько лет.