Prestandatester med 10 Gigabit

Permalänk
Hedersmedlem

Prestandatester med 10 Gigabit

Jag har nyligen införskaffat mig utrustning som tillåter 10 Gigabit över CX4/Infiniband-kablar på det lokala nätverket. Jag tänkte använda denna tråd som ett bollplank för input om hur man kan optimera anslutningar, protokoll och prestanda.

Hårdvara består av följande:

Switch: Woven Brocade LB4 (48p Gbit, 4 st CX4-portar)
Kablar: 2x 3M, 1x 10M 10GBASE-CX4
Nätverkskort: 2x SuperMicro AOC-STG-I2 PCIe x8 2p CX4

Min workstation består av en Core i7 3820, 32 GB RAM och en Samsung 830 256 GB. Den andra datorn jag testar mot (i bland annat iperf) är en mITX-historia med en integrerad Celeron 847 samt 8 GB RAM och en 2.5-tums 80 GB SATA.

Benchmarks:

iperf 2.0.5
IoZone 3.345
ATTO Benchmark 2.0.2.0 / 3.2
IOMeter 2006.07.27

Operativsystemet på iperf-servern är Windows Server 2008 R2 Enterprise och på klientdatorn är det Windows 7 Ultimate. Jag vet att Windows 8/Server 2012 använder sig av en nyare version av SMB men i dagsläget är det inte aktuellt att migrera till de OS:en. Jag har även planer på att testa under FreeBSD via disten FreeNAS samt Pfsense.

SMB/CIFS:

SMB/CIFS-prestanda är självklart viktigt då den större delen data som delas i hemmanätverk använder detta protokoll.

Håller på att testa SMB/CIFS-prestandan ytterligare med IoZone som ger en bättre överblick över hastigheter vid olika filstorlekar, record-storlekar och dylikt. Ska även ta tid att lära mig Intels IoMeter som ska vara bra, men som jag aldrig lyckats bli klok på.

iperf

Jag har lekt runt lite med iperf och lyckats nå cirka 6 Gbit/s med en MTU på 1500. Det är intressant att prestandan ökar lavinartat när man justerar TCP-fönsterstorleken.

Detta är resultaten med nuvarande testburkar (workstation > server):

Server > Workstation:

ATTO Benchmark

Standard, 1500 MTU.

IoZone

IoZone är ett väldigt kraftfullt verktyg, men man måste verkligen fundera på hur man ska tolka resultaten ibland.

Så här ser min nuvarande kommandorado ut:

iozone -Rab test.wks -i 0 -i 1 -i 2 -q 16M -n 512M -g 512M -+u -y 16M -q 16M -r 16M -g 64G -S 10000M -f z:\001.tmp

Får följande resultat (mäts i Kbytes/s). Första kolumnen är storleken på filen som testas. Jag ligger ungefär mellan 300-500 MB/s i de flesta fall, förutom vid läsning av stora filer, då får jag helt plötsligt 4 GB/s+ av någon outgrundlig anledning. Om det har något med cache att göra borde det påverka även mindre läsningar tycker man.

Write 524288 3084294 1048576 3205761 2097152 3341413 Re-writer Report 524288 3763650 1048576 3760492 2097152 3815754 Reader Report 524288 530460 1048576 524963 2097152 4083972 Re-reader Report 524288 504331 1048576 532056 2097152 4139538

IOMeter

Använder mig av open source-versionen av Intels IOMeter version 2006.07.27.

Initiala resultat:

Jag gissar att detta är random IOPS? Tycker resultatet är lite svårtolkat även om det låter helt okej, hade nog förväntat mig mer.

CPU-anvädningen och procenttalet för interrupts låg rätt lågt enligt min mening.

Övrigt

Om det är någon som har förslag eller tips om saker som kan öka prestandan, skriv gärna dem i tråden. Vare sig det gäller strömsparegenskaper, aggresiv cachning i OS:et, TCP-fönsterstorlek eller något annat är det alltid intressant att testa!

Visa signatur

SWECLOCKERS.COM :: If Quake was done today ::
WS: Gigabyte Z690 UD DDR5 :: Core i5 12600K :: 32 GB RAM :: Geforce RTX 3060 Ti :: 10 GbE NIC :: AOC C32G1 32" :: Seagate FireCuda 530 1TB :: Deepcool Matrexx 55
NAS: SM X10-SLM-F :: Mellanox Connect2X SFP+ :: Intel XL710-QDA1 QSFP+

Permalänk
Medlem

Vad är det för OS på burkarna? Den ena ser det ju ut att vara Windows på iaf

Det är inte så enkelt att lagringen inte hinner med så när minnesbufferten är full så går det "lite" långsammare?

Mina virtuella 2012or och 2012R2or uppför sig så i mycket större utsträckning än 2008R2orna. Har lekt lite med storage spaces och så fort bufferten är full så går det i Fast Ethernet -hastigheter, i bästa fall... Har inte ägnat hur mycket tid som helst åt det men har inte lyckats tweaka bort det.

Edit: såg att "hasenfrasen" hade samma teori i den andra tråden.

Visa signatur

i7-8700k | ASUS ROG Strix Z370-F Gaming | 2x8+2x16GB Corsair Vengeance LPX 3200 | ASUS TUF RTX 3080 OC | Samsung 860 EVO 1TB | WD Black SN850 1TB | Intel 660p 2TB | Crucial MX500 4TB | Noctua NH-U14S | Fractal Design North | Seasonic Focus Plus Gold 650FX | ASUS Xonar Essence STX

Permalänk
Medlem
Skrivet av Micke O:

Vad är det för OS på burkarna? Den ena ser det ju ut att vara Windows på iaf

Det är inte så enkelt att lagringen inte hinner med så när minnesbufferten är full så går det "lite" långsammare?

Edit: såg att "hasenfrasen" skrev ungefär samma sak i den andra tråden.

Låter helt klart som det är minnesbuffert som tar slut, övervaka minnesnyttjande vid kopiering och se vad minnet används till.
Har upplevt exakt samma sak i tester med 10Gbit.

Men 128GB ram eller så råder bot på det problemet Annars är det nog bara att leva med det och inse att ditt nätverk inte längre är begränsningen när du flyttar stora mängder data. Coolt med 10Gbit hemma hur som.

Visa signatur

Fd. "Redbull" här på forumet.

Permalänk
Hedersmedlem
Skrivet av Micke O:

Vad är det för OS på burkarna? Den ena ser det ju ut att vara Windows på iaf

Det är inte så enkelt att lagringen inte hinner med så när minnesbufferten är full så går det "lite" långsammare?

Mina virtuella 2012or och 2012R2or uppför sig så i mycket större utsträckning än 2008R2orna. Har lekt lite med storage spaces och så fort bufferten är full så går det i Fast Ethernet -hastigheter, i bästa fall... Har inte ägnat hur mycket tid som helst åt det men har inte lyckats tweaka bort det.

Edit: såg att "hasenfrasen" hade samma teori i den andra tråden.

Uppdaterade min post med OS-info. Kör 2008 R2 på ena servern och W7 Ultimate på klientburken. Det som jag tycker är konstigt är att serverdatorn definitivt borde kunna skriva snabbare än 60 MB/s med sin Crucial M4 SSD. Det fungerar ju dessutom mycket bättre via Gigabit också vilket är konstigt.

Skrivet av Mikaelb:

Låter helt klart som det är minnesbuffert som tar slut, övervaka minnesnyttjande vid kopiering och se vad minnet används till.
Har upplevt exakt samma sak i tester med 10Gbit.

Men 128GB ram eller så råder bot på det problemet Annars är det nog bara att leva med det och inse att ditt nätverk inte längre är begränsningen när du flyttar stora mängder data. Coolt med 10Gbit hemma hur som.

Övervakning med det inbyggda verktyget i Windows eller något tredjeparts? Jag har möjlighet att uppgradera till 16 GB på mITX-kortet men då servern bara agerar webserver samt kontrollerar lampor och dylikt via TellStick känns det inte riktigt motiverat.

Visa signatur

SWECLOCKERS.COM :: If Quake was done today ::
WS: Gigabyte Z690 UD DDR5 :: Core i5 12600K :: 32 GB RAM :: Geforce RTX 3060 Ti :: 10 GbE NIC :: AOC C32G1 32" :: Seagate FireCuda 530 1TB :: Deepcool Matrexx 55
NAS: SM X10-SLM-F :: Mellanox Connect2X SFP+ :: Intel XL710-QDA1 QSFP+

Permalänk
Medlem

Om du kör de virtuallet , så kör inte Legacy network adapter ? då får du inte alls lika bra speeds.

Visa signatur

13900KS | 32GB 6400 DDR5 | 4090 FE | Samsung G8 Oled
ASUS ROG Strix Z790-F Gaming | Fractal Torrent White | Corsair HX1200

Permalänk
Medlem
Skrivet av Kr^PacMan:

Uppdaterade min post med OS-info. Kör 2012 R2 på ena servern och W7 Ultimate på klientburken. Det som jag tycker är konstigt är att serverdatorn definitivt borde kunna skriva snabbare än 60 MB/s med sin Crucial M4 SSD. Det fungerar ju dessutom mycket bättre via Gigabit också vilket är konstigt.

Kan det vara så att vid GbE så hinner den "hålla undan" medan det blir knökfullt med 10GbE? Eller någon lustig inställning i drivisen till 10GbE NICet.

Kanske ska tillägga att jag kör ESXi 5.5 (då 5.1) och testerna gjordes mellan 2008R2 och 2012/R2 samt W7x64. Gjorde lite tester internt mellan VMar (på olika fysiska diskar) i ett försök att utesluta nätverksproblem men har för mig att jag fick samma resultat. Dvs att den chokade men jag är inte helt säker. Slutsatsen är iaf att jag vid stora överföringar får mycket jämnare och bättre prestanda mot 2008R2 än 2012/R2.

Visa signatur

i7-8700k | ASUS ROG Strix Z370-F Gaming | 2x8+2x16GB Corsair Vengeance LPX 3200 | ASUS TUF RTX 3080 OC | Samsung 860 EVO 1TB | WD Black SN850 1TB | Intel 660p 2TB | Crucial MX500 4TB | Noctua NH-U14S | Fractal Design North | Seasonic Focus Plus Gold 650FX | ASUS Xonar Essence STX

Permalänk
Medlem

Oh intressant tråd.
Har själv precis fått hem HP 452372-001 Infiniband-kort och kablar. Har tänkt att skippa switchen och bara köra mellan två ESXi hostar och sen Nexenta i en triangeluppsättning.

Såg att du inte tänkt migrera till 2012 ännu, synd det skulle vara ett intressant test annars.

Visa signatur

.: Learn the system, Play the system, Break the system :.

Permalänk
Datavetare

Testa att boota upp systemet via en USB-sticka med Linux och kolla prestanda med iperf, siffrorna du får nu verkar löjligt låga.

Även om jag klockar ner en i7-4670T till 800MHz (scaling governor "power-save" i Linux) så rapporterar iperf över 9GBit/s med den förvalda fönsterstorleken och en MTU på 1500.

Kör med "82599EB 10-Gigabit SFI/SFP+ Network Connection" (kodnamn "Niantic", ett 10Gbit/s Ethernet kort över fiberkablar) och Ubuntu 12.04LTS server. Med Infiniband har du lägre latens än vad jag får med 10Gbit/s Ethernet.

Edit: vad det gäller optimeringar har jag ganska precist lekt lite med olika angreppssätt för att skriva program som kan hantera så många transaktioner/s över nätverket som möjligt. En sak jag lärde mig då var att alla former av frekvensskalning på CPUn tenderar minska kapaciteten en hel del då det tar rätt mycket tid för CPUn (med tanke på att du kan ha upp till 14miljoner paket per sekund i båda riktningarna på ett 10Gbit/s NIC).

Du har en i7 3820 (Sandy Bridge), så den tar minst 10µs för att byta frekvens. Vet inte hur man läser ut exakt värde i Windows, men på Linux kan du göra detta

$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency 10000

På min Haswell maskin ser man att det är 10000ns = 10µs.

Så steg ett är att alltid köra på max-frekvens (max s.k. P-state), den viktigsta strömsparfunktionen är ändå det man kallar C-states som CPUn hoppar mellan när den jobbar och inte har något att göra. Att hoppa mellan C0 (CPU jobbar) och C1 (CPU sover, men väldigt "lätt") tar runt 1µs, enda sättet att aldrig hoppa in i C1 är att aldrig anropa något som kan "blocka", finns sådana system men då åker strömförbrukningen upp rejält och det är definitivt overkill att undvika C1 i ditt fall.

Du bör också ha en fönsterstorlek på 20-100kB, exakt storlek beror lite på latens men den ska ju vara riktigt låg på Infiniband så du ska klara dig med rätt små fönster. Allt för stora fönster kommer leda till att du fyller CPU-cachen med så mycket data att risken är att saker skrivs över innan du ska till och använda det.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Varför bara MTU på 1500 byte? Testa att öka MTU till t.ex. 9k och labba sedan med fönsterstorlek.

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av Kr^PacMan:

Övervakning med det inbyggda verktyget i Windows eller något tredjeparts? Jag har möjlighet att uppgradera till 16 GB på mITX-kortet men då servern bara agerar webserver samt kontrollerar lampor och dylikt via TellStick känns det inte riktigt motiverat.

På maskinen du kör 2012 så duger inbyggda utmärkt, den visar tydligt hur minnet nyttjas. Med Windows 7 är det väl inte lika tydligt men då är Sysinternals vertyg helt underbara.

Visa signatur

Fd. "Redbull" här på forumet.

Permalänk
Medlem
Skrivet av Yoshman:

Testa att boota upp systemet via en USB-sticka med Linux och kolla prestanda med iperf, siffrorna du får nu verkar löjligt låga.

Även om jag klockar ner en i7-4670T till 800MHz (scaling governor "power-save" i Linux) så rapporterar iperf över 9GBit/s med den förvalda fönsterstorleken och en MTU på 1500.

Kör med "82599EB 10-Gigabit SFI/SFP+ Network Connection" (kodnamn "Niantic", ett 10Gbit/s Ethernet kort över fiberkablar) och Ubuntu 12.04LTS server. Med Infiniband har du lägre latens än vad jag får med 10Gbit/s Ethernet.

Edit: vad det gäller optimeringar har jag ganska precist lekt lite med olika angreppssätt för att skriva program som kan hantera så många transaktioner/s över nätverket som möjligt. En sak jag lärde mig då var att alla former av frekvensskalning på CPUn tenderar minska kapaciteten en hel del då det tar rätt mycket tid för CPUn (med tanke på att du kan ha upp till 14miljoner paket per sekund i båda riktningarna på ett 10Gbit/s NIC).

Du har en i7 3820 (Sandy Bridge), så den tar minst 10µs för att byta frekvens. Vet inte hur man läser ut exakt värde i Windows, men på Linux kan du göra detta

$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency 10000

På min Haswell maskin ser man att det är 10000ns = 10µs.

Så steg ett är att alltid köra på max-frekvens (max s.k. P-state), den viktigsta strömsparfunktionen är ändå det man kallar C-states som CPUn hoppar mellan när den jobbar och inte har något att göra. Att hoppa mellan C0 (CPU jobbar) och C1 (CPU sover, men väldigt "lätt") tar runt 1µs, enda sättet att aldrig hoppa in i C1 är att aldrig anropa något som kan "blocka", finns sådana system men då åker strömförbrukningen upp rejält och det är definitivt overkill att undvika C1 i ditt fall.

Du bör också ha en fönsterstorlek på 20-100kB, exakt storlek beror lite på latens men den ska ju vara riktigt låg på Infiniband så du ska klara dig med rätt små fönster. Allt för stora fönster kommer leda till att du fyller CPU-cachen med så mycket data att risken är att saker skrivs över innan du ska till och använda det.

Trådskaparen har ju bra hastighet förutom efter en stund, känns inte som cpu prestanda påverkar nämnvärt utan snarare hastigheten att skriva till disk när det inte längre finns någon snabb cache att dumpa data till.

Visa signatur

Fd. "Redbull" här på forumet.

Permalänk
Medlem

Hur är det när du flyttar filer som är mindre än totala ram mängden?

skulle du kunna plotta en graf på hur hastigheten sänks över tid?

bråkar med liknande problem, dock bara över gbit, men det är riktigt frustrerande när hastigheten dalar ner när man flyttar större filer

Visa signatur

RetroPC samlare av högsta nivå.
medlem 504 på sweclockers
https://timmynator.se

Permalänk
Datavetare
Skrivet av Mikaelb:

Trådskaparen har ju bra hastighet förutom efter en stund, känns inte som cpu prestanda påverkar nämnvärt utan snarare hastigheten att skriva till disk när det inte längre finns någon snabb cache att dumpa data till.

Inser att de tester som är gjorda mot disk kan ha andra flaskhalsar, men att bara ligga på ~6Gbit/s med en i7-3820 verkar skumt. Nu är motparten en Celeron 847 som bara går på 1.1Ghz (och är Sandy Bridge-baserad), men den är ändå helt i nivå med en i5-4670T klockad på 800Mhz som inte har några problem att fixa 9.35Gbit/s, hade iperf låst till en CPU-kärna och lasten låg en bra bit under 100% på den kärnan så de 2-kärnornarna i Celeron 847 borde orka mer.

iperf genererar sin traffik direkt från RAM, så finns inga flaskhalsar förutom CPU och NIC.

Så ett steg är kanske att köra Linux på Celeron-maskinen så den inte längre blir en flaskhals, i alla fall när man utför tester.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hedersmedlem

Jag är den som bekänner mina misstag. Efter att ha bonkat huvudet i väggen åt gräsliga sekventiella överföringar till filservern gick jag in i enhetshanteraren och konstaterade att webservern har en 80 GB hårddisk - mekanisk. Jag var helt övertygad om att det var en SSD, men tydligen inte. Hade dock en Intel 330 60GB SSD liggande som nu sitter i webservern.

Första testet med ATTO Benchmark gjorde mig glad:

Skrivet av Oneone:

Om du kör de virtuallet , så kör inte Legacy network adapter ? då får du inte alls lika bra speeds.

Kör inte virtuellt - än.

Skrivet av tomle:

Varför bara MTU på 1500 byte? Testa att öka MTU till t.ex. 9k och labba sedan med fönsterstorlek.

Jepp, det ska definitivt testas ordentligt med Jumbo frames. Dock stödjer inte alla enheter i nätverket det och även om jag kan skapa ett SAN för just de enheter som har 10 GbE kanske inte det är en så smidig lösning.

Skrivet av TimmyQ:

Hur är det när du flyttar filer som är mindre än totala ram mängden?

skulle du kunna plotta en graf på hur hastigheten sänks över tid?

bråkar med liknande problem, dock bara över gbit, men det är riktigt frustrerande när hastigheten dalar ner när man flyttar större filer

Håller på med en graf, dock blir jag inte riktigt klok över testresultaten med IoZone. Det verkar som om riktigt stora filöverföringar (2 GB+) så flippar IoZone ur och visar på överföringshastigheter på 4 GB/s, medan under så går det i "normal" fart av 300-500 MB/s. Måste få rätsida på detta känner jag.

Skrivet av Yoshman:

Inser att de tester som är gjorda mot disk kan ha andra flaskhalsar, men att bara ligga på ~6Gbit/s med en i7-3820 verkar skumt. Nu är motparten en Celeron 847 som bara går på 1.1Ghz (och är Sandy Bridge-baserad), men den är ändå helt i nivå med en i5-4670T klockad på 800Mhz som inte har några problem att fixa 9.35Gbit/s, hade iperf låst till en CPU-kärna och lasten låg en bra bit under 100% på den kärnan så de 2-kärnornarna i Celeron 847 borde orka mer.

iperf genererar sin traffik direkt från RAM, så finns inga flaskhalsar förutom CPU och NIC.

Så ett steg är kanske att köra Linux på Celeron-maskinen så den inte längre blir en flaskhals, i alla fall när man utför tester.

Jag testade från Server > Workstation nu:

Antingen har min lilla webserver problem med att ta emot stora mängder data, eller så har min workstation problem att skicka. Vilka OS körde du när du testade iperf?

Visa signatur

SWECLOCKERS.COM :: If Quake was done today ::
WS: Gigabyte Z690 UD DDR5 :: Core i5 12600K :: 32 GB RAM :: Geforce RTX 3060 Ti :: 10 GbE NIC :: AOC C32G1 32" :: Seagate FireCuda 530 1TB :: Deepcool Matrexx 55
NAS: SM X10-SLM-F :: Mellanox Connect2X SFP+ :: Intel XL710-QDA1 QSFP+

Permalänk
Datavetare
Skrivet av Kr^PacMan:

Jag testade från Server > Workstation nu:

http://www.gondolin.se/temp/10gbe/iperf_2.gif

Antingen har min lilla webserver problem med att ta emot stora mängder data, eller så har min workstation problem att skicka. Vilka OS körde du när du testade iperf?

Jag körde Ubuntu 12.04 på båda maskinerna (en i5 4670T klockad @ 800MHz och en i7 2600 @ 3.4Ghz), har tyvärr inga Windows-maskiner med 10Gbit/s NICar i (de har som bäst 1Gbit/s), så kan inte testa en sådan konfiguration.

$ iperf -c 172.20.1.2 ------------------------------------------------------------ Client connecting to 172.20.1.2, TCP port 5001 TCP window size: 23.5 KByte (default) ------------------------------------------------------------ [ 3] local 172.20.1.1 port 57010 connected with 172.20.1.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 10.9 GBytes 9.35 Gbits/sec

I ditt fall är ju Celeron-maskinen den stora flaskhalsen, så du skulle kunna testa att boota upp Linux på en USB-sticka och köra "iperf server" på den maskinen. Antar att det är din i7-3820 som du vill testa så den måste ju köra Windows då det är OSet du vill använda.

TCP/IP-stacken i Windows har med åren blivit väldigt bra (sedan Vista) på att följa specifikationerna, men den är fortfarande väldigt ineffektiv jämfört med Linux TCP/IP-stack (som för övrigt blivit väldigt mycket bättre på att utnyttja många CPU-kärnor för 3-4 år sedan, 2.6.32->2.6.38).

Såg att du testade med en fönsterstorlek på 1M, det är definitivt för stort med tanke på att latensen mellan dina maskiner lär ligga på µsekund-skala. Du vill ha så litet fönster som möjligt men där den s.k. bandwidth-delay-product ändå så pass hög att fönstret inte är en flaskhals. Så anta att du har 100µs latens (jag får <100µs latens över Ethernet, Infiniband har ännu lägre latens) och du vill ha kapacitet för 10Gbit/s, ditt fönster måste då minst vara

10Gbit/s / 8bits/byte * 100µs = 10*10^9 / 8 * 10 * 100^-6 = 10*10^3 / 8 * 100 = 125kB

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hedersmedlem
Skrivet av Yoshman:

Jag körde Ubuntu 12.04 på båda maskinerna (en i5 4670T klockad @ 800MHz och en i7 2600 @ 3.4Ghz), har tyvärr inga Windows-maskiner med 10Gbit/s NICar i (de har som bäst 1Gbit/s), så kan inte testa en sådan konfiguration.

$ iperf -c 172.20.1.2 ------------------------------------------------------------ Client connecting to 172.20.1.2, TCP port 5001 TCP window size: 23.5 KByte (default) ------------------------------------------------------------ [ 3] local 172.20.1.1 port 57010 connected with 172.20.1.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 10.9 GBytes 9.35 Gbits/sec

I ditt fall är ju Celeron-maskinen den stora flaskhalsen, så du skulle kunna testa att boota upp Linux på en USB-sticka och köra "iperf server" på den maskinen. Antar att det är din i7-3820 som du vill testa så den måste ju köra Windows då det är OSet du vill använda.

TCP/IP-stacken i Windows har med åren blivit väldigt bra (sedan Vista) på att följa specifikationerna, men den är fortfarande väldigt ineffektiv jämfört med Linux TCP/IP-stack (som för övrigt blivit väldigt mycket bättre på att utnyttja många CPU-kärnor för 3-4 år sedan, 2.6.32->2.6.38).

Såg att du testade med en fönsterstorlek på 1M, det är definitivt för stort med tanke på att latensen mellan dina maskiner lär ligga på µsekund-skala. Du vill ha så litet fönster som möjligt men där den s.k. bandwidth-delay-product ändå så pass hög att fönstret inte är en flaskhals. Så anta att du har 100µs latens (jag får <100µs latens över Ethernet, Infiniband har ännu lägre latens) och du vill ha kapacitet för 10Gbit/s, ditt fönster måste då minst vara

10Gbit/s / 8bits/byte * 100µs = 10*10^9 / 8 * 10 * 100^-6 = 10*10^3 / 8 * 100 = 125kB

Tack för värdefull information. När min nya filserver kommer igång kommer det garanterat att bli enklare att hitta flaskhalsarna än om man kör på ett system med långt lägre beräkningskraft.

CX4 är en gammal standard som förmodligen av bekvämlighetsskäl använder sig av Infiniband-kablar (SAS kan även använda samma kablar) men det är fortfarande Ethernet så latensen ligger mig veterligen lika som ett vanligt gigabit-nätverk. Men jag kan göra lite närmare test med fönsterstorlek på 128-150 och se om jag kan få lite mer insikt.

Jag tror dock inte Celeron-processorn i detta fall är flaskhalsen. Det är ju definitivt en desktopprocessor på 1.1 GHz med 2 MB nivå 3-cache och en minneskontroller som klarar av 21.3 GB/s i dual channel. Dock kör jag maskinen med endast en modul, så den praktiska teoretiska maximala bandbredden ligger nog ungefär på hälften.

Eftersom jag får sämre prestanda när jag kör min workstation som klient och webservern som server antar jag att det är något med Windows 7 som begränsar prestandan.

Edit: Testade att öka Recieve Buffer samt Transmit Buffer på nätverkskorten från 512 till 2048 utan märkbara resultat.

Edit 2: Testade att köra dubbla strömmar med iperf, det ökade prestandan lite, lite mindre än 1 GB/s snabbare.

Visa signatur

SWECLOCKERS.COM :: If Quake was done today ::
WS: Gigabyte Z690 UD DDR5 :: Core i5 12600K :: 32 GB RAM :: Geforce RTX 3060 Ti :: 10 GbE NIC :: AOC C32G1 32" :: Seagate FireCuda 530 1TB :: Deepcool Matrexx 55
NAS: SM X10-SLM-F :: Mellanox Connect2X SFP+ :: Intel XL710-QDA1 QSFP+

Permalänk
Datavetare
Skrivet av Kr^PacMan:

TEftersom jag får sämre prestanda när jag kör min workstation som klient och webservern som server antar jag att det är något med Windows 7 som begränsar prestandan.

Tror det ändå kan vara CPUn som är flaskhals då en TCP/IP stack inte är begränsad av RAM-bandbredd på en modern CPU utan endera begränsad av kapaciteten på nätverket eller hur snabbt CPUn kan köra heltalsintensiv kod. Noterade när jag körde både servern och klienten på samma maskin att server-instansen av "iperf" drog mycket mer CPU-kraft än klient-instansen.

I detta test drog en fiber mellan två portar på samma maskin och placerade de två portarna i olika s.k. "network namespace", en form av virtualisering där man bara har 1 OS-kärna, men kan ha flera separerade userland instanser, är i praktiken noll "overhead". Körde på i7 2600 maskinen och låste ner server och klient-instansen på olika kärnor. Får även i detta fall >9Gbit/s.

De jämförelser jag gjort mellan Win7 och Linux för något år sedan antyder att Windows använder ungefär 3x så mycket CPU-cykler jämfört med Linux för att skicka/ta emot data via socket APIet.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Mr_Lazy:

Oh intressant tråd.
Har själv precis fått hem HP 452372-001 Infiniband-kort och kablar. Har tänkt att skippa switchen och bara köra mellan två ESXi hostar och sen Nexenta i en triangeluppsättning.

Såg att du inte tänkt migrera till 2012 ännu, synd det skulle vara ett intressant test annars.

Kan jag med tre kort av exempelvis denna sort skapa ett litet "kluster" där alla tre noder har direkt kontakt med övriga, utan switch?
Låter för billigt och enkelt för att vara sant...
Hur har du trivts med din hårdvara?

Permalänk
Medlem

När den här tråden ändå är uppgrävd; varför testade du inte med window size upp till 4 eller 8K?

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Medlem
Skrivet av lorgix:

Kan jag med tre kort av exempelvis denna sort skapa ett litet "kluster" där alla tre noder har direkt kontakt med övriga, utan switch?
Låter för billigt och enkelt för att vara sant...
Hur har du trivts med din hårdvara?

Japp du kan köra en trekant (höhö)
Jag kör dessa kort i mina Vmware ESXi hostar och min lagringsbox
Jag ett kort i en dator som agera lagringsbox och sen varsin anslutning direkt till två ESXi Hostarna. Prisskillnaden mellan 2 portars och 1 är marginell så köp inte 1-portars kort. De två portarna du får över kan du ansluta ihop (direkt mellan ESXi hostarna) och via den kör du tex vMotion

Visa signatur

.: Learn the system, Play the system, Break the system :.

Permalänk
Medlem
Skrivet av Mr_Lazy:

Japp du kan köra en trekant (höhö)
Jag kör dessa kort i mina Vmware ESXi hostar och min lagringsbox
Jag ett kort i en dator som agera lagringsbox och sen varsin anslutning direkt till två ESXi Hostarna. Prisskillnaden mellan 2 portars och 1 är marginell så köp inte 1-portars kort. De två portarna du får över kan du ansluta ihop (direkt mellan ESXi hostarna) och via den kör du tex vMotion

Nämen vad trevligt!
Grejar man det om man är en mindre avancerad användare tro? Jag är snarare en matematik- och hårdvaruentusiast.
Jag föreställer mig att jag kör debian. En utmaning blir (tror jag) att få ordning på MPI, det är avgörande för detta projekt.
Vilka problem ska man vara beredd på?

Permalänk
Medlem
Skrivet av lorgix:

Nämen vad trevligt!
Grejar man det om man är en mindre avancerad användare tro? Jag är snarare en matematik- och hårdvaruentusiast.
Jag föreställer mig att jag kör debian. En utmaning blir (tror jag) att få ordning på MPI, det är avgörande för detta projekt.
Vilka problem ska man vara beredd på?

Jag har faktiskt inte satt upp det på debian. Kör man det på ESXi så finns det ett VIB-paket och sen göra man lite konfigurationer i ett par filer och sen är man igång.

Visa signatur

.: Learn the system, Play the system, Break the system :.

Permalänk
Medlem
Skrivet av lorgix:

Nämen vad trevligt!
Grejar man det om man är en mindre avancerad användare tro? Jag är snarare en matematik- och hårdvaruentusiast.
Jag föreställer mig att jag kör debian. En utmaning blir (tror jag) att få ordning på MPI, det är avgörande för detta projekt.
Vilka problem ska man vara beredd på?

http://pkg-ofed.alioth.debian.org/howto/infiniband-howto-4.ht... hjälper dig rätt bra med hur du får igång grejerna under linux
http://www.open-mpi.org/faq/?category=openfabrics#ib-componen... är open-mpi relaterat till infiniband.

Var några år sedan jag pysslade med det men har inget minne av att det var överdrivet komplicerat då innan stackarna fått integrerat stöd så det borde vara hyfsat enkelt nu.