Re: lug-bg: Intel E1000 driver tunning
- Subject: Re: lug-bg: Intel E1000 driver tunning
- From: Vasil Kolev <vasil@xxxxxxxxxx>
- Date: Thu, 08 Jun 2006 23:23:37 +0300
- Delivered-to: lug-bg-list@xxxxxxxxxxxxxxxxxx
- Delivered-to: lug-bg@xxxxxxxxxxxxxxxxxx
В чт, 2006-06-08 в 23:34 +0300, Daniel Ivanov написа:
> Има машина през която минава трафика на клиенти(1000+), шейпи се и
> евентуално НАТ-ва.
> Всичко ток и жица, обаче в един прекрасен момент packet interrupting се
> вдига непоносимо. Изяжда целия процесор.
> На около 280000 пакета/секунда се уцеща забавяне в работата(network
> delays) и idle-а отива на ~5%.
>
> 0000:02:09.0 Ethernet controller: Intel Corp. 82541GI/PI Gigabit
> Ethernet Controller
> 0000:02:0c.0 Ethernet controller: Intel Corp. 82545GM Gigabit Ethernet
> Controller (rev 04)
>
> Това са двата важни interface-a, през които минава трафика.
>
> Досегашен investigation определи мрежовите карти като източник на
> небивалите прекъсвания.
> Опитах с и без NAPI на е1000 driver-a. В момента е без NAPI и с
> ITR=3200,3000.
> Някой има ли идеи как да се намали натоварването на процесора.
> Ориентировъчен трафик при 280000 пакета - 190мбит/с. Машината е
> p4(northwood) @ 2.8Ghz с 2GB ram.
>
> Евентуални процедури оттук нататък са изместването на NAT-a от реално
> адресиране или NATting-а да се прави на друга машина, за да изключа
> connection tracking-a на тази. Пакетите минават по минимален път и
> попадат в HTB+esfq qdiscs.
>
Хм. Моите наблюдения, докато мизерствах да реализирам нещо директно в
e1000 драйвера бяха, че receive interrupt-ите с NAPI никакъв проблем не
са (реално картата може да поема 1gbps на малки пакети на wirespeed), но
изпращането и разказва играта. Така и не намерих време да го боря
проблема, но моите идеи са в общи линии следните:
1) NAPI. без него е бая зле.
2) Сложи profiling, по някога nat-а може да е убийствен (поне според
мене той т е проблема).
3) Има мръсни трикове за наместване на txinterrupt-и и rxinterrupt-и,
може да си поиграеш с тях.
4) Колко процесора имаш, и какви? Може да се правят номера с
hyperthreading-а и разхвърлянето на едната карта на едното парче от
единия процесор, другата - на другото, понеже в крайна сметка shаre-ват
cache.
Attachment:
signature.asc
Description: =?iso-8859-5?Q?=C2=DE=D2=D0?= =?iso-8859-5?Q?_=D5?= =?iso-8859-5?Q?_=E6=D8=E4=E0=DE=D2=DE?= =?iso-8859-5?Q?_=DF=DE=D4=DF=D8=E1=D0=DD=D0?= =?iso-8859-5?Q?_=E7=D0=E1=E2?= =?iso-8859-5?Q?_=DE=E2?= =?iso-8859-5?Q?_=DF=D8=E1=DC=DE=E2=DE?=
|