これがこの質問の最良のフォーラムではない場合はご容赦ください。しかし、プログラミング自体よりもカーネルに関連しているようです。
統計をグラフ化して監視できるように、開いているポートをシステムに照会するスクリプトを書いています。このために、iprouteパッケージの「ss」コマンドを使用しています。実行ss -s|grep estab
すると、次のような出力が表示されます。
TCP: 296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0
私の質問は、TIMEWAIT状態の計算されたソケットを示すtimewait変数に関係しています。スラッシュの後に何の数字が参照されているのかを理解しようとすると、ソースコードを検索するという急な冒険になり、最終的に次のスニペットを見つけることになりました。
printf("TCP: %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
sn.tcp_estab,
s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
s.tcp_orphans,
slabstat.tcp_syns,
s.tcp_tws, slabstat.tcp_tws,
slabstat.tcp_ports
);
「slabstat」が意味するものを検索した結果、最終的にスラブキャッシュと/ proc / slabinfoのレポートインターフェイスについて学習したことは認めざるを得ません。
質問:スラブテーブルはTIME_WAITソケットの計算とどう関係しますか?試したすべてのサーバーでコマンドを実行するたびに、この数値は常にゼロであったため、この数値が報告される理由を把握できていません。
正直なところ、関連するカーネルメーリングリストのいずれかにこれを投稿すると、おそらく最良の回答が得られます。tux.org
—
lkml /
このコードは、スラブに割り当てられている待機ソケットの数を示しています。IMOそれだけでメモリ使用量を決定するのに役立ちます
—
ウルリッヒDangel