Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
22
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@timwata

Linux TCP/IP parameter note

簡単なメモ

net.core.(r|w)mem_max

setsockopt(2) の SO_RCVBUF, SO_SNDBUF で指定できる値の最大値。
SO_RCVBUF, SO_SNDBUF はそれぞれソケットの受信・送信バッファのサイズ。
rmem_max は初期 window サイズの上限値にもなる。

net.ipv4.tcp_mem

システム全体で TCP が消費できるメモリの最大値。単位はページ。
左から順に min/pressure/max.

# CentOS 7.0.1406 での例
# この場合は 135MB, 181MB, 271MB になる
$ cat /proc/sys/net/ipv4/tcp_mem 
33972   45296   67944

デフォルト値は起動時の空きメモリをベースに計算される。
min は使えることが保証される値。
TCP 全体の消費量が pressure を超えるとメモリ消費が抑制されはじめる。
具体的には windows サイズを大きくすることをやめたり送信バッファの拡張を控えて最小限のメモリ確保で動作するようになる。
このモードになった回数は /proc/net/netstat の TCPMemoryPressures で確認できる。
これは min を下回るまで続く。(下回ると解除される)
max を超えることは無く、仮に超えるようなメモリ確保が走ると失敗する。

net.ipv4.tcp_(r|w)mem

ソケット1つ1つが使うバッファのサイズ。
左から順に min, deault, max.

$ cat /proc/sys/net/ipv4/tcp_rmem
4096    87380   6291456

$ cat /proc/sys/net/ipv4/tcp_wmem
4096    16384   4194304

ソケットが作られると送受信バッファはデフォルトが割り当てられ、必要に応じて最大値まで大きくなる。
メモリに余裕があるならば最大値の設定を変えることで性能を向上させられる。
ただしこれはソケットごとの設定のため、ソケット数の最大値や運用状況に応じて計算する必要がある。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
22
Help us understand the problem. What are the problem?