it-swarm-ru.tech

Способ ограничения пропускной способности программ на Windows?

Есть ли в Windows методика, которая может выборочно ограничивать пропускную способность запущенного процесса?

84
James McMahon

Я использую Net Limiter , у которого есть бесплатная версия, но, к сожалению, вам придется заплатить за функцию ограничения .

NetLimiter - это инструмент для контроля и мониторинга интернет-трафика, разработанный для Windows. Вы можете использовать NetLimiter, чтобы установить ограничения скорости загрузки/выгрузки для приложений или даже одного соединения и контролировать их интернет-трафик.

Наряду с этой уникальной функцией, Netlimiter предлагает полный набор инструментов для интернет-статистики. Включает измерение трафика в реальном времени и долгосрочную статистику интернет-трафика для каждого приложения

21
user

Есть веские причины взглянуть на подход «Интернет-маршрутизатор» для управления сетью в целом - однако, поскольку исходный вопрос был конкретным, и пользователь вполне может быть единственным компьютером в сети, это вторичная проблема.

NetBalancer


Согласно одному из лучших ответов, какое-то время я тестировал NetBalancer . Это работает очень хорошо - и легко настроить.

NetBalancer можно приобрести на их веб-странице примерно за 50 долларов. Пробная/бесплатная версия позволяет отслеживать соединения, но не позволяет регулировать.

NetLimiter


Альтернатива - NetLimiter . Он имеет бесплатный пробный период -, но начинается с ~ $ 20 для версии Lite или ~ $ 30 для версии Pro. NetLimiter - это проверенное приложение для многих пользователей SysAdmin.

Когда пробная версия NetLimiter заканчивается, пока вы не купите лицензию, она станет инструментом только для мониторинга и больше не поддерживает регулирование. Это все еще может быть полезно - но не для этого варианта использования.

Использование маршрутизатора (с объяснением того, почему это не очень хороший подход к этому варианту использования).


Хотя использование интеллектуального/настраиваемого маршрутизатора, как правило, является лучшим подходом к целостному управлению сетью, разрыв между этим и первоначальным вопросом не объясняется в ответе @ ZaB. Первоначальный вопрос конкретно касается процесса - который маршрутизатор не может надежно идентифицировать.

Один вариант, близкий к полезному с этой стороны, заключается в том, что приложение взаимодействует только по определенному каналу или типу трафика, который легко может быть идентифицирован маршрутизатором. Ниже приведен пример загрузок EA Origin:

Происхождение в настоящее время использует Akamai. Обычно я устанавливаю автоматические загрузки/обновления для запуска в любое время, но я бы предпочел, чтобы он не использовал всю пропускную способность линии, пока я занят другими важными вещами. Происхождение оказывается очень плохим at thissort of thing , поэтому оно не поддерживает расписания загрузки или регулирование загрузки. В настоящее время мой рабочий стол загружает игру, используя сервер "a1750.d.akamai.net". Маршрутизатор MikroTik (пример интеллектуального маршрутизатора) может принять к сведению, что это имя DNS использовалось (оно будет находиться в кеше DNS с IP-адресом), и его можно временно настроить для добавления IP-адреса сервера назначения в «список адресов». ». Весь трафик в/из списка адресов может быть добавлен в дросселированную очередь, тем самым, технически, дросселируя одно приложение.

Однако вышеприведенный подход наивен. EA может в любое время изменить имя сервера, используемый протокол или другую несвязанную службу, использующую инфраструктуру Akamai, которая может быть непреднамеренно заблокирована. Теперь мое блестящее новое правило стало бесполезным и нарушенным.

9
zaTricky

Вот дросселирование моего бедного человека:

Это не точно ограничивает полосу пропускания, а скорее приостанавливает/возобновляет процесс использования полосы пропускания и, таким образом, освобождает некоторую полосу пропускания для других приложений. И это бесплатно!

Вам нужен PsSuspend.exe (я поместил этот файл в C:\tools\sysinternals) и командный файл (например, 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

Теперь откройте командную строку от имени администратора и запустите командный файл с программой Throttles в качестве параметра

slow.bat filetransfer.exe

(замените filetransfer.exe на имя вашей программы)

Если все готово, нажмите CTRL-C и отмените пакет.

Если программа все еще работает, рассмотрите возможность возобновления программы в случае, если вы прервали пакет, пока программа была приостановлена:

c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe

(замените filetransfer.exe на имя вашей программы)

2
bebbo

Вы можете использовать групповую политику Windows для регулирования пропускной способности любого процесса. Идти к:

  • Пуск> Пуск> gpedit.msc
  • Конфигурация компьютера/пользователя (выберите один или другой)> Настройки Windows> QoS на основе политик

Здесь вы можете увидеть текущие политики и создать новые:

  • Либо щелкните правой кнопкой мыши «QoS на основе политик», либо выберите «Действие»> Создать новую политику ...
  • Затем следуйте указаниям мастера, чтобы создать новую политику регулирования.

Мастер позволяет вам создать политику регулирования пропускной способности для:

  • Все на вашем компьютере
  • Конкретные процессы
  • Специальные веб-сайты (только для приложений, использующих протоколы HTTP)

И ваши политики могут быть отфильтрованы по:

  • Протоколы TCP или UDP
  • IP источника/назначения
  • Порты источника/назначения

Вы также можете создать эти политики в Powershell , запустив:

New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB

Хотя для этого могут потребоваться права администратора, и, по-видимому, существует ошибка , где созданные политики не будут отображаться в графическом интерфейсе.

0
Silveri