Dlaczego dostaję tylko 300-400 Mbit / s w mojej sieci 1000 Mbit / s?

17

Moja konfiguracja wygląda następująco:

Laptop <--> Router <--> Komputer stacjonarny

Wszystkie obsługują Gigabit Ethernet. Korzystam z testu porównawczego TCP / IP „iperf” na laptopie i komputerze stacjonarnym i nigdy nie uzyskałem przepustowości surowej większej niż 400 Mbit / s. Laptop to Intel Core 2 Duo 2 GHz z systemem Windows XP, komputer stacjonarny to czterordzeniowy procesor Intel Core 2 2,4 GHz z systemem Windows 7. Na co mogę patrzeć, aby zmaksymalizować prędkość sieci między nimi? Ustawienia oprogramowania? Czy wiesz, czy mój kabel nie spełnia specyfikacji? Jak się dowiedzieć, czy kontroler gigabit Ethernet w jednym z urządzeń po prostu nie jest w stanie osiągnąć maksymalnej prędkości?

davr
źródło

Odpowiedzi:

11

1 Gbit / s to teoretyczne maksimum tego połączenia.

Wiele rzeczy może na to wpłynąć.

Spodziewaj się spadku wydajności wbudowanych kart sieciowych, ponieważ najprawdopodobniej będą to (na podstawie opisów urządzeń „Laptop” i „Komputer stacjonarny”) adaptery oparte na hoście, które wykorzystują procesor do przetwarzania ruchu sieciowego. Z tego powodu procesor będzie miał wpływ na inne czynności (na przykład przesyłanie danych z dysków twardych do podsystemu sieciowego).

Ponadto, w zależności od tego, czym jest „router”, może próbować przetwarzać dane przesyłane z portu LAN do portu LAN, więc jego szybkość przetwarzania może również wpływać na szybkość przesyłania danych, niezależnie od tego, jak szybko jego „porty” są.

Gdybym był tobą, moim następnym testem byłoby zdobycie „wystarczająco długiego” krosowego kabla krosowego CAT6 i podłączenie notebooka bezpośrednio do komputera (być może uda ci się uciec z kablem prostym, ponieważ wiele kart NIC obsługuje auto - obecnie krzyżówka).

W ten sposób (przynajmniej) możesz dość łatwo wyeliminować lub zidentyfikować router (i / lub istniejące okablowanie) jako wąskie gardło.

Ƭᴇcʜιᴇ007
źródło
Zobacz en.wikipedia.org/wiki/..., aby uzyskać informacje na temat dwóch możliwych pinoutów w celu wykonania gigabitowego kabla krosowego.
jedenaście81
Dobre informacje na pewno. W takim przypadku, jeśli użytkownik nie jest przyzwyczajony do robienia kabla, a celem jest wyeliminowanie możliwych spowolnień, prawdopodobnie lepiej mu będzie użyć fabrycznie wykonanego kabla. Nic gorszego niż luźne zaciskanie. ;)
ᴇcʜιᴇ007
14
Wystarczy FYI, z gigabitową siecią Ethernet, kable skrzyżowane nie są już potrzebne. Wszystkie kontrolery Gigabit Ethernet muszą mieć możliwość „automatycznego wyboru” kabla, więc możesz użyć standardowego kabla do połączenia z urządzeniami Gigabit Ethernet razem. Spróbuję podłączyć mój laptop prosto do pulpitu i zobaczę, czy jest jakaś różnica.
davr
@davr czy możesz odnieść sukces?
ebrahim.mr
8

iperf domyślnie używa dość małego rozmiaru okna.

Zwiększ okno lub uruchom je w trybie UDP, aby łatwo nasycić połączenie 1 Gbit / s.

użytkownik23307
źródło
Nie pomyślałem o tym, spróbuję tego.
davr
1
Nie nasycisz go sprzętem klasy konsumenckiej. Procesor jest generalnie ograniczony przez magistralę PCI lub PCI-Express. tzn. procesor nie może wystarczająco szybko przenieść danych z pamięci RAM na kartę sieciową. Sprzęt klasy serwerowej wydaje się działać lepiej. Wiem, że jestem programistą i próbowałem to zrobić. Zbliżam się, ale teraz jestem ograniczony przez mój własny sprzęt.
Matt H
1
pracował dla mnie, waliłem głową przez godzinę, próbując dowiedzieć się, dlaczego Windows iperf daje mi 250 Mb / s, a Ubuntu uruchomiony na tej samej maszynie daje mi 925 Mb / s. okazuje się, że iperf w systemie Windows domyślnie ma rozmiar okna 8k tcp i rozmiar okna 88k w Linuksie.
Omry
@Omry, iperf na Windows to pies z kilku perspektyw. W większości się poddałem i uruchomiłem iperf pod Linuksem
Mike Pennington,
4

Jeff Atwood ma dobrą analizę tego, dlaczego rzeczywista przepustowość sieci Gigabit jest bliższa, w swoich obliczeniach, 30 MB / s. (duże „B”, a nie małe „b”)

... zdecydowanie nie powinieneś oczekiwać doskonałego skalowania, które osiągnęliśmy, przechodząc z 10baseT do 100baseT. Bez większych poprawek dostaniesz tylko ułamek dziesięciokrotnej poprawy przepustowości, której możesz się spodziewać

JMD
źródło
To narzędzie „pcattcp”, którego używa, to bzdura. Mój netbook z linuksem 900 MHz (prawdopodobnie tak szybki, jak jego maszyna w 2005 r.) Ma prędkość 300 MB / s w pętli zwrotnej.
user23307,
Tak, iperf zapewnia zauważalnie lepszą wydajność w porównaniu z pętlą zwrotną niż pcattcp. Pozostanę na razie w testach iperf, chyba że usłyszę o czymś innym, co jest lepsze.
davr
1
Poza tym osiągam już wartość wyższą niż jego 240mbit, a ten artykuł ma już 5 lat, więc myślę, że nie jest już tak istotny, biorąc pod uwagę, że od tego czasu technologia powinna znacznie się rozwinąć.
davr
Biorąc pod uwagę, że interfejs sprzężenia zwrotnego jest wirtualny (nic nawet nie jest przenoszone na kartę sieciową), można oczekiwać znacznie lepszej wydajności (w zasadzie jest to proces do przetworzenia i nie dotknięto dysku twardego). Dostaję 8,09 Gb / s (1035 MB / s) przez interfejs pętli zwrotnej.
Matt H
3

Jeśli wszystko jest gigabitowe, możesz spróbować włączyć duże ramki . Jeden z moich przyjaciół zrobił to na swoim komputerze domowym i zauważył ogromny wzrost przepustowości. Istnieją jednak pewne wady aplikacji o niskim opóźnieniu, takich jak VOIP, jak wspomniano w artykule.

obrabować
źródło
Wzrost nie powinien być tak dramatyczny w przypadku większości aplikacji. To wszystko oznacza mniejszy narzut protokołu TCP lub UDP na pakiet. Ponadto, aby uzyskać najlepsze wyniki, twój przełącznik / routery powinny również obsługiwać duże ramki. Wątpię, by to zrobił.
Matt H
Dla dowolnych wyników przełącza muszą obsługiwać ramki jumbo. Tylko urządzenie L2 nie może odesłać błędu ICMP „Pakiet za duży”, aby poinformować komputer, że musi użyć mniejszego rozmiaru pakietu.
cpt_fink
1

Mówiłeś, że używasz routera? czy jest to zwykły router klasy konsumenckiej (nie przełącznik)?

Powiedziałbym, że to najprawdopodobniej twoje wąskie gardło. Aby to sprawdzić, podłącz laptopa bezpośrednio do pulpitu. Ustaw laptopa i komputer stacjonarny na używanie statycznego adresu IP, takiego jak 192.168.1.10 (laptop), 192.168.1.11 (komputer stacjonarny).

Powinno to pozwolić laptopowi mówić bezpośrednio do pulpitu. Uruchom iperf między nimi i zgłoś tutaj wynik.

Powinno to działać, ponieważ większość nowoczesnych kart sieciowych może automatycznie wykrywać przewody nadawczo-odbiorcze, w przeciwieństwie do dawnych czasów, kiedy trzeba było zbudować kabel krosowany.

Jeśli zauważysz znaczny wzrost, przyczyną jest twój router. Niektóre z nich mają przełączniki z tyłu, inne mogą faktycznie trasować między portami. Wiele z tych routerów jest strasznymi wykonawcami. Jeśli okaże się, że to jest problem, to gdybym był tobą, zaktualizowałbym router (co jest prawdopodobnie w porządku w przypadku korzystania z Internetu) lub kupiłbym sobie przełącznik GigE i kaskadowo go na przełączniku routera. Podłącz laptopa i komputer stacjonarny do przełącznika. W ten sposób ominą router, aby ze sobą rozmawiać.

Pamiętaj, aby po zakończeniu eksperymentu zmienić laptopa i komputer stacjonarny z powrotem na DHCP.

Aby dać ci pomysł, powinieneś pomyśleć, że 650 Mb / s i więcej. iperf nie korzysta z dysku twardego, chyba że mu to nakazujesz. Więc to pamięć z pamięci lub naprawdę testowanie sieci.

Jednym z innych wąskich gardeł jest to, jak szybko twój procesor może przesyłać dane z pamięci na kartę sieciową. Sieci działające na PCI express wydają się działać lepiej. Myślę, że laptopy są obecnie dość tanio budowane, więc jeśli nie widzisz dużo powyżej, może to być inne wąskie gardło.

Ponadto przełączniki klasy konsumenckiej często radzą sobie z przełączaniem tylko 1 GB między dowolnymi dwoma portami, podczas gdy przełączniki zarządzane wysokiej klasy mogą przełączać się z prędkością drutu na wszystkich portach jednocześnie. To jeden z powodów, dla których kosztują o wiele więcej.

Matt H.
źródło
1

Przeprowadziliśmy wiele testów, które sprowadziły się do systemu operacyjnego.

Jeśli przejdziemy z Ubuntu 11.04 na Ubuntu 11.04 (to samo z maszynami CentOS dla Linuxa), prędkość przesyłu wynosi ~ 938-941 MBits / s stała. Jeśli przejdziemy z Windows 7 x64 SP1 Ultimate na Ubuntu 11.04, będzie to od ~ 440-475 MBits / s. Jeśli przejdziemy z Windows 2008 R2SP1 x64 na Ubuntu 11.04, prędkość wynosi ~ 435-635 MBits / s.

Jak widać, maszyny oparte na systemie Linux w pełni wykorzystują łącza Gigabit w porównaniu do systemu Windows. Badamy teraz ustawienia w systemie Windows, które spowodowałyby taką samą przepustowość jak Linux na tym samym sprzęcie. Ograniczenia dysku twardego nie są czynnikiem, ponieważ jest w pamięci. Dla przypomnienia, używane maszyny miały dyski 7200 RPM z SATA 3.0. Zarówno Ubuntu 11.04 (lub Linux), jak i Windows przekroczyły teoretyczną prędkość tych łączy SATA.

Accends
źródło
Dzięki za informacje, zaktualizuj swoją odpowiedź, jeśli znajdziesz jakieś ustawienia, które wpływają na szybkość w
systemie
to mnie zastanawia, czy iperf nie jest jedyną częścią systemu Windows, która domyślnie ma mniejszy rozmiar pakietu niż Linux, patrz superuser.com/a/95587/16966
matt wilkie
0

Prędkości transferu są tak dobre, jak najsłabsze ogniwo w łańcuchu. Może to nie być prędkość sieci, ale prędkość zapisu / odczytu dysków twardych.

Możesz pobrać oprogramowanie RamDisk i utworzyć RamDisk na obu komputerach. Umieść w nim plik o przyzwoitym rozmiarze i wykonaj transfer przez sieć między RamDiskami. Powinno to pokazać rzeczywistą prędkość sieci, która nie będzie wąska z powodu prędkości dysku twardego.

Marcin
źródło
2
Dlatego wspomniałem o „iperf”, ale wydaje mi się, że nie jest to tak powszechne narzędzie. Zasadniczo testuje szybkość sieci bezpośrednio, bez odczytu / zapisu na dysku twardym, więc nie jest to wąskim gardłem. Zdaję sobie jednak sprawę z tego, że HDD może być wąskim gardłem w prawdziwym świecie.
davr
0

Nie jest to bezpośrednia odpowiedź na twoje pytanie, ale ostatnio otrzymaliśmy następujący wynik z iperfdwoma urządzeniami Linux (8 rdzeni, każdy 2,66 GHz):

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

z MTU = 1500 (tzn. bez użycia ramek jumbo). To powinno dać ci wyobrażenie o tym, jaka wydajność jest w zasadzie możliwa.

Karty sieciowe (wyjście lspci) to:

82571EB Gigabit Ethernet Controller

po obu stronach.

Możesz sprawdzić obciążenie procesora na serwerze, a zwłaszcza po stronie klienta i sprawdzić, czy jest to prawie 100%. Chociaż muszę powiedzieć, że w naszym systemie najbardziej obciążony rdzeń ma 80% (83%) bezczynności po stronie odbiorcy (nadawcy), podczas gdy pozostałe 7 wydaje się być w 100% bezczynne (zaznaczone za pomocą mpstat).

Działa iperfbez -uopcji, tzn. Używa TCP.

Andre Holzner
źródło
Myślę, że powinieneś uzyskiwać> 500 lub 600 Mb / s na 1 - 2-letnim sprzęcie stacjonarnym.
Matt H
-4

davr, W przeciwieństwie do Fibre Channel i podobnych technologii, które wykorzystują zaawansowane schematy alokacji przepustowości, Ethernet jest protokołem „Listen and Squawk”. Ethernet najpierw nasłuchuje, czy ktoś aktualnie transmituje, jeśli tak, poczekaj, jeśli nie, a następnie wyślij. Problem polega na tym, że jeśli dwie lub więcej osób, które chcą transmitować, słuchają w tym samym czasie, wyślą również w tym samym czasie! Spowoduje to kolizje i retransmisje. Fantazyjne przełączniki eliminują wiele z tego, ale nie wszystkie.

W przypadku Ethernetu powinieneś spodziewać się około 30-40 procent przepustowości (wygląda na to, że dostaniesz to ... Mogę się mylić co do dokładnego #, wiele zależy od jakości przełączników itp.), Zanim zacznie się wiele kolizji, z technologią tkanin około 80%. Ethernet jest tani, a kanał światłowodowy nie. . . Nie jestem pewien, co robi sieć Ethernet 4G, aby obejść ten problem. . . może mieć bardziej „tkaninową” topologię sieci podobną do Fibre Channel i przyjaciół. Jest to nadmierne uproszczenie, ale zasadniczo jest poprawne.

TheEruditeTroglodyte
źródło
2
Tak, nie używam „głupiego” hubu. Myślę, że większość ludzi w dzisiejszych czasach będzie używać inteligentnych przełączników lub routerów, które obsługują łączenie urządzeń bezpośrednio ze sobą, eliminując kolizje. Również mój test obejmuje tylko dwa urządzenia podłączone do jednego routera, więc kolizje nie byłyby problemem w moim szczególnym przypadku.
davr
davr - usprawiedliwienie, podczas gdy ja gram adwokata diabłów. . . Co uniemożliwia waszym dwóm gospodarzom rozmowę w tym samym czasie? Nie wspomniałeś też, jakie dane są przesyłane. . . czy jest to prawie wyłącznie protokół TCP czy jest dużo przesyłania strumieniowego danych (audio, wideo itp.)? Czy oba komputery przesyłają dane jednocześnie lub czy istnieje bardziej precyzyjnie określona relacja klient / serwer?
TheEruditeTroglodyte
2
Używam specjalnego programu do testów porównawczych TCP / IP, w którym tylko jeden komputer wysyła, a drugi nasłuchuje. Ale mimo to Ethernet ma pełny dupleks ... jeśli masz tylko dwa urządzenia, mogą one jednocześnie wysyłać i odbierać między sobą pełną przepustowość.
davr