カーネルソケット構造とTCP_DIAG

カーネルソケット構造とTCP_DIAG

TCPを使用してライブデータサーバーに接続するソフトウェアを開発していますが、一部の接続が失われました。私の考えでは、クライアントがサーバーからデータを十分に速く読み取ることができないようです。したがって、TCPソケットを監視したいと思います。そのために「ss」ツールを見つけました。

このツールを使用すると、各ソケットの状態を表示できます。以下はコマンド出力のサンプルラインです。ss -inm 'src *:50000'

ESTAB      0      0             184.7.60.2:50000       184.92.35.104:1105
  mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40

私の質問は:メモリ部分はどういう意味ですか?ツールのソースコードを見ると、データがカーネル構造(sockin sock.h)から出てくることがわかります。より正確には、次の領域から来ています。

r = sk->sk_rmem_alloc
w = sk->sk_wmem_queued;
f = sk->sk_forward_alloc;
t = sk->sk_wmem_alloc;

それはどういう意味なのか知っている人はいますか?私の推測は次のとおりです

  • rmem_alloc: インバウンドバッファのサイズ
  • wmem_alloc:アウトバウンドバッファのサイズ
  • sk_forward_alloc:???
  • sk->sk_wmem_queued:???

私のバッファサイズは次のとおりです。

net.ipv4.tcp_rmem = 4096        87380   174760
net.ipv4.tcp_wmem = 4096        16384   131072
net.ipv4.tcp_mem = 786432       1048576 1572864
net.core.rmem_default = 110592
net.core.wmem_default = 110592
net.core.rmem_max = 1048576
net.core.wmem_max = 131071

ベストアンサー1

sk_forward_alloc現在のソケットクォータで使用可能な合計メモリである将来割り当てられたメモリ。

sk_wmem_queued転送キューで待機中で、まだ転送または承認されていないソケット転送バッファが使用するメモリ量。

第9章では、TCPメモリ管理の詳細を学ぶことができます。Linux での TCP/IP アーキテクチャ、設計、および実装の作成者: Sameer Seth, M. Ajaykumar Venkatesulu

おすすめ記事