Por que ler / proc / net / tcp demora muito tempo, ss retorna rapidamente o mesmo tipo de dados sobre a tabela de conexões?

4

No Linux 2.6.32, se você ler (por exemplo, cat) / proc / net / tcp, em um sistema muito carregado (por exemplo, um servidor web), você verá que a leitura de 100K 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 isso faz com que seja muito mais rápido?

    
por Emmel 23.06.2016 / 17:39

1 resposta

4

ss usa a camada de soquete AF_NETLINK para falar com o kernel. Este é um protocolo de nível mais baixo, mas permite que os dados sejam transferidos muito rapidamente e em grandes blocos. Um strace rápido no CentOS 7 mostra que a janela de transferência é de 1Mb.

    
por 23.06.2016 / 18:54