tcp_mem lebih penting karena mendefinisikan bagaimana tcp stack seharusnya berperilaku ketika menyangkut penggunaan memori. IMO kirim dan terima buffer harus merupakan kelipatan dari tcp_mem. Berikut ini tautan ke rumus untuk menerima buffer: http://www.acc.umu.se/~maswan/linux-netperf.txt . Pendeknya:
Overheadnya adalah: window / 2 ^ tcp_adv_win_scale (default tcp_adv_win_scale adalah 2) Jadi untuk parameter default linux untuk jendela recieve (tcp_rmem): 87380 - (87380/2 ^ 2) = 65536. Diberi tautan transatlantik (150 ms RTT), kinerja maksimum berakhir pada: 65536 / 0,150 = 436906 byte / detik atau sekitar 400 kbyte / detik, yang sangat lambat hari ini. Dengan ukuran standar yang ditingkatkan: (873800 - 873800/2 ^ 2) /0.150 = 4369000 byte / s, atau sekitar 4Mbytes / s, yang beresonansi untuk jaringan modern. Dan perhatikan bahwa ini adalah default, jika pengirim dikonfigurasi dengan ukuran jendela yang lebih besar, ia akan dengan senang hati meningkatkan hingga 10 kali lipat ini (8738000 * 0,75 / 0,150 = ~ 40Mbytes / s), cukup bagus untuk jaringan modern.
Inilah yang dikatakan artikel tentang tcp_mem:
Apa yang Anda hapus adalah batas buatan untuk kinerja tcp, tanpa batas itu Anda dibatasi oleh bandwidth dan kerugian end-to-end yang tersedia. Jadi Anda mungkin menjenuhkan uplink Anda lebih efektif, tetapi tcp pandai menangani hal ini.
IMO nilai tcp_mem tengah yang lebih besar mempercepat koneksi dengan hilangnya keamanan yang lebih rendah dan sedikit meningkatkan penggunaan memori.
Anda dapat memantau tumpukan jaringan dengan:
grep skbuff /proc/slabinfo