Есть ли в Windows методика, которая может выборочно ограничивать пропускную способность запущенного процесса?
Есть ли в Windows методика, которая может выборочно ограничивать пропускную способность запущенного процесса?
Ответы:
Я использую Net Limiter , у которого есть бесплатная версия, но, к сожалению, вам придется заплатить за функцию ограничения .
NetLimiter - это инструмент для контроля и мониторинга интернет-трафика, разработанный для Windows. Вы можете использовать NetLimiter, чтобы установить ограничения скорости загрузки / выгрузки для приложений или даже одного соединения и контролировать их интернет-трафик.
Наряду с этой уникальной функцией, Netlimiter предлагает полный набор инструментов для интернет-статистики. Включает измерение трафика в реальном времени и долгосрочную статистику интернет-трафика для каждого приложения
Есть веские причины взглянуть на подход «Интернет-маршрутизатор» для управления сетью в целом - однако, поскольку исходный вопрос был конкретным, и пользователь вполне может быть единственным компьютером в сети, это вторичная проблема.
За один из лучших ответов, некоторое время я тестировал NetBalancer . Это работает очень хорошо - и легко настроить.
NetBalancer можно приобрести на их веб-странице примерно за 50 долларов. Пробная / бесплатная версия позволяет отслеживать соединения, но не позволяет регулировать.
Альтернативой является 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 для регулирования пропускной способности любого процесса. Перейти к:
Здесь вы можете увидеть текущие политики и создать новые:
Мастер позволяет вам создать политику регулирования пропускной способности для:
И ваши политики могут быть отфильтрованы по:
Вы также можете создать эти политики в Powershell , запустив:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Хотя для этого могут потребоваться права администратора, и, похоже, существует ошибка, из-за которой созданные политики не отображаются в графическом интерфейсе.