Есть ли в Windows метод, который может выборочно ограничивать пропускную способность запущенного процесса?
4 ответа
Я использую Net Limiter, у которого есть бесплатная версия, но, к сожалению, вам придется заплатить за функцию ограничения.
NetLimiter - это инструмент для контроля и мониторинга интернет-трафика, разработанный для Windows. Вы можете использовать NetLimiter, чтобы установить ограничения скорости загрузки / выгрузки для приложений или даже отдельного соединения и контролировать их интернет-трафик.
Наряду с этой уникальной функцией Netlimiter предлагает полный набор инструментов для интернет-статистики. Включает измерение трафика в реальном времени и долгосрочную статистику интернет-трафика для каждого приложения
Есть веские причины взглянуть на подход «Интернет-маршрутизатор» для управления сетью в целом - однако, поскольку первоначальный вопрос был конкретным, и пользователь вполне может быть единственным компьютером в сети, это вторичная проблема.
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, которая может быть непреднамеренно ограничена. Теперь мое блестящее новое правило стало бесполезным и нарушенным.
Вот душит мой бедняк:
Он точно не ограничивает полосу пропускания, он скорее приостанавливает / возобновляет процесс использования полосы пропускания и, таким образом, освобождает некоторую полосу пропускания для других приложений. И это бесплатно!
Вам нужен 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 на имя вашей программы)
Вы можете использовать групповую политику Windows для регулирования пропускной способности любого процесса. Идти к:
- Меню Пуск> Выполнить> gpedit.msc
- Конфигурация компьютера / пользователя (выберите один или другой)> Настройки Windows> QoS на основе политик
Здесь вы можете увидеть текущие политики и создать новые:
- Либо щелкните правой кнопкой мыши "QoS на основе политик", либо выберите "Действие"> Создать новую политику ...
- Затем следуйте указаниям мастера, чтобы создать новую политику регулирования.
Мастер позволяет вам создать политику регулирования пропускной способности для:
- Все на вашем компьютере
- Конкретные процессы
- Специальные веб-сайты (только для приложений, использующих протоколы HTTP)
И ваши политики могут быть отфильтрованы по:
- Протоколы TCP или UDP
- IP источника / назначения
- Порты источника / назначения
Вы также можете создать эти политики в Powershell , запустив:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Хотя для этого могут потребоваться права администратора, и, похоже, существует ошибка, из-за которой созданные политики не отображаются в графическом интерфейсе.