淺談linux性能調優之十四:調節socket緩衝區

    應用程序經過socket系統調用和遠程主機進行通信,每個socket都有一個讀寫緩衝區。讀緩衝區保存了遠程主機發送過來的數據,若是緩衝區已滿,則數據會被丟棄,寫緩衝期保存了要發送到遠程主機的數據,若是寫緩衝區已慢,則系統的應用程序在寫入數據時會阻塞。可知,緩衝區是有大小的。
    BDP 給出了一種簡單的方法來計算理論上最優的 TCP socket 緩衝區大小(其中保存了排隊等待傳輸和等待應用程序接收的數據)。若是緩衝區過小,那麼 TCP 窗口就不能徹底打開,這會對性能形成限制。若是緩衝區太大,那麼寶貴的內存資源就會形成浪費。若是您設置的緩衝區大小正好合適,那麼就能夠徹底利用可用的帶寬
BDP = 帶寬 * 延遲 (單位: 字節)
    帶寬*延時/8*2^20 = ***B
      帶寬: Mebibites     延時:s (RTT)

注意:調整tcp前,必須調整core,對於tcp,udp來講不能超出core的限制

默認值:
net.core.rmem_max = 131071 128K
net.core.rmem_default = 124928
net.core.wmem_max = 131071
net.core.wmem_default = 124928

net.ipv4.tcp_rmem = 4096 87380 2691072
net.ipv4.tcp_wmem = 4096 16384 2691072

示例: 
帶寬:1.5M   100M
延時:500ms  3000ms
1.5 * 0.5 / 8 * 2^20         ======= net.ipv4.tcp_wmem
100 * 3 / 8 * 2^20           ======= net.ipv4.tcp_wmem
相關文章
相關標籤/搜索