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

kernel中socket buffer相關參數

tcp max socket min 內核 ets 如果 分開 soc

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

kernel中socket buffer相關參數