Existe uma técnica no Windows que pode limitar seletivamente a largura de banda de um processo em execução?
Existe uma técnica no Windows que pode limitar seletivamente a largura de banda de um processo em execução?
Respostas:
Eu uso o Net Limiter , que tem uma versão gratuita, mas infelizmente você precisará pagar pelo recurso de limitação .
O NetLimiter é a melhor ferramenta de controle e monitoramento de tráfego da Internet projetada para Windows. Você pode usar o NetLimiter para definir limites de taxa de transferência de download / upload para aplicativos ou até conexão única e monitorar o tráfego da Internet.
Juntamente com esse recurso exclusivo, o Netlimiter oferece um conjunto abrangente de ferramentas estatísticas da Internet. Inclui medição de tráfego em tempo real e estatísticas de tráfego da Internet por aplicativo a longo prazo
Existem boas razões para considerar a abordagem "roteador voltado para a Internet" para gerenciar uma rede como um todo - no entanto, como a pergunta original era específica e o usuário pode muito bem ser o único computador na rede, isso é uma preocupação secundária.
Por uma das outras respostas principais, por um tempo testei o NetBalancer . Funciona muito bem - e é fácil de configurar.
O NetBalancer está disponível para compra em sua página da web por cerca de US $ 50. A versão de teste / gratuita permite monitorar as conexões - mas não permite a otimização.
A alternativa é NetLimiter . Ele tem um período de teste gratuito - mas começa em ~ $ 20 para a versão Lite ou ~ $ 30 para a versão Pro. O NetLimiter é o aplicativo go-to testado e testado para muitos SysAdmins.
Quando a avaliação do NetLimiter termina, até você comprar uma licença, ela se torna uma ferramenta apenas de monitoramento - e não oferece mais suporte à otimização. Isso ainda pode ser útil - mas não para este caso de uso.
Embora o uso de um roteador inteligente / altamente configurável seja geralmente a melhor abordagem para o gerenciamento de rede holística , a desconexão entre isso e a pergunta original não é explicada na resposta do @ ZaB. A pergunta original é especificamente sobre um processo - que um roteador não tem como identificar com segurança.
A única variação que é quase útil nesse sentido é se um aplicativo se comunicar apenas por um canal ou tipo de tráfego específico que possa ser facilmente identificado pelo roteador. Um exemplo está abaixo dos downloads Origin da EA:
A origem atualmente usa Akamai. Normalmente, defino downloads / atualizações automáticos para serem executados a qualquer momento - mas prefiro que ele não use toda a capacidade da linha enquanto estou ocupado fazendo outras coisas mais importantes. Origem passa a ser muito ruim em este tipo de coisa, portanto, ele não suporta agendas de download ou limitação de download. Atualmente, minha área de trabalho está baixando um jogo usando o servidor "a1750.d.akamai.net". Um roteador MikroTik (um exemplo de roteador inteligente) pode observar que esse nome DNS foi usado (ele estará no cache DNS com um endereço IP) e pode ser configurado temporariamente para adicionar o endereço IP do servidor de destino a uma "lista de endereços" " Todo o tráfego de / para a lista de endereços pode ser adicionado a uma fila regulada, tecnicamente, limitando um único aplicativo.
A abordagem acima é ingênua, no entanto. A EA pode, a qualquer momento, alterar o nome do servidor, o protocolo usado ou outro serviço não relacionado usando a infraestrutura da Akamai. Agora minha nova regra brilhante se torna inútil e quebrada.
Aqui está o meu pobre homem estrangulando:
Ele não limita exatamente a largura de banda, mas suspende / retoma o processo de comer largura de banda e, portanto, libera uma largura de banda para outras aplicações. E é grátis!
Você precisa do PsSuspend.exe (coloquei esse arquivo em C: \ tools \ sysinternals) e um arquivo em lotes (por exemplo) slow.bat:
@echo off
:START
c:\tools\sysinternals\pssuspend.exe %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
c:\tools\sysinternals\pssuspend.exe -r %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
goto START
Agora abra uma linha de comando como administrador e execute o arquivo em lotes com o programa throttles como parâmetro
slow.bat filetransfer.exe
(substitua filetransfer.exe pelo nome do seu programa)
Se tiver terminado, pressione CTRL-C e cancele o lote.
Se o programa ainda estiver em execução, considere retomar o programa caso você interrompa o lote enquanto o programa foi suspenso:
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(substitua filetransfer.exe pelo nome do seu programa)
Você pode usar a Diretiva de Grupo do Windows para limitar a largura de banda de qualquer processo. Vamos para:
Aqui você pode ver as políticas atuais e criar novas políticas:
O assistente permite criar uma política para limitar a largura de banda para:
E suas políticas podem ser filtradas por:
Você também pode criar essas políticas no Powershell executando:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Embora isso possa exigir direitos de administrador, e parece haver um erro em que políticas criadas como essa não aparecerão na GUI.