1. 程式人生 > >kernel中socket buffer相關引數

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的記憶體
high:全部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分配這個值的記憶體大小
default:每個tcp socket預設寫buffer緩衝區,會覆蓋net.core.wmem_default
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