URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88786
[ Назад ]

Исходное сообщение
"сервер rp-pppoe предельная скорость ~60Mbit/s"

Отправлено Huron , 22-Апр-10 21:45 
есть 3 NAS на которые по PPPoE коннектятся клиенты. Недавно обнаружилась такая неприятная особенность. Суммарная пропускная способность каждого NAS упирается в 60Mbit/s (это приблизительное значение). Выше подниматься не хочет упорно. Внешний канал 500Mbit/s, так что говорить о том, что не хватает полосы не приходится. Без PPPoE выгребаем канал без проблем (бордер-маршрутизатор с такой нагрузкой справляется). Однозначно затык на PPPoE.
Google решения не дает. Кто-нибудь сталкивался с аналогичной проблеммой?

Содержание

Сообщения в этом обсуждении
"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено PavelR , 23-Апр-10 09:07 
>есть 3 NAS на которые по PPPoE коннектятся клиенты. Недавно обнаружилась такая
>неприятная особенность. Суммарная пропускная способность каждого NAS упирается в 60Mbit/s (это
>приблизительное значение). Выше подниматься не хочет упорно. Внешний канал 500Mbit/s, так
>что говорить о том, что не хватает полосы не приходится. Без
>PPPoE выгребаем канал без проблем (бордер-маршрутизатор с такой нагрузкой справляется). Однозначно
>затык на PPPoE.
>Google решения не дает. Кто-нибудь сталкивался с аналогичной проблеммой?

Use FreeBSD ?


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 10:16 
>Use FreeBSD ?

No, Linux.

Хотя уже начинают возникать подозрение, что надо будет переезжать с софтверных NAS на железные.


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 10:34 
>>Use FreeBSD ?
>
>No, Linux.
>
>Хотя уже начинают возникать подозрение, что надо будет переезжать с софтверных NAS
>на железные.

ну ооочень маленькая скорость

1. количество правил netfilter?
2. кол-во правил shaper'а
3. pppoe ядерный?
4. нагрузка какая и где?


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 10:55 
>>>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 или использовать его как маршрутизатор при всех прочих равных условиях - получаю весь канал или тут полосу, что вешаю на шейпер.


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 11:03 
>[оверквотинг удален]
>>
>>ну ооочень маленькая скорость
>>
>
>параметры для каждого из 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?


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 11:12 
>
>или статистика нагрузки вами не верно читается или у вас проблемы с
>вводом-выводом и/или памятью iowait какой?

на всех 3-х NAS сразу проблема? Один из NAS вообще грузится с FLASH, которые монтируется только по чтению, и пишет журналы на виртуальный диск.

>платформа серверная? ECC есть? ошибки IPMI имеются?

платформа, к сожалению, пока не серверная, но опять же везде разная. В плоть до того, что на одном из NAS система 32-битная, на 2-х других - x86_64. А предельная пропускная способность везде одна.


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 11:15 
>>
>>или статистика нагрузки вами не верно читается или у вас проблемы с
>>вводом-выводом и/или памятью iowait какой?
>
>на всех 3-х NAS сразу проблема?
>

^^^или статистика нагрузки вами не верно

а что настройки на всех отличаются кардинально?

если то, что как мне кажется необходимо указать для вас проблема, то извините -- телепаты по прежнему в отпуске.

>>платформа серверная? ECC есть? ошибки IPMI имеются?
>
>платформа, к сожалению, пока не серверная, но опять же везде разная. В
>плоть до того, что на одном из NAS система 32-битная, на
>2-х других - x86_64. А предельная пропускная способность везде одна.


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 11:34 
Это с одного из 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.81

Device:            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



"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 11:38 
>[оверквотинг удален]
>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

17.2%wa,  6.4%hi, 20.3%si,

т.е. 20 % времени система ждёт, ещё 20 уходит на soft interrupt -- вот вам и 40 процентов idle

жду ответа на остальные вопросы. + uname -a


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 11:43 

>жду ответа на остальные вопросы. + 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


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 11:46 
>
>>жду ответа на остальные вопросы. + 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 ?


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 12:11 
Вот такой скрипт вешает правила на интерфейс

#!/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:`;


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено pavel_simple , 23-Апр-10 12:55 
>[оверквотинг удален]
>`$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


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 12:11 
# lsmod | grep ppp
pppoe                  12320  340
pppox                   4232  1 pppoe
ppp_generic            25792  682 pppoe,pppox
slhc                    6248  1 ppp_generic

"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено Huron , 23-Апр-10 12:25 
>кол-во pps?

что конкретно имелось в виду под pps?


"сервер rp-pppoe предельная скорость ~60Mbit/s"
Отправлено rr , 23-Апр-10 12:57 
packets per second