Алексей Андриянов Posted November 25, 2009 Posted November 25, 2009 (edited) Скажу сразу - у меня бордер на VM, и мне он не нравится. Теперь уже понимаю, что скорее всего это извращение, но может быть, кто-то имеет похожий опыт, и поделится? У меня проблема с производительностью. Конфигурация системы: Xen hypervisor 3.4.3, 2 x Xeon E5405 (по 4 ядра, 2.00Ghz), сетевуха одна Broadcomm NetXtreme BCM5722 (драйвер tg3 последний). На предыдущем сервере была Intel-овская сетевуха с драйвером e1000e, и ситуация была та же самая. Трафика - 60 Мбит, 15-20kpps. ресурсы на бордере: paravirtOps-ядро 2.6.31 2 x vcpu 1G ram Задачи на бордере: nat (около 300 000 трансляций, упирается в ip_conntrack_max), шейпер HTB (около 1500 классов и фильтров, фильтры захешированы), 1 x BGP full-view, несильно развесистый iptables (около 20-30 match-ей, через которые проходит каждый пакет) netflow-сенсор на libpcap (softflowd) xentop говорит, что border ест от 90 до 150% cpu. И при этом еще 55% ест dom0, который ничем не занят, кроме бриджевания пакетов с физической сетевухи в vif виртуальной машины. top на самом бордере (виртуальном): top - 21:41:51 up 5 days, 12:50, 1 user, load average: 0.37, 0.52, 0.44 Tasks: 53 total, 2 running, 51 sleeping, 0 stopped, 0 zombie Cpu(s): 5.3%us, 3.7%sy, 0.0%ni, 71.0%id, 0.0%wa, 0.0%hi, 19.8%si, 0.2%st Mem: 793192k total, 767404k used, 25788k free, 0k buffers Swap: 524280k total, 380k used, 523900k free, 309604k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30939 nobody 20 0 17692 16m 640 R 52 2.1 2012:32 softflowd 31024 nobody 20 0 4932 3620 600 S 10 0.5 205:28.23 softflowd 1799 quagga 20 0 158m 155m 1148 S 3 20.1 408:28.82 bgpd 1 root 20 0 1988 648 596 S 0 0.1 0:01.97 init Выключение softflowd картины радикально не меняет - в xentop на dom0 вместо 90% становится 65-70, и на dom0 по-прежнему 55. `mpstat 1` на боредере говорит так: 09:43:44 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 09:43:45 PM all 4.64 0.00 4.30 0.00 0.33 19.87 0.33 70.53 19579.00 09:43:46 PM all 7.85 0.00 4.10 0.00 0.00 18.77 0.00 69.28 18767.00 09:43:47 PM all 4.21 0.00 3.88 0.00 0.00 18.45 0.32 73.14 19104.00 09:43:48 PM all 4.26 0.00 3.28 0.00 0.00 19.34 0.33 72.79 18797.00 Бросается в глаза очень большое количество прерываний и 20% softirq. А на dom0 их еще больше: `mpstat 1` 09:50:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 09:50:12 PM all 0.00 0.00 0.13 0.00 0.00 1.02 0.76 98.09 35237.25 09:50:13 PM all 0.00 0.00 0.00 0.00 0.00 0.62 0.86 98.52 35934.65 09:50:14 PM all 0.00 0.00 0.00 0.00 0.00 1.49 0.62 97.89 36420.79 09:50:15 PM all 0.00 0.00 0.00 0.00 0.00 0.86 0.86 98.28 35048.51 09:50:16 PM all 0.00 0.00 0.00 0.00 0.00 0.99 0.87 98.14 35116.83 `cat /proc/interrupts` на dom0 (ненужное поскипал): CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 1275: 1799227419 0 0 0 0 0 0 0 Phys-irq peth0 1321: 3439284801 0 0 0 0 0 0 0 Dynamic-irq vif13.0 Т.е., прерывания генерятся не только на каждый принятый пакет на сетевухе, но и на каждый принятый и на каждый переданный в вирт. интерфейс xen пакет. Подозреваю, что мои проблемы кроются в большом количестве прерываний из-за неэффективности работы драйверов xen с прерываниями, использовании единственной сетевухи на вход и выход и неэффективном способе снятия netflow. Я собираюсь переводить бордер на физическую машину с многопортовой сетевухой, и сомневаюсь - позволит ли это радикально уменьшить нагрузку? И был бы очень рад найти выход, чтобы оставить бордер на виртуальной машине. Как можете посоветовать прооптимизировать без перевода на физическую машину? Действительно ли проблемы именно в том, что я обозначил, или я не вижу очевидного? Кто как снимает netflow и сколько ресурсов у вас на это уходит? Заранее спасибо за ответы. Edited November 25, 2009 by Алексей Андриянов Вставить ник Quote
EvilShadow Posted November 25, 2009 Posted November 25, 2009 Кто как снимает netflow и сколько ресурсов у вас на это уходит? http://ineu.su/blog/2008/09/27/optimalnyj-netflow-sensor/За год использования абсолютно никаких нареканий, юзерспейсовые сенсоры вспоминаю как страшный сон. Вставить ник Quote
Алексей Андриянов Posted November 25, 2009 Author Posted November 25, 2009 Кто как снимает netflow и сколько ресурсов у вас на это уходит? http://ineu.su/blog/2008/09/27/optimalnyj-netflow-sensor/За год использования абсолютно никаких нареканий, юзерспейсовые сенсоры вспоминаю как страшный сон. Я его пробовал, и у меня на нем ядро периодически падало. Вставить ник Quote
EvilShadow Posted November 25, 2009 Posted November 25, 2009 Я его пробовал, и у меня на нем ядро периодически падало. Странно это. У меня без проблем работало на диапазоне ядер с 2.6.26 до 2.6.30, на обычных одиночных системах, в xen-виртуалках, в kvm-виртуалках... Вставить ник Quote
DemYaN Posted November 25, 2009 Posted November 25, 2009 Домен у вас HVM? Интерфейс отдан гостевому домену через VT-d? Вставить ник Quote
Алексей Андриянов Posted November 25, 2009 Author Posted November 25, 2009 Странно это. У меня без проблем работало на диапазоне ядер с 2.6.26 до 2.6.30, на обычных одиночных системах, в xen-виртуалках, в kvm-виртуалках... Ну может и правда не из-за него. Там непонятно было, xentop говорил 100% и система не откликалась никак - не отвечала на пинги и на нажатия клавиш в консоли. Когда убрал ipt-netflow, вроде бы прошло. А раз вы пробовали снимать netflow с xen-виртуалок, там наверное, был и трафик серьезный? Не было проблем с прерываниями на каждый пакет, как у меня? Вставить ник Quote
Алексей Андриянов Posted November 25, 2009 Author Posted November 25, 2009 Домен у вас HVM? Интерфейс отдан гостевому домену через VT-d?Нет, паравиртуализация. Интерфейс отдан гостевому домену через bridge. То есть в конфиге написано vif = [ 'bridge=eth0' ] где eth0 - это мост, куда входит физическая сетевуха peth0. Через VT-d я не имею пока возможности отдать, т.к. на сервере сетевуха всего одна, а виртуальная машина с бордером - не единственная. Конечно, если это поможет, можно поставить доп. сетевуху и прокинуть через VT-d, но это требует HVM, а я читал, что это _гораздо_ медленнее паравиртуализации. У меня на соседнем xen-сервере windows xp крутится в hvm, тормозит жутко, так что я верю :) Вставить ник Quote
DemYaN Posted November 25, 2009 Posted November 25, 2009 ИМХО получить более-менее пристойную скорость io-операций в гостевом домене можно только отдав ему в монопольное пользование устройство PS садить пограничник в vm тот еще экстрим :) Вставить ник Quote
EvilShadow Posted November 25, 2009 Posted November 25, 2009 Странно это. У меня без проблем работало на диапазоне ядер с 2.6.26 до 2.6.30, на обычных одиночных системах, в xen-виртуалках, в kvm-виртуалках... Ну может и правда не из-за него. Там непонятно было, xentop говорил 100% и система не откликалась никак - не отвечала на пинги и на нажатия клавиш в консоли. Когда убрал ipt-netflow, вроде бы прошло. А раз вы пробовали снимать netflow с xen-виртуалок, там наверное, был и трафик серьезный? Не было проблем с прерываниями на каждый пакет, как у меня? Нет, мегабит по 40 на виртуалку. Это были pptp-сервера, которые жили на разных хост-системах. Но в последнее время все равно перевожу такие сервера на физические машины, на виртуалках оставляю то, что требует дублирования и изоляции - СУБД, почта и прочее. Вставить ник Quote
martin74 Posted November 26, 2009 Posted November 26, 2009 имеет смысл держать vpn сервера в виртуалках? Я использую vmware esx для кластера виртуалок, почта, база, сайты - в виртуалках, впн сервера на сейчас - физические машины. Но их у меня 10 ;). Вот сижу и думаю, стоит попробовать увести их в виртуалку, или не надо.... Вставить ник Quote
EvilShadow Posted November 26, 2009 Posted November 26, 2009 имеет смысл держать vpn сервера в виртуалках? Я использую vmware esx для кластера виртуалок, почта, база, сайты - в виртуалках, впн сервера на сейчас - физические машины. Но их у меня 10 ;). Вот сижу и думаю, стоит попробовать увести их в виртуалку, или не надо.... Системы, выполняющие сложные функции, живут в виртуалках с реплицированием корня каждой машины по drbd, дабы при смерти одной хост-системы можно было бы быстро завести их на другой. А ВПН-сервера взаимозаменяемы по определению и друг от друга в принципе не отличаются, поэтому при падении одного пользователи пойдут на другой. Имхо, единственный плюс впн-серверов в виртуалках - возможность живой миграции между хост-системами. Хотя на самом деле мне это пригодилось всего один-два раза, что не оправдывает издержек виртуализации на такие машинки. Вставить ник Quote
martin74 Posted November 26, 2009 Posted November 26, 2009 Да, сторадж для esx кластера собран на двух машинах с 5-мы рейдами и drbd репликацией. Для меня плюс в впн на виртуалках - быстрое наращивание их количества. Хотя тут другой вопрос. 10 физических впн серверов тянут скажем 5-6к коннектов. Если на этом же железе подниму 20 впн серверов - количество коннектов увеличится? ;) PS. Вопрос в применении accel-pptpd не стоит, меня устраивает обычный pptpd, по крайней мере пока. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.