Limitação da taxa de transferência de rede de um processo já iniciado? (Linux / FreeBSD)

10

Existe algum utilitário para limitar a taxa de transferência de rede de um processo depois que ele foi lançado? Exemplo simples: você observa que um usuário usa toda a sua largura de banda de upload usando scp e deseja limitar a taxa ou diminuir a prioridade da transferência.

Eu acho que eu poderia usar uma combinação de iptables / tc ou pf para conseguir isso, mas eu queria saber se há uma ferramenta "one-shot" disponível (como trickle com uma opção --pid ^^)?

    
por jbdenis 29.12.2010 / 17:05

5 respostas

3

Infelizmente não existe essa solução para o FreeBSD. Existem muitas soluções como dummynet / ipfw ou altq / pf que são usadas para limitar o uso da rede com base em padrões diferentes, mas não em pids.

No linux, há uma maneira de limitar o uso da rede por usuário:

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

Acho que não há solução para limitar a utilização da rede com base no pid.

    
por 29.12.2010 / 23:22
1

lsof o processo para obter as portas de rede que o proc está usando. Depois de saber quais portas estão sendo usadas, você pode usar as regras IPTABLES para classificar essas portas. Esses artigos devem dar uma ideia melhor: link link link

    
por 11.01.2011 / 07:07
0

No Linux, mesmo a combinação de iptables e tc pode ser um problema difícil, já que a opção "--pid-owner" foi abandonada do módulo iptables "owner" (veja a nota abaixo da tabela aqui . De fato, somente essa associação (processamento de pacotes) parece ser complicada, enquanto podemos facilmente fazer o resto, ou seja, filtrar e limitar os pacotes de forma bastante eficiente.

    
por 30.12.2010 / 00:11
0

Eu não acho que exista uma solução pronta para isso. Mas, usando ferramentas padrão do Linux, você pode hackear um script que fará a coisa.

Primeiro, você pode obter uma lista de todas as conexões de um processo específico com lsof. Então, você pode criar políticas de entrada com o tc para essas conexões.

    
por 04.01.2011 / 06:54
0

Grosseiramente, se o processo estiver bom até +20, então qualquer outra coisa em execução no sistema terá prioridade e o trabalho será agendado com menos frequência, então será mais difícil preencher os buffers ou processar pacotes, o que deve levar para algum estrangulamento TCP. Será esporádico, mas pode ajudar o suficiente.

# renice 20 -p $pid
    
por 05.01.2011 / 12:33