[BSD] Ethernet kartya

Mohacsi Janos mohacsi at niif.hu
2004. Május. 17., H, 17:51:24 CEST




On Mon, 17 May 2004, Marton Kenyeres wrote:

> On Monday 17 May 2004 17:16, Zsolt Sztankay wrote:
> > Szia!
> >
> > > Azert a 9MB/s = 72Mb/s mar nagysagrendileg kozeliti a halozat max
> > > sebsseget.
> >
> > Miert ne legyek maximalista? ;-)
> >
> > > Szerintem siman lehet a szuk keresztmetszet a vinyo valamelyik oldalon.
> > > (Mondjuk a te UDMA33-as quantumod). Ha vinyon belul masolsz, mekkora
> > > sebesseget tudsz elerni?
> >
> > Ezt megnezem, most nem vagyok a gep kozeleben.
> >
> > > Mas: amennyire tudom (a szakertok majd kijavitanak) a DMA valami egesz
> > > masra
> > > valo mint az interupt. Az irq-val azt jelzi a kartya a rendszernek,
> > > hogy
> > > valamit kene csinalni, pl. tele van a buffer. Hogy aztan azt DMA-val
> > > vagy
> > > postagalambbal viszik at az adatot a memoriaba, szinte mindegy :)
> >
> > Lehet, hogy rosszul fejeztem ki magam, tudom a DMA mit jelent, csak azt
> > nem tudom, a net kartyak hogyan kezelik a beeso adatokat. A DMA esetben
> > arra gondoltam, hogy a kartyanak a kernel megmond egy memoriateruletet,
> > a kartya oda pakolja a cuccokat es dob egy interruptot, amikor
> > "befejezte" a memoriateruletet. Utana a kernel az ata drivernek szol,
> > hogy DMA-val tolja ki azt a memoriateruletet vinyora. Ha tobb buffered
> > van, akkor parhuzamosan lehet leszedni es felirni a vinyora. Most
> > szerintem a kartya x kilobajtos memoriajaba tolti az adatokat es akkor
> > szol amikor az tele van, vagy egyszeruen packetenkent szol. Ekkor a
> > kernel a halokartya memoriajabol pakolja at a cuccokat vinyora. Vagy
> > rosszabb esetben kartya memoria, gep memoria es vinyo a sorrend.
> > DMA-val egy lepcsot meg lehetne sporolni.
> >
>
> Ize... szerintem nagyon rossz lenne, ha a halokartyan erkezo packetek egybol a
> diszkre csapodnanak be.
>
> Valahogy ugy nez ki a dolog, hogy bejon a nyers packet, az atkerul a
> memoriaba, ott a kernel szetszedi az ethernet framet, atmegy az egesz az IP
> input rutinokon, firewallon, TCP stacken, socket alrendszeren stb, es vegul
> kikerul a userlandba a megfelelo processnek, amelyik az adott protokolnak
> megfeleloen dekodolja/feldolgozza az adatot, es amit kapott visszakuldi a
> kernelbe, hogy `na _ezt_ kene kiirni a filesystembe`. (Innentol meg eleg
> sokfele mehet az adat a kulonbozo filesystem kodokon at pl. vissza a
> halozatra ha mondjuk a file amibe irsz egy NFS mountolt fs-en van.)
>
> Osszegezve: szerintem nem sokat lehet ezen sporolni.

Azert vannak erre torekvesek. Lehet meg tuningolni a dolgokat. A kernel es
user tartomany kozott nem kell masolni az is tetemes sebesseg novekedest
jelenthet.  Erdemes megnezni http://people.freebsd.org/~ken/zero_copy/
oldalt, habar mar eleg regi a dolog es nagyresze a kernelben van mar...

Udv:

Janos Mohacsi
Network Engineer, Research Associate
NIIF/HUNGARNET, HUNGARY
Key 00F9AF98: 8645 1312 D249 471B DBAE  21A2 9F52 0D1F 00F9 AF98




További információk a(z) BSD levelezőlistáról