SokolovS Posted January 24, 2009 Posted January 24, 2009 (edited) Сервер на Linux 2.6.18 терминирует PPTP. При количестве клиентов более 500, пинг сильно скачет от 1 до 400 мс и появляются потери 5 - 10 на 1000 пакетов. NAT отсутствует, шейпинг отсутствует. Пингую внутренний сервер, т.е. трафик проходит транзитом через VPN и сразу на сервер. HZ в ядре 1000, загружал ядро с HZ 250, на ситуацию это не влияет. PPTP в юзерспейс. Сетевушки вот такие: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet driver: r8169 version: 2.2LK-NAPI Подскажите в чем может быть проблема и как продиагностировать? Edited January 24, 2009 by SokolovS Вставить ник Quote
SokolovS Posted January 24, 2009 Author Posted January 24, 2009 (edited) Причем в основном пинг около 2 мс, но иногда на 4-5 пингов подскакивает на уровень от 100-400. Транзитный трафик порядка 50-60 Мбит в пике. При ~500 и более юзерах примерно так: top - 23:21:35 up 8 days, 13:37, 1 user, load average: 6.55, 10.44, 12.25 Tasks: 950 total, 48 running, 902 sleeping, 0 stopped, 0 zombie Cpu(s): 8.3% us, 22.3% sy, 0.1% ni, 18.9% id, 0.0% wa, 6.5% hi, 43.9% si, 0.0% st Mem: 2070088k total, 1309244k used, 760844k free, 717928k buffers Swap: 2008084k total, 0k used, 2008084k free, 237448k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4953 root 16 0 2620 1528 796 R 6 0.1 0:04.54 top 25882 root 16 0 1624 592 460 R 6 0.0 0:22.43 pptpctrl 2631 root 15 0 1620 636 460 S 5 0.0 0:47.05 pptpctrl 10068 root 15 0 1884 848 460 S 4 0.0 13:27.69 pptpctrl 23928 root 15 0 2016 984 460 R 4 0.0 541:44.76 pptpctrl 20712 root 15 0 1888 856 460 S 4 0.0 16:51.05 pptpctrl 2259 zabbix 20 5 2032 428 336 S 3 0.0 61:23.58 zabbix_agentd 21026 root 15 0 1756 708 460 R 3 0.0 156:56.35 pptpctrl 6 root 34 19 0 0 0 R 3 0.0 402:30.85 ksoftirqd/1 2258 zabbix 21 5 2028 416 324 S 3 0.0 60:37.35 zabbix_agentd 2052 root 16 0 1624 660 460 R 3 0.0 2:59.17 pptpctrl 3 root 34 19 0 0 0 S 3 0.0 380:09.75 ksoftirqd/0 27856 root 15 0 1752 724 460 S 3 0.0 20:53.51 pptpctrl 19952 root 16 0 1624 592 460 R 3 0.0 1:30.71 pptpctrl 15005 root 15 0 1620 608 460 R 3 0.0 5:26.62 pptpctrl 6846 root 15 0 1624 660 460 S 2 0.0 3:42.44 pptpctrl 22669 root 15 0 1620 576 460 S 2 0.0 0:36.41 pptpctrl 23600 root 15 0 1620 612 460 S 2 0.0 1:25.39 pptpctrl 3469 root 15 0 1620 560 460 S 2 0.0 0:07.88 pptpctrl 11698 root 15 0 1620 616 460 R 2 0.0 8:50.72 pptpctrl 20862 root 15 0 1620 668 460 S 2 0.0 2:25.13 pptpctrl 7949 root 15 0 1620 672 460 R 2 0.0 10:13.71 pptpctrl 15940 root 15 0 1756 704 460 R 2 0.0 19:13.38 pptpctrl 23020 root 15 0 1620 588 460 R 2 0.0 7:14.14 pptpctrl 6595 root 15 0 1624 676 460 R 2 0.0 14:09.27 pptpctrl 18975 root 15 0 1620 676 460 S 2 0.0 7:08.20 pptpctrl 16515 root 15 0 1620 612 460 R 2 0.0 1:57.41 pptpctrl 18486 root 15 0 1620 600 460 R 2 0.0 1:42.89 pptpctrl 27132 root 15 0 1624 584 460 S 2 0.0 0:59.51 pptpctrl 11944 root 15 0 1624 560 460 R 1 0.0 1:01.02 pptpctrl 25137 root 15 0 1620 636 460 R 1 0.0 5:58.47 pptpctrl 12103 root 15 0 1624 568 460 D 1 0.0 0:22.76 pptpctrl Edited January 24, 2009 by SokolovS Вставить ник Quote
Kirya Posted January 24, 2009 Posted January 24, 2009 oprofileРано ещё его читать.Dmesg ни на что не ругается ? Вставить ник Quote
SokolovS Posted January 25, 2009 Author Posted January 25, 2009 oprofileРано ещё его читать. Вот и я так подумал, камень то грузит не на 100%, т.е. нехватки процессорного времени нет. Dmesg ни на что не ругается ?Есть вот такой варнинг... больше ничего нет BUG: warning at kernel/cpu.c:51/unlock_cpu_hotplug() [<c0137598>] unlock_cpu_hotplug+0x2c/0x54 [<c02914f2>] store_speed+0x99/0xa2 [<c0291459>] store_speed+0x0/0xa2 [<c0290309>] store+0x31/0x41 [<c0197227>] sysfs_write_file+0xa5/0xcf [<c0197182>] sysfs_write_file+0x0/0xcf [<c0161ef7>] vfs_write+0xa6/0x14b [<c0162783>] sys_write+0x3c/0x63 [<c0102be5>] sysenter_past_esp+0x56/0x79 Вставить ник Quote
EvilShadow Posted January 25, 2009 Posted January 25, 2009 Вот и я так подумал, камень то грузит не на 100%, т.е. нехватки процессорного времени нет. Чтоб узнать, например, что прерывания грузят проц на 30% и нужно включить NAPI, вовсе не обязательно ждать, пока система загнется. Считайте, что профайлер - тот же top, но не риалтаймовый, а статистический. Имхо, от общей статистики больше толку, чем от моментальных величин в любой момент времени. Вставить ник Quote
SokolovS Posted January 25, 2009 Author Posted January 25, 2009 (edited) 2EvilShadow: а разве решение использовать NAPI не сам драйвер сетевушки принимает? У меня в пике больше 20 kpps не бывает. Edited January 25, 2009 by SokolovS Вставить ник Quote
EvilShadow Posted January 25, 2009 Posted January 25, 2009 Он может просто быть собран без поддержки NAPI :) Вставить ник Quote
SokolovS Posted January 25, 2009 Author Posted January 25, 2009 (edited) Он может просто быть собран без поддержки NAPI :)См. первый пост Меня вот что смущает. # cat /proc/interrupts ... 11: 249357177 3425257197 XT-PIC libata, ohci1394, eth3, eth4 ... Обе сетевушки висят на однмо прерывании. Это вобще нормально? Edited January 25, 2009 by SokolovS Вставить ник Quote
random7 Posted January 25, 2009 Posted January 25, 2009 ещё XT-PIC смущает APIC не работает? Вставить ник Quote
SokolovS Posted January 25, 2009 Author Posted January 25, 2009 iptables покажи ? #!/bin/sh # Сменим на каталог размещения скрипта FWDIR=`dirname $0` cd $FWDIR # Исполняемый файл iptables IPTABLES="iptables" # Интерфейсы LO_IFACE="lo" LAN_IFACE="eth3" SRV_IFACE="eth5" INET_IFACE="eth4" CLIENT_IFACE="ppp+" # Сети и адреса LOCAL_NET="x.x.x.x/16" OFFICE_NET="x.x.x.x/22" LAN_IP="x.x.x.x" GRAY_NET="x.x.x.x/16" # Белая сеть OUR_NETWORK="x.x.x.x/22" # Названия цепочек LOCAL="ZLOCAL" BILLING="ZBILLING" # Очистить таблицы $IPTABLES -F $IPTABLES -X # Политика по умолчанию IPv4 $IPTABLES -P FORWARD DROP ########################################## # Билинг, forward трафик ########################################## $IPTABLES -N $BILLING # [ACCOUNTING] Считаем трафик на собственную белую подсеть $IPTABLES -A $BILLING -d $OUR_NETWORK -j ULOG --ulog-prefix "FWD_IN" # [ACCOUNTING] Считаем трафик на серую подсеть $IPTABLES -A $BILLING -o $CLIENT_IFACE -d $GRAY_NET -j ULOG --ulog-prefix "FWD_IN" # Разрешаем трафик в выданную подсеть для машин со статическими адресами $IPTABLES -A $BILLING -i $SRV_IFACE -s $OUR_NETWORK -j RETURN $IPTABLES -A $BILLING -o $SRV_IFACE -d $OUR_NETWORK -j RETURN # Разрешаем трафик в выданную подсеть для юр.лиц $IPTABLES -A $BILLING -i $INET_IFACE -s $OUR_NETWORK -j RETURN $IPTABLES -A $BILLING -o $INET_IFACE -d $OUR_NETWORK -j RETURN # Разрешаем трафик на собственную подсеть для VPN-клиентов $IPTABLES -A $BILLING -i $CLIENT_IFACE -s $OUR_NETWORK -j RETURN $IPTABLES -A $BILLING -o $CLIENT_IFACE -d $OUR_NETWORK -j RETURN # Разрешаем на серую подсеть для VPN-клиентов $IPTABLES -A $BILLING -i $CLIENT_IFACE -s $GRAY_NET -j RETURN $IPTABLES -A $BILLING -o $CLIENT_IFACE -d $GRAY_NET -j RETURN # Все остальное удалить $IPTABLES -A $BILLING -j DROP ########################################## # Disable conntrack for transit ########################################## $IPTABLES -t raw -A PREROUTING -i $CLIENT_IFACE -s $OUR_NETWORK -j NOTRACK $IPTABLES -t raw -A PREROUTING -d $OUR_NETWORK -j NOTRACK $IPTABLES -t raw -A PREROUTING -i $CLIENT_IFACE -s $GRAY_NET -j NOTRACK $IPTABLES -t raw -A PREROUTING -d $GRAY_NET -j NOTRACK ########################################## # Цепочка для локальной сети ########################################## $IPTABLES -N $LOCAL $IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE -s $OFFICE_NET --dport 10050 -j ACCEPT # Zabbix Agent $IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE --dport 22 -j ACCEPT # SSH $IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE --dport 1723 -j ACCEPT # PPTP $IPTABLES -A $LOCAL -p GRE -i $LAN_IFACE -j ACCEPT # GRE ########################################## # Разрешающие INPUT правила ########################################## $IPTABLES -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT # Ping (все пинги) $IPTABLES -A INPUT -p UDP -m udp --sport 32769:65535 --dport 33434:33523 -j ACCEPT # Traceroute # Отправить в цепочку для локальной сети $IPTABLES -A INPUT -i $LAN_IFACE -s $LOCAL_NET -j $LOCAL # Разрешать все loopback пакеты $IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT # Удалять все входящие пакеты не ESTABLISHED,RELATED $IPTABLES -A INPUT -p ALL -m state ! --state ESTABLISHED,RELATED -j DROP # Цепочки по forward трафку $IPTABLES -A FORWARD -j $BILLING $IPTABLES -A FORWARD -j ACCEPT # Сохранить основные правила /sbin/service iptables save В форвард цепочке трафик отправляется в ulog-acctd, но его отключение на ситуацию не влияет. ещё XT-PIC смущаетAPIC не работает? Да, apic отключен отпцией noapic в параметрах ядра. Вставить ник Quote
EvilShadow Posted January 25, 2009 Posted January 25, 2009 Он может просто быть собран без поддержки NAPI :)См. первый пост Самое главное:Чтоб узнать, например, что прерывания...Я к тому, что профайлер - штука полезная всегда Вставить ник Quote
Oleg_S Posted January 27, 2009 Posted January 27, 2009 Сервер на Linux 2.6.18 терминирует PPTP. При количестве клиентов более 500, пинг сильно скачет от 1 до 400 мс и появляются потери 5 - 10 на 1000 пакетов. NAT отсутствует, шейпинг отсутствует.Пингую внутренний сервер, т.е. трафик проходит транзитом через VPN и сразу на сервер. HZ в ядре 1000, загружал ядро с HZ 250, на ситуацию это не влияет. PPTP в юзерспейс. Сетевушки вот такие: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet driver: r8169 version: 2.2LK-NAPI Подскажите в чем может быть проблема и как продиагностировать? Проблема - userspace pptp Диагностика - mpstat -P ALL 10 Общий совет - если процессоров(ядер) >1, то каждая сетевая должна быть на своем отдельном прерывании, соотвественно, каждое прерывание на отдельном процессоре(ядре). Но с юзерспейс pptp это все равно не спасет. Вставить ник Quote
SokolovS Posted January 27, 2009 Author Posted January 27, 2009 Вот уже натсраиваю новый сервер с accel-pptp. Кстати как быть когда ядер 4? Я так понимаю irqbalance нужно запускать? Вставить ник Quote
Ivantey Posted January 27, 2009 Posted January 27, 2009 Вот уже натсраиваю новый сервер с accel-pptp. Кстати как быть когда ядер 4? Я так понимаю irqbalance нужно запускать? Замечено что после установки accel только одно ядро загружается. Второе простаивает пока прерывания одной из сетевок на другое ядро не посадишь Вставить ник Quote
SokolovS Posted January 27, 2009 Author Posted January 27, 2009 Хм. Как тогда быть если ядер >2 Вставить ник Quote
xeb Posted January 27, 2009 Posted January 27, 2009 не загоняйся с ядрами, реализация PPP в ядре однопоточная вобщем пробуй accel-pptp, если на поптопе у тебя было 500 в переделе, то с accel-pptp 1000 коннектов будет лафа серваку, он будет отдыхать Вставить ник Quote
Ivantey Posted January 27, 2009 Posted January 27, 2009 У нас со sdy_moscow пока большой лафы не получилось. Вставить ник Quote
xeb Posted January 28, 2009 Posted January 28, 2009 да, может быть я и преувеличил с лафой, но то что он потянет 1000 коннектов у меня нет сомнений Вставить ник Quote
sdy_moscow Posted January 28, 2009 Posted January 28, 2009 (edited) Ivantey просто поторопился.... :-) Сегодня подшаманили с файрволом и ВОТ ОНО ЧУДО - нагрузка на проц по моим прикидкам снизилась в 2-3 раза.... Итог 1. ставим ассел 2. контрак или отключаем или маскируем в цепочке рау (ГРЕ протокол, 1723 порт тсп, ИП клиентов) в иптаблес (я так в итоге сделал, т.к. хочу кое-что все-таки отслеживать и НАТить). 3. файрвол настраиваем с умом - чтоб гре и пакеты юзеров лишних проверок не проходили. И УРА! ЗАРАБОТАЛО! З.Ы. если ве-же нужен НАТ - то тут походу ничего не поможет - контрак реально больше 500 сесий активных юзверей не вытянет... ХЕВ - кстати в 0.8.2какие то проблемы... make server не выполняется в каком-то конфигуре происходит сбой из-за пермишенов.... попозже сравню файлы... Edited January 28, 2009 by sdy_moscow Вставить ник Quote
xeb Posted January 28, 2009 Posted January 28, 2009 (edited) З.Ы. если ве-же нужен НАТ - то тут походу ничего не поможет - контрак реально больше 500 сесий активных юзверей не вытянет...вытянет, нужно отрубать только conntrack_gre, а не весь conntrackХЕВ - кстати в 0.8.2какие то проблемы... make server не выполняется в каком-то конфигуре происходит сбой из-за пермишенов.только что проверил, всё нормально Edited January 28, 2009 by xeb Вставить ник 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.