есть 3 NAS на которые по PPPoE коннектятся клиенты. Недавно обнаружилась такая неприятная особенность. Суммарная пропускная способность каждого NAS упирается в 60Mbit/s (это приблизительное значение). Выше подниматься не хочет упорно. Внешний канал 500Mbit/s, так что говорить о том, что не хватает полосы не приходится. Без PPPoE выгребаем канал без проблем (бордер-маршрутизатор с такой нагрузкой справляется). Однозначно затык на PPPoE.
Google решения не дает. Кто-нибудь сталкивался с аналогичной проблеммой?
>есть 3 NAS на которые по PPPoE коннектятся клиенты. Недавно обнаружилась такая
>неприятная особенность. Суммарная пропускная способность каждого NAS упирается в 60Mbit/s (это
>приблизительное значение). Выше подниматься не хочет упорно. Внешний канал 500Mbit/s, так
>что говорить о том, что не хватает полосы не приходится. Без
>PPPoE выгребаем канал без проблем (бордер-маршрутизатор с такой нагрузкой справляется). Однозначно
>затык на PPPoE.
>Google решения не дает. Кто-нибудь сталкивался с аналогичной проблеммой?Use FreeBSD ?
>Use FreeBSD ?No, Linux.
Хотя уже начинают возникать подозрение, что надо будет переезжать с софтверных NAS на железные.
>>Use FreeBSD ?
>
>No, Linux.
>
>Хотя уже начинают возникать подозрение, что надо будет переезжать с софтверных NAS
>на железные.ну ооочень маленькая скорость
1. количество правил netfilter?
2. кол-во правил shaper'а
3. pppoe ядерный?
4. нагрузка какая и где?
>>>Use FreeBSD ?
>>
>>No, Linux.
>>
>>Хотя уже начинают возникать подозрение, что надо будет переезжать с софтверных NAS
>>на железные.
>
>ну ооочень маленькая скорость
>параметры для каждого из 2-х NAS отличаются, буду приводить усредненное значение
>1. количество правил netfilter?
~300
>2. кол-во правил shaper'а
по одному на интерфейс, причем количество подключений в зависимости от NAS и времени суток может меняться от 30-50 и до 200-400, что, в принципе, ни как не влияет на конечный результат.
>3. pppoe ядерный?
да
>4. нагрузка какая и где?
если имеется в виду нагрузка на CPU, то выше 30% не поднимается ни на одном из NAS. Если на интерфейсы, то все те же 60 Мбит. Интерфейсы гигабитные, карты - Intel 82572EI. Опять же повторюсь - если что-то качать с самого NAS или использовать его как маршрутизатор при всех прочих равных условиях - получаю весь канал или тут полосу, что вешаю на шейпер.
>[оверквотинг удален]
>>
>>ну ооочень маленькая скорость
>>
>
>параметры для каждого из 2-х NAS отличаются, буду приводить усредненное значение
>
>>1. количество правил netfilter?
>
>~300
>уже много
>>2. кол-во правил shaper'а
>
>по одному на интерфейс, причем количество подключений в зависимости от NAS и
>времени суток может меняться от 30-50 и до 200-400, что, в
>принципе, ни как не влияет на конечный результат.
>тогда конкретно какое?
>>3. pppoe ядерный?
>
>да
>
>>4. нагрузка какая и где?
>
>если имеется в виду нагрузка на CPU, то выше 30% не поднимается
>ни на одном из NAS. Если на интерфейсы, то все те
>же 60 Мбит. Интерфейсы гигабитные, карты - Intel 82572EI.или статистика нагрузки вами не верно читается или у вас проблемы с вводом-выводом и/или памятью iowait какой?
платформа серверная? ECC есть? ошибки IPMI имеются?
количество pps?
>
>или статистика нагрузки вами не верно читается или у вас проблемы с
>вводом-выводом и/или памятью iowait какой?на всех 3-х NAS сразу проблема? Один из NAS вообще грузится с FLASH, которые монтируется только по чтению, и пишет журналы на виртуальный диск.
>платформа серверная? ECC есть? ошибки IPMI имеются?
платформа, к сожалению, пока не серверная, но опять же везде разная. В плоть до того, что на одном из NAS система 32-битная, на 2-х других - x86_64. А предельная пропускная способность везде одна.
>>
>>или статистика нагрузки вами не верно читается или у вас проблемы с
>>вводом-выводом и/или памятью iowait какой?
>
>на всех 3-х NAS сразу проблема?
>^^^или статистика нагрузки вами не верно
а что настройки на всех отличаются кардинально?
если то, что как мне кажется необходимо указать для вас проблема, то извините -- телепаты по прежнему в отпуске.
>>платформа серверная? ECC есть? ошибки IPMI имеются?
>
>платформа, к сожалению, пока не серверная, но опять же везде разная. В
>плоть до того, что на одном из NAS система 32-битная, на
>2-х других - x86_64. А предельная пропускная способность везде одна.
Это с одного из NAS. подключено 170 pppoe-сессийtop - 10:30:24 up 115 days, 17:35, 5 users, load average: 0.46, 0.58, 0.61
Tasks: 342 total, 1 running, 341 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.1%us, 5.1%sy, 0.0%ni, 44.8%id, 17.2%wa, 6.4%hi, 20.3%si, 0.0%st
Mem: 3919844k total, 3586992k used, 332852k free, 192648k buffers
Swap: 5285376k total, 728k used, 5284648k free, 2455292k cached# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 728 309372 192652 2463060 0 0 3 228 1 1 12 27 58 3 0# iostat
Linux 2.6.27.19-V1 (db) 04/23/10 _x86_64_avg-cpu: %user %nice %system %iowait %steal %idle
7.40 4.44 50.42 3.24 0.00 57.81Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 33.63 12.94 887.45 129438426 8874456576
sda1 0.00 0.00 0.00 2802 3440
sda2 26.96 12.94 887.45 129434384 8874453136
sdb 0.00 0.07 0.00 724340 30176
sdb2 0.00 0.07 0.00 722628 30176
sdc 2.56 0.21 39.32 2092785 393215335
sdc1 2.56 0.21 39.32 2092289 393215335
drbd0 4.93 0.21 39.32 2085416 393153800
>[оверквотинг удален]
>top - 10:30:24 up 115 days, 17:35, 5 users, load
>average: 0.46, 0.58, 0.61
>Tasks: 342 total, 1 running, 341 sleeping, 0
>stopped, 0 zombie
>Cpu(s): 6.1%us, 5.1%sy, 0.0%ni, 44.8%id, 17.2%wa, 6.4%hi, 20.3%si,
> 0.0%st
>Mem: 3919844k total, 3586992k used, 332852k free,
> 192648k buffers
>Swap: 5285376k total, 728k used,
>5284648k free, 2455292k cached17.2%wa, 6.4%hi, 20.3%si,
т.е. 20 % времени система ждёт, ещё 20 уходит на soft interrupt -- вот вам и 40 процентов idle
жду ответа на остальные вопросы. + uname -a
>жду ответа на остальные вопросы. + uname -a# uname -a
Linux db 2.6.27.19-V1 #2 SMP Tue Jun 16 20:43:11 EEST 2009 x86_64 x86_64 x86_64 GNU/Linux
>
>>жду ответа на остальные вопросы. + uname -a
>
># uname -a
>Linux db 2.6.27.19-V1 #2 SMP Tue Jun 16 20:43:11 EEST 2009 x86_64
>x86_64 x86_64 GNU/Linuxповторю
кол-во pps?
какой конкретно shaper? правило tc это секрет?
lsmod | grep ppp ?
Вот такой скрипт вешает правила на интерфейс#!/usr/bin/perl
$INTERFACE=$ARGV[0];
$DEVICE=$ARGV[1];
$SPEED=$ARGV[2];
$LOCALIP=$ARGV[3];
$REMOTEIP=$ARGV[4];
$IPPARAM=$ARGV[5];$TC = "/usr/sbin/tc";
if(!($INTERFACE =~ /^ppp\d+/i))
{
exit(0);
};$file_name = "/var/run/radattr.$INTERFACE";
$NET = 100;
$SPEED_1 = 128;
$SPEED_2 = 128;
if( -e "$file_name")
{
open(RAD,"<$file_name");
while(<RAD>)
{
chomp();
CASE:
{
if($_ =~ /Filter-Id[ \t]+(\d+)/) { $NET = $1; last CASE; };
if($_ =~ /PPPD-Downstream-Speed-Limit[ \t]+(\d+)/) { $SPEED_2 = $1; last CASE; };
if($_ =~ /PPPD-Upstream-Speed-Limit[ \t]+(\d+)/) { $SPEED_1 = $1; last CASE; };
};
};
close(RAD);
};$BURST_DOWN = int($SPEED_1 / 8 * 1.5);
$BURST_UP = int($SPEED_2 / 8 * 1.5);if($BURST_UP < 100) { $BURST_UP = 100; };
if($BURST_DOWN < 100) { $BURST_DOWN = 100; };$BURST_DOWN_2 = $BURST_DOWN;
`logger "Rate is ${SPEED_1}/${SPEED_2} burst ${BURST_DOWN_2}/${BURST_UP}"`;
`$TC qdisc add dev $INTERFACE root handle 1: htb default 20`;
`$TC class add dev $INTERFACE parent 1: classid 1:1 htb prio 1 rate ${SPEED_1}kbit ceil ${SPEED_1}kbit burst ${BURST_DOWN_2}k`;`$TC class add dev $INTERFACE parent 1:1 classid 1:10 htb prio 1 rate ${SPEED_1}kbit ceil ${SPEED_1}kbit burst ${BURST_DOWN}k`;
`$TC class add dev $INTERFACE parent 1:1 classid 1:20 htb prio 2 rate ${SPEED_1}kbit ceil ${SPEED_1}kbit burst ${BURST_DOWN}k`;`$TC qdisc add dev $INTERFACE parent 1:10 handle 10: sfq`;
`$TC qdisc add dev $INTERFACE parent 1:20 handle 20: sfq`;`$TC filter add dev $INTERFACE parent 1: protocol ip prio 5 u32 match ip protocol 6 0xff match ip dport 5190 0xffff flowid 1:10`;
`$TC filter add dev $INTERFACE parent 1: protocol ip prio 5 u32 match ip protocol 1 0xff flowid 1:10`;`$TC qdisc add dev $INTERFACE handle ffff: ingress`;
`$TC filter add dev $INTERFACE parent ffff: protocol ip prio 10 u32 match u32 0 0 police rate ${SPEED_2}kbit burst ${BURST_UP}k mtu 15k drop flowid ffff:`;
>[оверквотинг удален]
>`$TC filter add dev $INTERFACE parent 1: protocol ip prio 5 u32
>match ip protocol 6 0xff match ip dport 5190 0xffff flowid
>1:10`;
>`$TC filter add dev $INTERFACE parent 1: protocol ip prio 5 u32
>match ip protocol 1 0xff flowid 1:10`;
>
>`$TC qdisc add dev $INTERFACE handle ffff: ingress`;
>`$TC filter add dev $INTERFACE parent ffff: protocol ip prio 10 u32
>match u32 0 0 police rate ${SPEED_2}kbit burst ${BURST_UP}k mtu 15k
>drop flowid ffff:`;это ^^^ далеко не одно правило на интерфейс, помимо того если и полисовать исходящий -- то нужно это сделать на исходящем интерфейсе а не на ppp, неужели такое нагромаждение ради несчастного icq?
pps = packet per second.
хотя в данном случае можно ставить точку
1. оптимизировать iptables, использовать по возможности ipset
2. оптимизировать tc, как вариант использовать хеши и flow
3. накрайняк попробовать фряху + mpd
# lsmod | grep ppp
pppoe 12320 340
pppox 4232 1 pppoe
ppp_generic 25792 682 pppoe,pppox
slhc 6248 1 ppp_generic
>кол-во pps?что конкретно имелось в виду под pps?
packets per second