kernel中socket buffer相關參數
net.core.rmem_default:內核給單個socket分配的默認讀buffer大小
net.core.rmem_max:所有socket的讀buffer不能超過這個值(不清楚tcp和udp有沒有分開)
net.core.wmem_default:內核給單個socket分配的默認寫buffer大小
net.core.wmem_max:所有socket的寫buffer不能超過這個值(不清楚tcp和udp有沒有分開)
net.ipv4.tcp_mem:內核根據下面的數值對tcp socket內存進行限制
low:如果全部tcp socket分配的內存少於這個值,不做限制
pressure:如果全部tcp socket分配的內存超過這個值,內核將調整每個tcp socket的內存
net.ipv4.tcp_rmem
min:當所有tcp socket使用內存緊張時,內核保證至少給每個tcp socket的讀buffer分配這個值的內存大小
default:每個tcp socket默認讀buffer緩沖區,會覆蓋net.core.rmem_default
max:所有tcp socket讀buffer總大小上限,不會覆蓋net.core.rmem_max
net.ipv4.tcp_wmem
min:當所有tcp socket使用內存緊張時,內核保證至少給每個tcp socket的寫buffer分配這個值的內存大小
max:所有tcp socket寫buffer總大小上限,不會覆蓋net.core.wmem_max
net.ipv4.udp_mem:內核根據下面的數值對udp socket內存進行限制
low:如果全部udp socket分配的內存少於這個值,不做限制
pressure:如果全部udp socket分配的內存超過這個值,內核將調整每個udp socket的內存
high:全部udp socket分配的內存不超過這個值,這個值覆蓋其他限制
net.ipv4.udp_rmen_min:當所有udp socket使用內存緊張時,內核保證至少給每個udp socket的讀buffer分配這個值的內存大小
net.ipv4.udp_wmen_min:當所有udp socket使用內存緊張時,內核保證至少給每個udp socket的寫buffer分配這個值的內存大小
getsockopt()可以設置socket相關屬性,其中有SO_RCVBUF和SO_SNDBUF屬性設置每個socket讀寫buffer大小
對於udp:
socket屬性 內核屬性
SO_RCVBUF core.rmem_default
SO_SNDBUF core.wmem_default
對於tcp:
socket屬性 內核屬性
SO_RCVBUF tcp_rmem.default
SO_SNDBUF tcp_wmem.default
以上參考:
http://man7.org/linux/man-pages/man7/udp.7.html
http://man7.org/linux/man-pages/man7/tcp.7.html
http://man7.org/linux/man-pages/man7/socket.7.html
kernel中socket buffer相關參數