Zwiększanie Transmit Queue Length
Napisał: Patryk Krawaczyński
12/06/2011 w Administracja Brak komentarzy. (artykuł nr 317, ilość słów: 270)
Z
większenie parametru txqueuelen, czyli długości kolejki transmisji urządzenia sieciowego (od strony nadawcy) jest szczególnie przydatne przy korzystaniu przez serwer z bardzo szybkiego łącza za pomocą, którego wykonuje się duże, jednorodne transfery danych. Dawna wartość standardowa (100) ustawiona była dla wolniejszych urządzeń o dużych opóźnieniach np. łączy modemowych i sieci ISDN (aby zapobiec wówczas zbyt dużemu zakłócaniu interaktywnego ruchu programu telnet przez dużą ilość szybkich transferów).
Na przykład dla sieci z RTT 120 ms oraz przepustowości łącza Gb/s txqueuelen powinno wynosić co najmniej 10000. Aktualnie standard ustawiany w systemie Linux to 1000. W celu zwiększenia kolejki TX np. do wartości 2000 wystarczy wydać polecenie:
ifconfig eth0 txqueuelen 2000
Od strony odbiorcy mamy podobną kolejkę dla pakietów przychodzących. Jej wielkość wzrasta kiedy interfejs sieciowy otrzymuje pakiety przychodzące szybciej niż jądro systemu potrafi je przetworzyć. Jeśli kolejka ta jest zbyt mała (kiedyś 300, dzisiaj również 1000) i zostanie przepełniona – zaczniemy tracić pakiety zaraz przy urządzeniu odbiorczym, a nie np. podczas ich dalszej podroży w naszej sieci. W celu zwiększenia tej kolejki np. do wartości 2000 wystarczy wydać polecenia:
echo 2000 > /proc/sys/net/core/netdev_max_backlog echo 2000 > /proc/sys/net/core/somaxconn
Powyższe ustawienia służą do regulacji wielkości kolejki pomiędzy podsystemami sieciowymi jądra Linuksa, a sterownikiem karty sieciowej. Tak jak dla każdej kolejki zaleca się ustawienie takich wielkości, aby nie doprowadziły do przepełnienia jej bufora. Dlatego należy uważać przy tego typu tuningu, aby rozmiary kolejek dla pakietów wychodzących i przychodzących były optymalne dla naszego połączenia sieciowego.
Więcej informacji: TXQueueLen Investigation into IP Performance, How to achieve Gigabit speeds with Linux