использование прерываний сетевыми устройствами
Доброго времени суток!
Имеется у меня VPN сервер (pptp), с загруженностью в среднем 150-200 подключений одновременно (в часы пик - 300-350 подключений). Система стоит на ядре 2.6.23-r3, конфигурация железа следующая, процессор - Core2 Duo E4500 @ 2.20GHz. Сейчас через сервер течет ничтожное количество трафика - 30 Мбит/сек, из ПО крутится только сопсно сам pptpd, считалка трафика ipcad, iptables да скромная утилитка, которая мониторит RAID контроллер. при всем этом загрузка процессора даже в часы пик довольно невелика, но вот load average и показатели прерываний внушают беспокойство: первое колеблется около 4-5%, аппаратные прерывания - около 10% а вот программные временами зашкаливают за 25% но даже во время практически абсолютного простоя не опускаются ниже 1-2%. Может я конечно и ошибаюсь, но считаю, что показатели для такой системы великоваты,
отсюда первый вопрос, который хочу задать, так ли это? Или показатели вполне нормальные? И если нет, то где можно это подкрутить в лучшую сторону?
И все бы ничего, но вся загвоздка в том, что на ближайшей неделе планируется увеличение проходящего объёма трафика почти в 10 раз! (скорость будет достигать 250-300 мбит/сек) и в связи с этим я очень обеспокоен за функциональность системы, отсюда второй вопрос,
посоветуйте, какие затырки могут меня ждать и на какие подводные камни можно будет наткнуться? (100 мбитную сетевуху сменю :) )
И еще кое что... Хотя первое время увеличется только проходящий поток трафика, но далее довольно быстро (я почти уверен) начнет расти количество активных ppp сессий, поэтому третий вопрос
кто может подсказать, основываясь на личном (или не на личном но на 100% достоверном) опыте, сколько клиентов может стабильно (без обрывов и дропания сессий) держать одна pptp машина и на что надо обратить внимание, чтобы машина эта работала соответствующим образом? (может какие нибудь особые настройки, патчи к ядру, прочие рекомендации...)
А в заключении хотел еще поинтересоваться, мож кто подскажет, на счет интерфейсов ppp (в инете ничего нагуглить неудалось): раз ppp считается физическим сетевым устройством, эмулируясь драйверами ядра, то значит что как и любое другое сетевое устройство он должен генерировать прерывания, а вопрос собсно в том, так ли это? А если так, то как и где можно все это дело настраивать и/или оптимизировать? Ибо при наличии в системе 400-500 интерфейсов, каждый из которых генерирует прерывания невпопад, боюсь предположить даже, как оно отразится на системе...
Заранее спасибо за помощь и пожалуйста, не ругайте строго если сказал что нибудь не шибко умное :)
- Для комментирования войдите или зарегистрируйтесь
Я не суперкомпетентен в
Я не суперкомпетентен в данном вопросе :) , но у нас когда-то все упиралось в дешевые реалтековские сетевые карты. Если не ошибаюсь, меняли на 3C905. Вроде. Но это 100-мегабитки. Тебе при трафике в 300 мегабит, по идее, не подойдут :)
Но симптомы были те же самые - дикая загрузка процессора именно прерываниями... После замены сетевых граничный маршрутизатор еще несколько лет беспроблемно тянул несколько сотен активных пользователей, больше загрузка не поднималась.
...а чем же мы это смотрели? заглянул сейчас в top - или поменяли названия, или не туда смотрю... где там загрузка процессора прерываниями? забыл...
PS. Еще вот что выкопал:
ТЕСТИРОВАНИЕ СЕТЕВЫХ ИНТЕРФЕЙСНЫХ АДАПТЕРОВ FAST ETHERNET
http://195.38.17.170/greenstone3/sites/localsite/collect/ksrtu3/index/assoc/HASH1e81.dir/doc.pdf
Старое, но с предельно понятными графиками.
И еще:
http://www.compress.ru/article.aspx?id=11513&part=index11ext1
В семействе адаптеров 3Com EtherLink используется технология, известная как Parallel Tasking II, что позволяет достичь высокой пропускной способности при низкой загрузке процессора. Технология Parallel Tasking II подразумевает одновременное (параллельное) выполнение нескольких задач. Повышение производительности адаптера в данном случае достигается за счет одновременного выполнения операций считывания данных и передачи их на PCI-шину. В ранних версиях PCI-чипсетов, в которых не использовалась технология Parallel Tasking II, буфер данных имел размер 64 байт, поэтому для передачи полного пакета данных длиной 1514 байт требовалось 24 операции взаимодействия с шиной, что приводило к высокой загрузке процессора. Использование технологии Parallel Tasking II, реализованной в новых версиях PCI-чипсетов, позволяет передавать полный пакет Ethernet непрерывным потоком данных за одну операцию ввода/вывода с PCI-шиной, что уменьшает загрузку процессора.
Кроме того, использование технологии Parallel Tasking II снижает количество вспомогательных циклов ввода/вывода с PCI-шиной, поскольку некоторые операции выполняются одновременно.
В общем, мне кажется, что нужно искать СОВРЕМЕННЫЕ сетевые платы с такими возможностями. Из прайса их выделить легко: они раз в 10 дороже реалтека ;) Разумеется, только "по цене" покупать глупо, надо бы в Сети уточнять возможности данной конкретной карты ;)
Спасибо большое, статьи
Спасибо большое, статьи обязательно почитаю, но хочу сказать, что дикое количество прерываний мы уже проходили, причем как раз из-за этих Realtek'овских чипов :) Проблема тогда решилась временно сборкой драйвера с использованием NAPI что немного сгладило негатив, а затем и вовсе заметы карточки на intel 82572EI которая вобщем то не такая уж и плохая :). Но сейчас то эти пресловутые прерывания опять стали расти, причем непонятно откуда... И главное для меня понять, в чем же дело? Можно конечно тыкаться в слепую, поставить ..надцатиядрёный проц, ...габитные сетевухи с обоих сторон, но такой подход был бы приемлем, если бы это был мой личный сервер, а т.к. речь идет о работе то моё руководство совсем не разделяет такого подхода :) ему бы подешевле да поэффективнее. Потому и хочется выяснить, может тотальная замена всего это не выход? Или не самый лучший выход? Быть может достаточно подкрутить какую либо настройку и все будет норм... Или вдруг так получится, что сейчас я сделаю апгрейд, а через год-другой эта проблема меня опять настигнет, т.к. я так и не узнал сути? Я сам тоже не особо разбираюсь во всех этих прерываниях, но чисто по логике считаю, что хоть по конфигурации у меня и не самый продвинутый сервер, но поток в 30 Мбит/сек это, согласитесь, смешная цифра для него...
1) Нормальные показатели для
1) Нормальные показатели для десктопа :) и древнего ядра. Уже лет 10 как производительность х86 и клонов на данных задачах упирается не в частоту процессора , а в кол-во прерываний,
Что помогает : увеличение кол-ва сокетов под CPU и L1/L2 кэша, наличие L3 помогает ещё сильнее :), ну и примочки на картах для сплита пакетов и вынесения ARP на карту.
2) ИМХО, 250-300 мбит/сек, по простой PCI топикстартер хм, зае... проталкивать в данном случае. Затыки оч просты: потери пакетов, ступор машины при недогрузке проца .
3) сколько клиентов может стабильно .. ; только в в бою провериш, сильно зависит от вида и качества траффика.
П.С Пора вам,ИМХО, начинать думать о железках на килобаксы, ибо нормальный сервак сопоставим по стоимости с ними.
П.С www.nag.ru/forum рекомндуется для ознакомления.Тaкже покурить маны mpd на FreeBSD :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
1) Я понимаю, что упирается
1) Я понимаю, что упирается именно в прерывания :) иначе не обратился бы сюда. Но чем лечить то? Вот где главный вопрос. Что использовать вместо x86? amd64? думаю, проблемы это не решит... А на какую нибудь циску за пару тройку ычяч олларов моё руководство расщедрится только наверное в случае атомной войны... :'( Также, то что вы пишите про апгрейд - я сам догадываюсь, что поможет, но действительно ли это правильное решение? Согласитесь, 30 Мбит/сек это просто детский поток трафика, а проблемы уже возникают, хотя конфигурация компа для маршрутизатора достаточно неплохая. И сопсно возникает резонный вопрос, а когда этот поток станет 300 Мбит, спасет ли добавление второго проца и прочие вложения в навороченные сетевухи? Я понимаю конечно, что решение проблемы "в лоб", путем увеличения мегабайт и мегагерц всегда было самым надежным способом, но когда речь идет о чужом кармане то такие способы нуждаются в справедливом обосновании, а учитывая вышеописанные условия обоснование выглядит достаточно неубедительным.
2) Незнаю не знаю... хотя мы и используем PCI Express сетевуху (вторая тоже будет в ближайшие дни заменена на PCI-Ex) но на сколько мне известно пропускная способность PCI совсем чуток недотягивает до 1 Гбита/сек. Но быть может тут есть какие то особенности? Вы не могли бы подробнее описать эти подводные камни?
3) Вид трафика самый обычный и разнообразный... веб, торренты, онлайн игры, немножко ip телефонии... вобщем то, чем пользуются обычные люди в повседневной жизни :) Но сопсно не хочется так прямо идти в "бой", не разузнав подробности :) потому и спрашиваю, кто сталкивался с подобным и у кого как работало?
По поводу www.nag.ru/forum бывал там, но как-то неуверен... какие-то там детские обсуждения происходят... ничего более менее точного, везде надежда на русский "авось" :) А что до mpd то это немножко не в ту степь уже :) Зачем уж так сразу говорить о смене платформы? Сейчас то речь идет о том, есть ли возможность путем доработки заставить заработать как надо уже существующее.
Вдумчиво прочитал еще раз
Вдумчиво прочитал еще раз описание сетевухи на intel'овском сайте - навело на мысль :) Помимо прочего там говорится о возможности сетевой карты использовать некую продвинутую систему контроля над прерываниями (дословно "The controller includes advanced interrupt-handling features...") а также что сетевая карта сама умеет считать контрольную сумму при отправке и при получении (...the controller offloads tasks from the host, such as checksum calculations for transmission control protocol (TCP), user datagram protocol (UDP), and Internet protocol (IP)) но сопсно главный вопрос встал в том, используются ли эти возможности по-умолчанию? Как проверить, используются они или нет? Драйвер в ядре не имел никаких дополнительных опций, а дополнительный софт не ставился. Кто работал с подобной сетевой картой прошу отписаться :)
И все же, как дело обстоит с "виртуальными" интерфейсами ppp? Генерируют они прерывания или нет? А если да, то где это дело можно "покрутить"? Я признаю, что мысль может быть дикой, но вдруг всетаки прерывания используются?
Да , NAPI давно в ядре, но у
Да , NAPI давно в ядре, но у вас оно в этом отношении старое ядро (даже очень), поднимите хотя бы до .29 (конфигурить с 0 и вдумчиво)
Контрольные суммы давно считают почти все карты.
А "с "виртуальными" интерфейсами ppp? " ; Хм, а как по вашему, реализуется обработка ядром внешних событий при условии многозадачности?
Естественно, генерируют, софтовые естественно.
Смена платформы это преход на железки, не обязательно на кошки, тот же Alcatel процентов на 20 дешевле, тем более вам навороты ИМХО, не нужны
при данной задаче ,подойдет б/у
У вас NAT есть ?
P.S Вы провайдеры ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Спасибо, ядро попробую
Спасибо, ядро попробую поднять, ибо в текущем никакого упоминания о NAPI нету, но хочу спросить, ведь эта карта должна поддерживать Adaptive Interrupts, сопсно, не будет конфликта с NAPI? Про эту технологию читал, что если она поддерживается, то полностью на аппаратном уровне и софтварная регулировка невозможна, подскажите, так ли это? И можно ли вообще убедиться на 100% (какой нибудь программой) что эта технология поддерживается и используется? И еще хотелось бы поинтересоваться: бывает ли NAPI-патч для драйвера PPP?
Переход на интелектуальные железки не очень желателен по следующим основным причинам:
1) жадное руководство :)
2) новая железка = новые подводные камни
3) зависимость от производителя: каждый раз когда понадобится чего-нибудь новое прийдется обращаться к изготовителю за патчами, прошивками и т.п.
4) очень хотелось бы всетаки заставить как следует работать то, что сейчас имеется, имхо в это были вложены силы и деньги...
По поводу последних вопросов, да, я провайдер но NAT не использую, имею свою автономную систему адресов
P.S. 10-кратное увеличение
P.S. 10-кратное увеличение пользователей... и жадное руководство :) хихихи...
По теме, тут вообще то вопросик по NAT пролетал, я бы порекомендовал уйти от использования ppp вообще и использовать NAT или вообще роутинг (если это конечно возможно)... хотя с точки зрения потенциальной секурности это похуже, но скорость точно поднимется.
Предложение сменить ppp на что-либо другое сложно? как себя ведет OpenVPN на высоких нагрузках? Понимаю клиентам (точнее техподдержке) может не понравиться такая кардинальная смена ПО... но. А что по поводу простых ip seq (tunnel)? Может еще какие варианты есть?
это я к том, что если схема тормозная изначально, то решается оно скорее всего железным/денежным вливанием.
Цитата: По поводу последних
BGP тоже на третьем пне крутится ? :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
>>конфигурация железа
>>конфигурация железа следующая, процессор - Core2 Duo E4500 @ 2.20GH
Ну процессор в данномм случае не очень интересен. В цисках камни много скроменй, но несмотря на это с задачами роутера они справляются. Материнка играет немаловажную роль. Нужна именно серверная архитектура, ибо современные десктопные нацелены на производительность видеоподсистемы в ущерб прочим, а видео на роутере, как бы, и не нужно совсем. Неплохие статейки на этот счет есть на сайте интела, где достаточно доходчиво объясняют разницу. Тут уже говорили о серверных сетевых картах. Честных. Железных. А не те полусофтверные поделки, что стоят по 200 руб на китайском развале. Немаловажную роль играет так же дисковая подсистема. Особенно при использовании лвм или софтверных(полусофтверных) рейдов.Ну и разделение задач ессно. Как правило на подобные "роутеры" навешивают фтп, апач, торренты и прочую дребедень, которая роутеру принципиально не свойственна. Все это при полусофтовом железе может отвлечь роутер от основной работы - пропускать пакеты в обоих направлениях.
Вобще то роутер пропускает
Вобще то роутер пропускает пакеты >2 направлений и обычно default routre
не имеет =)
P.S Про деньги сказано выше, в такой постановке (денег нет совсем) дальше обсуждать не могу.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)