Wpis z mikrobloga

#networking #sysadmin #linux

jest tu jakiś fachowiec od sprzętu sieciowego pod linux?

Jak ktoś powie sposób który zadziała na Linux/Debian (bez wymiany sprzętu) to na p--o 100 zł jako #bitcoin.

Karta sieciowa ma 2 wkładki SPF, system widzi ją jako 2 karty (i lspci pokazuje też jako dwa urządzenia), producent pisze wyraźnie iż karta wspiera 20 Gbps jako full duplex. Wkładki są 10 Gbps.

Posyłanie przez wkładkę 1 (np TCP, UDP, cokolwiek) daje około 10 Gbps. Przez wkładkę nr 2 - tak samo.

Problem: ale jak się posyła naraz przez obie to nie jest 10+10, lecz około 6+6 Gbps.

Co NIE pomogło:

mtu na 9000 oczywiście jest ustawione
firmware zamknięty jest wgrany i system go ładuje na starcie
ethtool -g ustawienie tx ring (i tak był maksymalny)
ethtool -K różne opcje łączenia przerwań - nie pomagają ani mniejsze ani większe -frames ani -usecs
lspci mówi iż stan połączenia to 5 Giga transakcje na sec i szyna to x8 więc powinno być chyba dobrze

przy okazji, karta jest w stanie równocześnie odbierać 6+6 tak samo jak wysyła 6+6 więc to nie jest np za słabe CPU albo zapchanie szyny PCIe (chyba że PCIe ma osobny ruch w obie strony, to może ruch w górę jest zapchany?).
  • 56
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@koob: ale co dokładnie to ma zrobić?

Wiem że można dać CPU affinity na proces wysyłający, testuję z 2 senderami albo 4. Dając każdemu z nich jeden konkretny rdzeń nic się ogólnie nie zmienia.

Czy proponujesz jakieś ustawienie affinity dla jakby sterownika tej karty, lub handlera IRQ tej karty lub coś?
  • Odpowiedz
@ManamanaTuriruriru: mówisz o ustawieniu card bounding tak jak np https://wiki.debian.org/Bonding ?

naprawdę bounding miałby dać prędkość większą niż osobne pary linków osiągają gdy są osobnymi nie zboundowanymi kartami, usuwając jakoś "magicznie" problem?

(pytam bo może nie ma sensu nawet ustawiać tego jeżeli to tylko "wrappuje" normalne wysyłanie i nie ma szans być szybsze niż suma par dwóch normalnych kart)
  • Odpowiedz
też sprawdzone, już włączony był loadballancing.


Właśnie chodzi o to by nie unieważniać cache CPU jeżeli to nie jest konieczne. Balansując IRQ lub procesy dokunujesz context switch który sam w sobie jest kosztowny. Jak walczysz o każdy bit wydajności wydajności to proces i IRQ karty powinny być na tym samym CPU ponieważ uzgadnianie dostępu do pamięci pomiędzy CPU też nie jest bezkosztowe.

jaka opcja/komenda top?


@
  • Odpowiedz
@m00n: męczymy też support HP ale już jakiś Raj Koothrappali czy tam inny z Indii odpisał że karty HP® są do używania w serwerach HP® i z PC nie pomoże xddd.

Jak się uda to napiszę. Coś się obawiam że mnie oszukali banda decydentów Polskich z tym 40 Gbps aggregated (2 dir * 2 porty * 10), albo że to nie na sterach linuxowych albo c--j wie co
  • Odpowiedz
Balansując IRQ lub procesy dokunujesz context switch który sam w sobie jest kosztowny.


@maniac777: dlatego przypisuje sie irq do rdzenia przez smp_affinity.
  • Odpowiedz
@decentralizacja: Wiesz co... zaskakujące jest to, że z topa nie wynika by czegokolwiek brakowało. Spodziewałem się że będzie choć podniesione %hi (Hardware Interrupts), może %si (np firewall) a tutaj plaża. Procesy utylizują raptem 25% pojedynczego rdzenia więc to nie przerwania i nie CPU są wąskim gardłem, wypada szukać innych przyczyn. Co to dokładnie za karta? (model) i co to dokładnie za komp?
  • Odpowiedz