tcp_mem daha önemlidir çünkü tcp yığınının bellek kullanımı söz konusu olduğunda nasıl davranması gerektiğini tanımlar. IMO gönderme ve alma arabelleği, tcp_mem öğesinin katı olmalıdır. Alma tamponu için bir formülün bağlantısı: http://www.acc.umu.se/~maswan/linux-netperf.txt . Kısacası:
Genel gider: window / 2 ^ tcp_adv_win_scale (tcp_adv_win_scale varsayılanı 2) Yani alıcı penceresi için linux varsayılan parametreleri (tcp_rmem): 87380 - (87380/2 ^ 2) = 65536. Transatlantik bağlantı (150 ms RTT) verildi, maksimum performans şu şekildedir: 65536 / 0.150 = 436906 bayt / s veya yaklaşık 400 kbyte / s, bugün gerçekten yavaş. Artan varsayılan boyutla: (873800 - 873800/2 ^ 2) /0.150 = 4369000 bayt / s veya modern bir ağ için resonable olan yaklaşık 4Mbayt / s. Ve bunun varsayılan olduğunu unutmayın, eğer gönderen daha büyük bir pencere boyutuyla yapılandırılırsa, modern bir ağ için oldukça iyi olan 10 katına kadar mutlu olacaktır (8738000 * 0.75 / 0.150 = ~ 40Mbytes / s).
Makalenin tcp_mem hakkında söylediği şey:
Kaldırdığınız şey, tcp performansı için yapay bir sınırdır, bu sınır olmadan mevcut uçtan uca bant genişliği ve kaybı ile sınırlandırılırsınız. Böylece, uplink'inizi daha etkili bir şekilde doyurabilirsiniz, ancak tcp bunu ele almakta iyidir.
IMO'nun daha büyük bir orta tcp_mem değeri, daha az güvenlik kaybıyla bağlantıyı hızlandırır ve bellek kullanımını hafifçe artırır.
Ağ yığınını aşağıdakilerle izleyebilirsiniz:
grep skbuff /proc/slabinfo