Por que a leitura de /proc/net/tcp demora muito e é rápida para retornar o mesmo tipo de dados sobre a tabela de conexões?

Por que a leitura de /proc/net/tcp demora muito e é rápida para retornar o mesmo tipo de dados sobre a tabela de conexões?

No Linux 2.6.32, se você ler (por exemplo, cat) /proc/net/tcp, em um sistema muito carregado (por exemplo, um servidor web), descobrirá que a leitura de 100 mil entradas leva mais de 30 segundos. Isso é muito tempo.

O que está acontecendo nos bastidores? Há bloqueio acontecendo?

Muitas pessoas mencionam a velocidade do comando ‘ss’. O que o comando 'ss' está fazendo que 'cat /proc/net/tcp' ou 'netstat' não está fazendo, o que o torna muito mais rápido?

Responder1

ssusa a AF_NETLINKcamada de soquete para se comunicar com o kernel. Este é um protocolo de nível inferior, mas permite que os dados sejam transferidos muito rapidamente e em grandes blocos. Uma rápida olhada straceno CentOS 7 mostra que ele define a janela de transferência para 1 MB.

informação relacionada