
Linux 2.6.32 では、負荷の高いシステム (Web サーバーなど) で /proc/net/tcp を読み取る (たとえば cat) と、100K エントリの読み取りに 30 秒以上かかることがわかります。これは長い時間です。
舞台裏では何が起こっているのでしょうか? ロックがかかっているのでしょうか?
多くの人が「ss」コマンドの速度について言及しています。「cat /proc/net/tcp」や「netstat」では実行されないのに「ss」コマンドでは実行されて、速度が大幅に向上する仕組みは何でしょうか?
答え1
ss
ソケット レイヤーを使用してAF_NETLINK
カーネルと通信します。これは低レベルのプロトコルですが、データを非常に高速かつ大きなチャンクで転送できます。CentOS strace
7 で簡単に確認すると、転送ウィンドウが 1Mb に設定されていることがわかります。