chk cloud_应用程序

  应用程序通过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

 chk cloud_数据_02

chk cloud_系统调用_03