CPU: Intel(R) Xeon(TM) CPU 3.60GHz (3600.16-MHz 686-class CPU)bge0@pci0:6:0:0: class=0x020000 card=0x02c61014 chip=0x165914e4 rev=0x11 hdr=0x00
vendor = 'Broadcom Corporation'
device = 'NetXtreme Gigabit Ethernet PCI Express (BCM5721)'
class = network
subclass = ethernetbge1@pci0:7:0:0: class=0x020000 card=0x02c61014 chip=0x165914e4 rev=0x11 hdr=0x00
vendor = 'Broadcom Corporation'
device = 'NetXtreme Gigabit Ethernet PCI Express (BCM5721)'
class = network
subclass = ethernetswapinfo
Device 1K-blocks Used Avail Capacity
/dev/da0s1b 4194304 0 4194304 0%real memory = 4294967296 (4096 MB)
Ситуация:
машина занимается шейпированием трафика. Скорость абонента 2 мегабита. Скорость канала в целом 100 мегабит. Число абонентов на шейпере около 600 (в списке в целом). Система FreeBSD 8.0 При подключении одного абонента все нормально. Скорость в норме - как и положено 2 мегабита.При подключении нагрузки снижается скорость до 0.2 мегабита, присутствуют потери. Показания спидетест дергаются. В целом создаётся картина, что машина загружена прерываниями, однако показания interrupt не высоки, загрузка процессора тоже низкая.
Подозреваю, что что-то происходит с сетевыми картами но ума не приложу как это можно увидеть и полечить. Может кто нибудь натолкнуть на мысль?
Спасибо!
По описанию похоже на переполнение очереди пайпа используемого шейпером.Проверить можно где-то так:
ground# ipfw pipe 1 show
00001: 30.000 Kbit/s 0 ms burst 0
q131073 50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
sched 65537 type FIFO flags 0x0 0 buckets 1 active
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 ip 0.0.0.0/0 0.0.0.0/0 198 136856 50 24410 108в последней строке последняя запись (Drp) - это счётчик пакетов, дропнутых шейпером в виду того, что они не поместились в отведённую по умолчанию очередь для данного пайпа
третья/вторая запись с конца (Pkt/Byte) - количество пакетов/байт во внутренней очереди шейпера
размер внутренней очереди пайпа в данном примере 50 пакетов (50 sl.)
Таким образом из данного примера можно сказать, что размера внутренней очереди для данного пайпа недостаточно.
Исправить можно указав параметр queue при создании пайпа. Т.е. где-то так:
ipfw pipe 1 config bw 30Kbit/s queue 256Kbytes
в этом случае вы указываете, что размер внутренней очереди, связанной с пайпом 256 Кбайт
или так:ipfw pipe 1 config bw 30Kbit/s queue 300
в этом случае вы указываете, что размер внутренней очереди, связанной с пайпом 300 пакетов
(возможно ещё придётся поднять значение sysctl net.inet.ip.dummynet.pipe_slot_limit)
Для проверки отключил фаерволл (FreeBSD шейпер находится за линуксовым натом), в результате получил такой же результат - загрузка канала 20-30 мегабит вместо положеных 80-90, скорость на спидтесте плавает, падает почти до нуля и поднимается до 2-3 мегабит. Вобщем не работает как надо. Ничего вообще теперь не понимаю. Выходит таки сетевые шалят? Что может такое происходить? Куда теперь рыть? Подскажите, что можно еще проверить, сам уже почти всю бороду выщипал.
Спасибо!
Покажите вывод команды
netstat -dw 10 -q 10На счёт загрузки CPU - какие пиковые значения вам удаётся наблюдать в top если "зажать пробел". Интересуют system и interrupt.
Пробовали ли вы работать с включеным polling-ом?
> Покажите вывод команды
> netstat -dw 10 -q 10
> На счёт загрузки CPU - какие пиковые значения вам удаётся наблюдать в
> top если "зажать пробел". Интересуют system и interrupt.
> Пробовали ли вы работать с включеным polling-ом?Полинг включен, smp также включено.
netstat -dw 10 -g 10
input (Total) output
packets errs bytes packets errs bytes colls drops
135402 0 73664084 135086 0 73255532 0 0
133977 0 73565240 133725 0 73201192 0 0
133668 0 74402225 133461 0 74118434 0 0
131349 0 74338555 131165 0 74070570 0 0При зажатом пробеле (top -SPH) процессоры выстраиваются в 100% idle периодически system и interrupt отжирают по очереди от 20% до 30% буквально на доли секунды. Периодически возникают провалы в трафике до нуля (не часто), потом поднимается понемногу до 40 - 50-ти мегабит.
################################### #####
################################### #####
################################### #####
################################### #####
################################### #####
################################### #####
#################################### |#####
#################################### ######
#################################### ######
#################################### ######
#################################### ###### Curr: 18.97 MBit/s
#################################### ###### Avg: 38.27 MBit/s
#################################### ###### Min: 0.00 Bit/s
#################################### .###### Max: 49.40 MBit/s
#################################### ####### Ttl: 3.78 GByteOutgoing
#######################################
#######################################
####################################### #
####################################### .#
####################################### |. ##
####################################### #####
#######################################. #####
######################################## #####
######################################## .#####
######################################## ######
#########################################|. ######
##########################################| |. ###### Curr: 8.92 MBit/s
##########################################|. ###### Avg: 11.73 MBit/s
##############################################. ###### Min: 0.32 kBit/s
################################################### ###### Max: 15.12 MBit/s
###################################################.####### Ttl: 1.34 GByte
Сорри, у меня на данный момент идей нет. Если что-то прийдёт в голову, то я ещё напишу.
Да, понял. Спасибо в любом случае!
бр-р-р....
Во-первых Вы бы для начала хоть немного "отрисовали" нам структуру вашей сети-серверов, что-ли ;)
Во-вторых почти обидное детское замечание - оставьте спидтест Вашим пользователям. Для Вас есть netstat, htop, wget и прочие подобные штуки ;)
В третьих пошли бы по порядку - на этой машинке, где у Вас крутится шейпер - можете проверить качество внешнего канала - например выполнив wget с ближайшего ftp-сервера с жирным каналом и посмотрев результаты через netstat (при отключенных шейпере и клиентах)?
В общем давайте вначале пункт первый, а затем попробуем локализовать проблему... А то слишком много вариантов - от глючных сетевух и маленького буфера для очередей до криво настроенного ната и шейпера ;)
>[оверквотинг удален]
> что-ли ;)
> Во-вторых почти обидное детское замечание - оставьте спидтест Вашим пользователям. Для
> Вас есть netstat, htop, wget и прочие подобные штуки ;)
> В третьих пошли бы по порядку - на этой машинке, где у
> Вас крутится шейпер - можете проверить качество внешнего канала - например
> выполнив wget с ближайшего ftp-сервера с жирным каналом и посмотрев результаты
> через netstat (при отключенных шейпере и клиентах)?
> В общем давайте вначале пункт первый, а затем попробуем локализовать проблему... А
> то слишком много вариантов - от глючных сетевух и маленького буфера
> для очередей до криво настроенного ната и шейпера ;)wget мне ничего не даст, закачает в любом случае потому что тянет в один поток. htop я показывал там практически всегда 0 по всем важным пунктам контроля. Netstat ошибок не выявляет - нет дропаных пакетов. Думал по поводу проверки сети с помощью iperf но условий для теста пока не создал. Шейпер и нат исключены в поиске неисправности, потому что шейпер отключал, результат не изменился, а NAT находится на другой машине под Linux и с ним по определению ничего быть не может, так как аналогичная конфигурация на другой машине выдаёт 95 мегабит легко без напряга и потерь.
Глючные сетевые и маленький буфер это очень интересно, можно чуть подробнее по этим пунктам? Как посмотреть, где крутнуть?
Спасибо!
Видимо таки нельзя. Ну да ладно и на том спасибо всем кто откликнулся. Дальше сам поплыву.
Если у кого то возникнут подобные проблемы ищите ответ в этих статьях:http://markmail.org/message/vtxhbattmuubmvoo
http://www.opennet.me/base/net/tune_freebsd.txt.htmlОтчасти мне это помогло, но конкретно моя проблема оказалась в неисправном оборудовании. Еще раз всем спасибо, Opennet лучший ресурс для системного администратора.