Różnica między net.core.rmem_max i net.ipv4.tcp_rmem

14

Jaka jest różnica między net.core.rmem_max a trzecią wartością net.ipv4.tcp_rmem? Który ma wyższy priorytet dla połączeń TCP?

W przypadku poniższych dwóch przykładów, jaki jest maksymalny bufor dla połączeń TCP?

Case 1:
sysctl -w net.core.rmem_max=7388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608'

Case 2:
sysctl -w net.core.rmem_max=8388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'
bydsky
źródło
Priorytet związany z TCP?
Nils,
@Nils Tak, dla połączeń TCP.
bydsky,

Odpowiedzi:

5

Rdzeń jest ogólnym maksymalnym buforem odbiorczym, podczas gdy tcp dotyczy tylko tego protokołu.

Jeśli chodzi o pytanie priorytetowe: wydaje się, że ustawienie tcp będzie miało pierwszeństwo przed wspólnym ustawieniem maksymalnym, co jest nieco mylące. Ustawienie maks. Nie ma wpływu na bieżące ustawienie tcp (właśnie przetestowane na CentOS 5).

Bardziej poprawny opis brzmiałby : default_max - ale było to prawdopodobnie zbyt długie.

Nils
źródło
1
Twoje wyjaśnienie ma sens, ale jest to sprzeczne z tym, co man tcpmówi o tcp_rmem„s wartość maksymalna: the maximum size of the receive buffer used by each TCP socket. This value does not override the global net.core.rmem_max- Zobacz również stackoverflow.com/questions/31546835/... . Jest man tcpźle?
nh2
@ nh2 To nie byłby pierwszy raz, gdy strona podręcznika jest błędna.
Nils,
1
Jak dokładnie to przetestowałeś?
Wildcard
1
@Wildcard Ustawiam wartość i czytam drugą wartość po Ustawieniach pierwszego
Nils
3
@Nils, samo czytanie wartości nie powie ci, czy jeden przesłonił inny - musisz faktycznie spróbować buforu TCP, który przekracza bufor net.core. [Wmem / rmem] _max, aby przetestować takie zastąpienie.
Jordan Pilat,