Skocz do zawartości

Mtu+ Jumbo Frames I Performance 1gb Lan


samba

Rekomendowane odpowiedzi

Witam

 

Jak optymalizujecie swoje sieci LAN pod względem wydajności ?

 

Ostatnio dołożyłem kontroler raid 3ware z szybszymi dyskami i co dziwo jeśli chodzi o użytkowanie samby (szybkość transferów tj. kopiowanie plików otwieranie programów itp. ) nie zauważyłem znacznej różnicy mimo iż dyski są 4 x szybsze.

 

Wziąłem się za optymalizację LAN.

 

Sieć oparta o:

- switche Dlink DGS-144T (1Gb)

- karta na serwerze PRO/1000 MT Dual Port Server Adapter

 

Switche obsługują jumbo frames tak więc pierwszą rzeczą jest włączenie jumbo frames + zwiększenie MTU na serwerze i tu mam kilka pytań.

 

1) Jeśli na kliencie windows (karta Intel 1Gb) ma ustawioną wartość dla jumbo frames 9014Bytes to jaką wartość ustawić na karcie serwerowej ?

Na serwerze ustawiłem MTU na 9014 .

2) W jakich jednostkach w Linuxie mierzona jest wartość MTU ?

Na tej stronie

znalazłem taką informację

I recently upgraded my desktop, and the Windows drivers for the new motherboard’s onboard NIC (Realtek PCIe GBE) gave options for 2KB – 9KB, and those KB turned out to be the binary definition of kilobyte. Well, the binary definition minus 14 bytes. Not sure what ate them up, but the 7KB setting’s MTU was 7154 bytes not 7168 bytes.

 

Tak więc czy moja wartość 9014 Bytes na windows = 9014MTU na Linux ???

 

Oto dziwny dowód że tak nie jest

 

ifconfig eth1 mtu 9014

 

Ping z klienta windows (IP 10.10.10.145) serwer

ping -f -l 9014 SERWER

Badanie SERWER [10.10.10.1] z użyciem 9014 bajtów danych:

Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.
Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.
Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.

co oznacza że wartość 9014 ulega fragmentacji czyli jest większa niż ta z MTU tj.9014

 

To samo daje

ping -f -l 9000 SERWER

Badanie SERWER [10.10.10.1] z użyciem 9014 bajtów danych:

Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.
Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.
Pakiet musi być podzielony na fragmenty, ale ustawiono opcję DF.

 

Ping na Linuxie podaje więcej informacji i dzięki temu znalazłem rozwiązanie

 ping -s 8972 -M do 10.10.10.145
PING 10.10.10.145 (10.10.10.145) 8972(9000) bytes of data.
8980 bytes from 10.10.10.145: icmp_seq=1 ttl=128 time=0.696 ms
8980 bytes from 10.10.10.145: icmp_seq=2 ttl=128 time=0.952 ms
8980 bytes from 10.10.10.145: icmp_seq=3 ttl=128 time=0.708 ms
8980 bytes from 10.10.10.145: icmp_seq=4 ttl=128 time=0.949 ms

--- 10.10.10.145 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.696/0.826/0.952/0.125 ms

 

Wartość pakietu 8972 (9000) jest optymalna tj nie ulega fragmentacji dla MTU =9014.

Tak więc w jakich jednostkach pokazywane jest MTU w poleceniu ifconfig i jakie jednostki użyte są w ping -s na linux? Rozumiem że ping to wartość pakietów tak więc jak przeliczyć wartość pakietów na bajty? W linuxowym pingu pokazuje się wartość w nawiasie (9000) i to są bajty.

 

 

Potwierdza to ping z windows

ping -f -l 8972 SERWER

Badanie SERWER [10.10.10.1] z użyciem 8972 bajtów danych:

Odpowiedź z 10.10.10.1: bajtów=8972 czas<1 ms TTL=64
Odpowiedź z 10.10.10.1: bajtów=8972 czas<1 ms TTL=64
Odpowiedź z 10.10.10.1: bajtów=8972 czas<1 ms TTL=64

Statystyka badania ping dla 10.10.10.1:
    Pakiety: Wysłane = 3, Odebrane = 3, Utracone = 0 (0% straty),
Szacunkowy czas błądzenia pakietów w millisekundach:
    Minimum = 0 ms, Maksimum = 0 ms, Czas średni = 0 ms

 

Czy ktoś wie dlaczego tak się dzieje? I jakie wartości ustawić na kientach i serwerze aby były identyczne ?

Czy jumbo frames zwiększy wydajność sieci?

Co jeszcze można zmienić by zwiększyć wydajność 1Gb Lan ?

Odnośnik do komentarza
Udostępnij na innych stronach

Może nie odpowiem na wszystko o co pytasz, ale co do pinga - jak podajesz "-s 8972" do pinga, to to 8972 oznacza rozmiar sekcji "data" pakietu icmp. Do tego dochodzi 8 bajtów nagłówka ICMP (to jest nawet w man ping napisane) i 20 bajtów nagłówka IP. Po zsumowaniu wychodzi 9000.

Wartość 9014 jest dość dziwna jak na MTU i jak ci się ją udało ustawić (_wogóle_ → w ogóle) ORT. Teoria mówi że jumbo frames mogą przenosić do 9000 bajtów danych. W tej liczbie muszą się zmieścić nagłówki takie jak IP, TCP/ICMP/... plus właściwe dane. Ponad tą wartością jest jeszcze nagłówek ethernet (14 bajtów), ale on się już do MTU nie liczy.

W każdym razie MTU to MTU, niezależnie od systemu, czy to linuks czy windows, wartość powinna być taka sama. Według mnie powinieneś wszędzie ustawić MTU na 9000, o ile cały twój sprzęt obsługuję tak dużą wartość. Ewentualnie to magiczne 9014 jeśli to faktycznie działa, ale ta wartość wygląda podejrzanie.

 

Co do wydajności - potestuj i zobacz co się zmieni. Doczynienia osobiście nie miałem z tym, ale wyczytanie kiedyś na necie informacje mówią że powinno być trochę lepiej. Chociaż wątpię żebyś znaczącą różnicę zobaczył przy korzystaniu akurat z samby.

Odnośnik do komentarza
Udostępnij na innych stronach

Teoria mówi że jumbo frames mogą przenosić do 9000 bajtów danych. W tej liczbie muszą się zmieścić nagłówki takie jak IP, TCP/ICMP/... plus właściwe dane. Ponad tą wartością jest jeszcze nagłówek ethernet (14 bajtów), ale on się już do MTU nie liczy.

W każdym razie MTU to MTU, niezależnie od systemu, czy to linuks czy windows, wartość powinna być taka sama. Według mnie powinieneś wszędzie ustawić MTU na 9000, o ile cały twój sprzęt obsługuję tak dużą wartość. Ewentualnie to magiczne 9014 jeśli to faktycznie działa, ale ta wartość wygląda podejrzanie.

 

... Chociaż wątpię żebyś znaczącą różnicę zobaczył przy korzystaniu akurat z samby.

Dzięki za odpowiedź faktycznie od liczby 9000 MTU trzeba odjąć 28 w ping i wtedy wychodzi wartość 9000 :)

 

Natomiast co do wartości MTU:

W dokumentacji switcha piszą "DGS-1248T supports Jumbo Frames up to 9220 bytes in size."

Natomiast moja karta Intel 8256LM-3 Gigabit Network ma 2 wartości jumbo frames : 4088 oraz 9014

 

Tak więc czy na karcie serwerowej ustawić MTU=9000 czy 9014?

 

Co do wydajności zauważyłem że kopiowanie pliku z serwera na komputer przy MTU=9014 jest wolniejsze niż bez jumbo frames ale za to wartosć 4088 daje lepsze (szybsze ) rezultaty.

 

W sambie jest opcja max xmit

Informacje można zobaczyć TU (trochę stary pdf)

In Samba, the option that is directly related with the MTU and window size is max
xmit. This option sets the largest block of data Samba will try to write at any one
time. It’s sometimes known as the write size, although that is not the name of the
Samba configuration option.
Because the percentage of each block required for overhead falls as the blocks get
larger, max xmit is conventionally set as large as possible. It defaults to the 
protocol’s upper limit, which is 64 kilobytes. The smallest value that doesn’t cause
significant slowdowns is 2048. If it is set low enough, it will limit the largest packet
size that Samba will be able to negotiate. This can be used to simulate a small
MTU if you need to test an unreliable network connection. However, such a test
should not be used in production for reducing the effective MTU.

 

Tak więc wartość xmit powinna być większa niż MTU.

Pytanie jak to teraz wszystko poustawiać aby zauważyć wzrost wydajności ??

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...