Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: tester 14. 01. 2018, 15:41:15
-
Zdravim, testujem routing na Linux-e a dostal som sa na celkom zaujimave cisla - 10Gbps / 14.4 mil. pps.
Problem ale nastava ak generujem pakety z jednej zdrojovej IP na jednu cielovu IP. Vtedy mi nastavaju RX dropy.
Mam to postavene na 16 jadrovom Intely, sietovka ma 16 IRQ ktore som staticky napinoval na jednotlive jadra. Laboval som s ring size, atd. vsetko som odladil a rozdelovanie zataze funguje uplne nadherne ak je aspon 10 zdrojovych adries. Ak je menej zdrojovych adries, vsetko ide na jedno IRQ ktore vytazi jedno jadro na 100% a nastavaju dropy.
Predpokladam, ze je to prave architekturou spracovavania paketov ked sa to nedokaze rozdelit na viacero jadier prave kvoli jednej zdrojovej IP.
Vie niekto potvrdit, ze je to prave mojou teoriou alebo sa to da dalej "tuningovat"?
Dakujem.
-
Zdravim, testujem routing na Linux-e a dostal som sa na celkom zaujimave cisla - 10Gbps / 14.4 mil. pps.
Problem ale nastava ak generujem pakety z jednej zdrojovej IP na jednu cielovu IP. Vtedy mi nastavaju RX dropy.
Mam to postavene na 16 jadrovom Intely, sietovka ma 16 IRQ ktore som staticky napinoval na jednotlive jadra. Laboval som s ring size, atd. vsetko som odladil a rozdelovanie zataze funguje uplne nadherne ak je aspon 10 zdrojovych adries. Ak je menej zdrojovych adries, vsetko ide na jedno IRQ ktore vytazi jedno jadro na 100% a nastavaju dropy.
Predpokladam, ze je to prave architekturou spracovavania paketov ked sa to nedokaze rozdelit na viacero jadier prave kvoli jednej zdrojovej IP.
Vie niekto potvrdit, ze je to prave mojou teoriou alebo sa to da dalej "tuningovat"?
Dakujem.
Tohle bude asi zbytecny post, predpokladam, ze vetsinu z toho jsi uz zkousel.
Presto zkusim:
https://blog.cloudflare.com/how-to-receive-a-million-packets/
https://blog.cloudflare.com/how-to-achieve-low-latency/
https://01.org/linux-interrupt-moderation
https://www.youtube.com/watch?v=3XG9-X777Jo
https://software.intel.com/en-us/articles/setting-up-intel-ethernet-flow-director
Co jsem pochopil tak prave to linkovani IRQ natvrdo je problem a je potreba dalsi proces, ktery dokaze rozhodit zatez ale zaroven poskladat ty data dokupy.
-
Dakujem za odpoved. To co si pisal vyssie som uz skusal vsetko. To co simulujem asi realne nikdy nenasatane aby som mal jednu zdrojovy IP + zdrojovy port voci jednej cielovej IP a cielovemu portu. Inak sa to rozklada bezproblemov.
Este pre porovnanie odskusam DPDK.
;)
-
Dakujem za odpoved. To co si pisal vyssie som uz skusal vsetko. To co simulujem asi realne nikdy nenasatane aby som mal jednu zdrojovy IP + zdrojovy port voci jednej cielovej IP a cielovemu portu. Inak sa to rozklada bezproblemov.
Este pre porovnanie odskusam DPDK.
;)
Nepoznam velmi linux network stack do hlbky, ale malo by to fungovat nejako takto. Mas komunikaciu, ta ma nejake data, z tych dat robis nejaky hash (na zaklade src/dst ip mac, alebo tuple of five) modulo pocet IRQ a dostanes index do IRQ a ten by sa mal pouzivat. Ak si to natiskal surovo, tak ti to nepojde.
DPDK ti nespravi ziaden performance, pokial nechces programovat TCP stack, pozri sa na pktgen (je napisany v DPDK). Ale PKTGEN neobsahuje session ( aspon neobsahoval).
-
Jasne, tomu rozumiem. Ja som staticky jednotlive IRQ sietoveho rozhrania naPINoval na jednotlive jadra aby som mal 1 IRQ = 1 jadro. Tym dokazem dosiahnut idealneho vytazenia CPU. :)
-
Jasne, tomu rozumiem. Ja som staticky jednotlive IRQ sietoveho rozhrania naPINoval na jednotlive jadra aby som mal 1 IRQ = 1 jadro. Tym dokazem dosiahnut idealneho vytazenia CPU. :)
Neviem aku mas kartu a ci vie nejaky pokrocily offload, ale ked ano tak sa pozri na offload do urovne L4 -> hashuj cely socket, vtedy by distribucia mala byt rovnomerna pre kazdu session.