Funkční 10GbE řešení pro TrueNAS Scale

Funkční 10GbE řešení pro TrueNAS Scale
« kdy: 30. 10. 2024, 12:55:13 »
Ahoj,

Hladam funkcne, cenovo rozumne 10 GbE riesenie na prepojenie TrueNAS Scale a workstation PC s WIN11, ktore je realne schopne saturovat 10 GbE linku.

Kupil som z eBay 2x OEM INTEL 82599ES X520-DA1, 2x GENUINE Cisco SFP-10G-SR a 2x INTEL E10GSFPSR FTLX8571D3BCV-IT:

Cez iperf3 dostanem z toho max 3.2Gb/s (400MB/s) s Jumbo frame 9000, ostatny tuning kernel parametrov v linuxe ani vo WIN11 nemal markantny vplyv na rychlost.
Testoval som v kartach oba SFP+ moduly (Intel aj Cisco) s rovnakym benchmarkom. CPU utilization je na strane TrueNAS-u do 10% (6-core Ryzen 5600X + 32GB ECC RAM 3200MHz).
Workstation je 16-core Ryzen 9 5950X + 64GB ECC RAM 3200MHz, takze tam je este vacsia vykonova rezerva, tam uzke hrdlo nevidim.
Mam teda podozrenie, ze to rezu cinske "non-GENUINE" komponenty.
Ale ci su na vine cele sety (karty vratane modulov) alebo len karty samotne a moduly su OK, to fakt netusim...

Pekne prosim o radu, prip. navrh riesenia.

M.


Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #1 kdy: 30. 10. 2024, 13:15:23 »
A zapojeny to je jak? Vidim 4x sfp+ modul a 2x 1port kartu.

Zkuste live linux na te w11 masine + iperf3. Pripadne obe karty do te masiny a iperf krizem.

jjrsk

  • *****
  • 518
    • Zobrazit profil
Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #2 kdy: 30. 10. 2024, 13:16:59 »
Celkovy zatizeni CPU je nezajimavy, potrebujes znat zatizeni jednotlivych jader.

Dalsi aspekt budou ty windows, ony maji cosi jako "sitovy profil", a maji tam bydefault nejaky automatismus ktery ma zaridit to, ze tu sit nikdy nezatizis na 100%.

https://borncity.com/win/2023/02/14/microsofts-tcp-mess-how-to-optimize-in-windows-10-11/


RDa

  • *****
  • 2 700
    • Zobrazit profil
    • E-mail
Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #3 kdy: 30. 10. 2024, 14:04:47 »
Zkuste live linux na te w11 masine + iperf3. Pripadne obe karty do te masiny a iperf krizem.

A jak tam nastavujes adresy? Protoze kazdy IP stack, kdyz zjisti ze adresa je lokalni tak to veme naprimo a neposila to vubec do sitovky. K testovani jsem potreboval vzdy dva separatni kompy, nebo dve virtualky.

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #4 kdy: 30. 10. 2024, 14:58:42 »
Jaký parametry měl ten iperf, použil jste u klienta něco jako '-P 15' ??


jjrsk

  • *****
  • 518
    • Zobrazit profil
Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #5 kdy: 30. 10. 2024, 16:10:08 »
A jak tam nastavujes adresy? Protoze kazdy IP stack, kdyz zjisti ze adresa je lokalni tak to veme naprimo a neposila to vubec do sitovky. K testovani jsem potreboval vzdy dva separatni kompy, nebo dve virtualky.
Nevim jak to dela on, ale tusim ze network namespaces by na to fungovat melo. Vpodstate tim vytvoris virtualni sitovej stack, takze on nevi, ze to je na stejnym HW.



Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #6 kdy: 30. 10. 2024, 23:27:31 »
Testoval som nasledovne:

1. WIN11 PC workstation oproti TrueNAS serveru
2. WIN11 PC workstation oproti dalsiemu WIN11 PC
3. Ubuntu Live na workstation oproti TrueNAS serveru

Mam 2 pary SFP+ 10 GbE SR optickych modulov: Cisco a Intel, kombinoval som Cisco -> Cisco, Intel -> Intel.

Iperf3 v konfiguracii:

Server (TrueNAS server), IP: 10.100.100.200:
iperf3 -s -p 5001

Klient (PC workstation s WIN11 / Ubuntu Live), IP: 10.100.100.1:
iperf3 -c 10.100.100.200 -p 5001 -t 30 -> vysledok [SUM] 3.25 Gbits/sec
iperf3 -c 10.100.100.200 -p 5001 -t 30 -P 16 -> vysledok [SUM] 3.22 Gbits/sec
iperf3 -c 10.100.100.200 -u -p 5001 -t 30 -b 0 -> vysledok [SUM] 1.73 Gbits/sec

Skusal som aj spustit 3 instancie iperf3 server na TrueNAS-e v 3 konzolovych oknach, samozrejme na roznych portoch a
z workstation-u 3 klientov, vysledok bol v sucte cca 3.2 Gbits/sec.

Zataz jadier (6+6 HT) TrueNAS serveru cez htop bola variabilna, system dynam. prideloval jadra, max. do 10%.

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #7 kdy: 31. 10. 2024, 07:16:22 »
iperf3 má nějaké problémy s Windows a neukazuje dobře

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #8 kdy: 31. 10. 2024, 08:13:36 »
Hele nepadla tady jedna zásadní věc: vidíte na počítadlech vadně přijatých paketů (err) na síťovkách číslo vyšší než 0 ?
Pokud ano, hledejte problém na fyzické vrstvě (transceivery, vlákna, kompatibilita transceiverů proti síťovkám).
Pokud je tam nula, tak máte fyzickou vrstvu nejspíš v pořádku.

Tady někdo popisuje podobný problém a udává velmi podobné hodnoty jako Vy - a pak si všiml, že má 10Gb síťovku linknutou na PCI-e jenom šířkou x1 :-)

lspci -s 03:00.0 -vv | grep LnkSta:
             LnkSta: Speed 2.5GT/s (ok), Width x1 (ok)

Ve vašem případě by nejspíš lspci navíc přidalo kyselý dovětek "downgraded" = že se zařízení dohodlo pod svoje možnosti.
Číslo zařízení jsem zadal natvrdo, abych dostal hodnotu jenom pro své konkrétní zařízení. Jedná se vlastně o pozici na sběrnici, najdete ji ve výpisu lspci bez parametrů.

Testoval bych předně linux proti linuxu. Oddělíte tak windowsové špecifiká od skutečných HW problémů.

Pak mě napadá, zakázat procesoru hlubší C-states. V linuxu na AMD nejspíš processor.max_cstate=1 (nebo i =0, třeba jenom na chvilku). Jinak pro to bývá položka v BIOS SETUPu, ta platí i pro Linux (i pro Windows). Výsledek ukáže tuším turbostat z balíku linux-cpupower (Debian/Ubuntu). A možná bych neváhal vyzkoušet pcie_aspm=off.

Man iperf3 zmiňuje pár dalších zajímavých věcí.

Například, že -P (paralelní streamy) ve skutečnosti jede na jediném CPU jádře, protože iperf3 je jednovláknový :-( takže víc jader tím nevytížíte.

Dále bych zmínil -Z  (zero copy), což by mohlo trochu omezit režii.

Pak jsem si všiml -w/--window -- tady si nejsem jist, zda se uplatní také u UDP. Jinak na TCP by si iPerf měl správnou velikost okna ustálit sám...

Dále manuál zmiňuje možnost, nastavit afinitu k CPU jádru parametrem -A. Mohlo by se hodit, nechat běžet iPerf na jádře, které obsluhuje interrupty od síťovky - viz "cat /proc/interrupts" . Ačkoli je pravda, že hardware síťovek a ovladače se snaží provádět "interrupt amalgamation" (moderation) aby se stroj neudávil jenom obsluhou IRQ. Tohle se děje zhruba od gigabitu výš, na 10Gb hardwaru zcela určitě. Tuším se toho týká keyword NAPI, což je nějaký generický framework linuxového kernelu pro tyhle kejkle - využívají ho drivery síťovek, konkrétně drivery od Intelu ho tuším zmiňují při bootu v dmesg (osobně jsem to pozoroval u gigových síťovek, 10Gb mi tolik rukama neprochází). Jinak se historicky vyskytlo také API zvané netpoll, což je ale asi trochu jiné zvířátko, je třeba ho v aplikacích používat explicitně a iperf3 ho zjevně neumí. Kdoví, zda je to vůbec ještě aktuální - zda to někdy opustilo stádium out-of-tree patche.

Našel jsem takový lehce povrchní starší článek od RedHatu, jak ladili průchodnost (pakety za sekundu) zřejmě na téže síťovce, co máte Vy. Není tam moc zaklínadel v příkazovém řádku, ale jako rozcestník = seznam dalších tipů by to mohlo být použitelné.

jjrsk

  • *****
  • 518
    • Zobrazit profil
Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #9 kdy: 31. 10. 2024, 08:26:06 »
A co takhle zapomenout na iperf a vyzkouset sambu?

Nemam jak bych to testnul vuci desktopovym win, ale serverovy proti tuxi sambe (bez jakyhkoli extra konfiguraci) 10G vpohode saturuji. Je za tim pochopitelne storage ktery da nasobne vic.


Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #10 kdy: Dnes v 10:24:07 »
Podobný test jsem shodou okolností dělal na začátku letošního roku.
Měl jsem 10 ks. Intel X520, připravoval jsem je na instalaci, tzn. testoval jsem různé platformy, kompatibilitu s transceivery a u všech aktualizoval firmware (primárně byla potřeba kvůli podpisům EFI, které některé stroje už standardně vyžadují).
Byly to kousky koupené po Covidu, kdy nebyly rozumně dodatelné jiné karty.

Testoval jsem to tak, že jsem měl dvě HP stanice, jednu relativně aktuální Z4 s Xeonem W7, druhou starou "laboratorní" Z420 s Haswell Xeonem (takže žádný extra rychlík), kam jsem dával karty.
Na obou strojích jsem rozběhl živou Clonezillu (s Debian jádrem) a testoval taky s iperf3. V tomhle prostředí to i s jedním TCP spojením v podstatě bez jakékoliv další konfigurace dávalo 8-10 Gbit, když jsem přehodil na 9k jumbo framy, tak jsem to stabilně dokázal saturovat.
Dává docela smysl si ozkoušet i posílání zpátky (client->server) s přepínačem -R, případně tomu trochu naložit s --bidir.

S Windows 11 (na tom výkonnějším stroji) na jedné straně to už bylo horší. Směr Win->Linux byl v pohodě, ale obráceně jsem končil řádově na 3-4 Gbit, resp. 6 Gbit s jumbo framy.
Po různém ladění a zkoušení výměny jedné síťovky za Mellanox X6, jsem seznal, že je to spíš vlastnost toho jak Windows 11 při zpracování rozhazuje interrupt handlery a následné DPC na jádra CPU a efektivitou toho stacku. Jsou tam nějaká dílčí nastavení toho mechanismu RSS (receive side scaling) - např. na která jádra to scheduluje souvislosti s NUMA nody, ale s Windows 11 na té konfiguraci s W7 Xeonem to nedávalo moc smysl měnit.. vycházelo to víceméně stejně. Samozřejmě nevylučuji, že na nějakém sytému s víc NUMA nody, několika síťovkami, případně větším množství spojení to ladění profilů (Enable-NetAdapterRss a Set-NetAdapterRss v PowerShellu) může dávat smysl, třeba i kvůli celkové zátěži.
Taky samozřejmě nevylučuji, že třeba na Ryzenu s více CCXy, to nějakou roli hrát může a třeba ruční zapinování na konkrétní jádra se může projevit.

Jediné, co to pak opravdu zabralo, a přiblížilo to 10 Gbit bylo navázat iperfem víc spojení přes -P (parallel), pak si to rozházel na příchozí Windows straně na víc jader a opravdu se zvýšila propustnost.

Protože jsem také trochu podezíral Widnows build iperf3, který je pořád tak trochu neofiko s cygwinem, tak jsem zkoušel přesně to, co je zmíněno v předchozím příspěvku. Na Linux straně jsem udělal Samba share nad tmpfs, stroj měl dost RAM, a připojil se tam z Windows klienta (SMB 3.0). Chodilo to výrazně líp než samotný iperf s jedním spojením. Pokud ta aplikace, co četla nebo zapisovala, dokázala naplnit frontu I/O operací (vyšší QD) - tzn. třeba Crystal Disk Mark nebo fio, tak jsem byl s 9k framy víceméně na 8-10 Gbit. Což jsem seznal jako uspokojující pro to, co jsem potřeboval.

Jinak jsem podobně ještě testoval i 25GbE Mellanoxy a novější Intel E810. Tam je to víceméně stejný příběh i v 25GbE režimu, Linux je out-of-box výrazně lepší.
Obě karty také může mít v 10GbE režimu znatelně menší vytížení CPU, zvlášť v UDP spojeních. Což by i dávalo smysl, offloaduje se toho ve výchozím stavu víc než u starší X520.
U X520 bylo ještě jedno nastavení, které něco házelo na Windows (u mě) - Interrupt Modulation, kdy při nastavení high místo adaptive tam byly měřitelně menší fluktuace propustnosti a žralo to trochu míň CPU (což bylo počítám na vrub latenci, ale to mě u tohohle až tak nepálilo).

Takže, pardon za delší příspěvěk. Ale podle toho, co jsem si zkoušel, tak je mi divné že i v prostředí Linux <-> Linux a s 9k framy tu 10Gbit linku nesaturujete. Možná je tam opravdu nějaký bottleneck na PCIe sběrnici, jak píše p. Ryšánek.
Možná má TrueNAS, jako appliance, nějaké výchozí nastavení, co tomu brání.. nicméně, jestli jste zkoušel Ubuntu <-> Ubuntu, tak byste tohle měl vyloučit. Tohle bych se osobně snažil vyřešit jako první.
Špatná SFPčka se mi moc nezdají, reálně jsem moc nezažil, že pokud to chytí link a běží to na obou stranách ve správném režimu, aby to omezovalo rychlost. Ano, viděl jsem samozřejmě nekompatibilní moduly (třeba ty x520 jsou vtipné, s nějakým OEM modulem jsem měl normálně pád driveru a backtrace v kernelu, resp. "zmizení" rozhraní ve Windows), ale jakmile to bylo "Intel kompatibilní", tak to běželo bez problémů. A jasně, taky jsem zažil situaci, že SR duplex optiku někdo omylem přejel židlí :) Ale pak to úplně vypadávalo a bylo tam strašné množství ztracených paketů. Což se samozřejmě dá ověřit třeba přes ethtool -S <interface>.

« Poslední změna: Dnes v 10:25:38 od Michal Šmucr »

M Z

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #11 kdy: Dnes v 11:43:39 »
Iperf3 nebrat, vyzkoušej to s iperf2 a s -P X vlákny.

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #12 kdy: Dnes v 12:14:44 »
Iperf3 nebrat, vyzkoušej to s iperf2 a s -P X vlákny.

Ano iperf2 je taky možnost, ale podle mě to nebude ten zásadní problém. Jak jsem psal, i s iperf3 se dá dostat na rychlosti, co saturují 10 GbE rozhraní, případně i víc (bez nějakého extra nastavování jsem se např. bez potíží dostával na 40 Gbit mezi Linux servery s odpovídajícími Mellanox kartami).

Co jsem měl na mysli s těmi problémy a iperf3 se týkalo primárně Windows buildu s cygwinem, protože s tím jsem měl opravdu párkrát docela potíže, různě to heblo, nefungovalo UDP atp. Dlouho byl na oficiálních stránkách odkaz jen na velmi starý build..

Jinak když jsem si s tím onehdá hrál, tak jsem pro cross-platform testování zkoušel použít i ntttcp přímo do Microsoftu, což bylo přímo zmíněné i v různých návodech k nastavování RSS.
https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-bandwidth-testing?tabs=linux
(to funguje dobře, škáluje to na více vláken, ale je to trochu nepohodlné na používání a třeba windows a linux verze mají trochu jiné nastavení parametrů).


M Z

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #13 kdy: Dnes v 12:26:25 »
V linuxu je iperf3 celkem v pohode, ale ve Windows je zoufale pomaly. Na 100Gb jsme se s iperf3 mezi Lin-Win nedostali pres 40Gb.

Re:Funkční 10GbE řešení pro TrueNAS Scale
« Odpověď #14 kdy: Dnes v 12:42:22 »
V linuxu je iperf3 celkem v pohode, ale ve Windows je zoufale pomaly. Na 100Gb jsme se s iperf3 mezi Lin-Win nedostali pres 40Gb.

Jj. na tyhle velké rychlosti pak samozřejmě může hrát roli specifická optimalizace, cygwin vrstva atp. A díky za sdílení zkušenosti. Já na Windows nikdy moc netestoval 100 GbE karty. Na Linux serveru a hypervizorech je typicky 40 nebo 100, Windows klienti mají pak buď 10 resp. 25.
Ale i přes všechny zmíněné věci s Windows portem iperf3, těch 10 Gbit mi zas, relativně vzato, nepřijde taková rychlost, aby ten software sám o sobě byl tak úzké hrdlo (a sám o sobě to srazil na 35 %). Což se mi i v podstatě projevilo v těch mých zmíněných testech, ve všech případech a ať už s jakýmkoliv nástrojem, tam muselo být víc příchozích spojení na win stranu, aby se to přiblížilo k té rychlosti linky.