83

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

4 ответа4

21

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

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

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

9

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

NetBalancer


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

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

NetLimiter


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

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

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


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

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

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

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

2

Вот душит мой бедняк:

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

Вам нужен 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 на имя вашей программы)

0

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

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

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .