web-dev-qa-db-ja.com

Windows上のプログラムの帯域幅を制限する方法は?

実行中のプロセスの帯域幅を選択的に制限できるWindowsの技術はありますか?

84
James McMahon

私は Net Limiter を使っています。これには無料版があります が、残念ながら制限機能には料金が必要です .

NetLimiterは、Windows用に設計された究極のインターネットトラフィック制御および監視ツールです。 NetLimiterを使用して、アプリケーションまたは単一接続のダウンロード/アップロード転送速度制限を設定し、それらのインターネットトラフィックを監視することができます。

このユニークな機能とともに、Netlimiterは包括的なインターネット統計ツールを提供します。リアルタイムのトラフィック測定と、アプリケーションごとの長期的なインターネットトラフィック統計が含まれます。

21
user

ネットワーク全体を管理するための「インターネットに面したルーター」アプローチを検討するのには十分な理由があります。ただし、元の質問は具体的でユー​​ザーがネットワーク上の唯一のコンピュータである可能性があるため、それが二次的な問題です。

NetBalancer


他のトップアンサーの1つによると、しばらくの間 NetBalancer をテストしました。それは本当にうまくいきます - そして設定も簡単です。

NetBalancerは、Webページで約50ドルで購入できます。試用版/無料版では、接続を監視できます - ただし、調整はできません。

NetLimiter


代替は NetLimiter です。無料試用期間 - がありますが、Liteバージョンの場合は最大$ 20、Proバージョンの場合は最大$ 30です。 NetLimiterは多くのSysAdminのための実証済みのGo-toアプリケーションです。

NetLimiterの試用が終了すると、ライセンスを購入するまでは監視専用のツールになり、スロットルのサポートは中止されます。これはまだ便利な場合があります - しかし、このユースケースではそうではありません。

ルーターを使用する(これがこのユースケースに適した方法ではない理由の説明付き)。


スマート/高度に設定可能なルーターを使用するのが通常全体的なネットワーク管理へのより良いアプローチですが、それと元の質問との間の切断は@ ZaBの答えで説明されていません。元の質問は、プロセスについて具体的に質問することです - それをルータが確実に識別する方法がありません。

この目的に役立つ1つのバリエーションは、アプリケーションがルーターによって容易に識別されることができる特定のチャネルまたはトラフィックの種類を介してのみ通信する場合です。例はEAのOriginダウンロードの下にあります:

Originは現在アカマイを使用しています。通常、私は自動ダウンロード/アップデートをいつでも実行するように設定します - しかし、私は他のより重要なことをするのに忙しいときにすべての回線容量を使用しないことを望みます。 Originはたまたま bad at thissort of thing なので、ダウンロードスケジュールやダウンロード調整はサポートされていません。現在私のデスクトップはサーバー "a1750.d.akamai.net"を使ってゲームをダウンロードしています。 MikroTikルーター(スマートルーターの例)はこのDNS名が使用されていることに注意することができ(IPアドレスと共にDNSキャッシュにあるでしょう)、宛先サーバーの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]を右クリックするか、[アクション]> [新しいポリシーを作成]をクリックします。
  • その後、ウィザードに従って新しい調整ポリシーを作成します。

このウィザードでは、次のいずれかの場合に帯域幅を絞り込むためのポリシーを作成できます。

  • あなたのコンピュータのすべて
  • 特定のプロセス
  • 特定のWebサイト(HTTPプロトコルを使用するアプリケーションのみ)

そして、あなたのポリシーは次のようにフィルタリングされます。

  • TCPまたはUDPプロトコル
  • 送信元/宛先IP
  • 送信元/宛先ポート

これらのポリシーを Powershellで を実行して作成することもできます。

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

これには管理者権限が必要な場合がありますが、 バグ のように作成されたポリシーはGUIに表示されません。

0
Silveri