2010-04-28 22:55:18 +0000 2010-04-28 22:55:18 +0000
86
86

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

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

回答 (4)

22
22
22
2012-02-18 20:40:44 +0000

私が使っているのは Net Limiter という無料版があるのですが、 しかし、残念ながら制限機能は有料になります です。

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

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

が含まれています。

9
9
9
2015-09-10 18:35:38 +0000

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

NetBalancer


他のトップアンサーの一つによると、しばらくの間、私は NetBalancer をテストしました。これは非常にうまく動作し、設定も簡単です。

NetBalancerは、彼らのウェブページで約50ドルで購入できます。試用版/無料版では、接続を監視することができますが、スロットリングはできません。

NetLimiter


代替品は NetLimiter です。これには無料の試用期間がありますが、Lite版は~$20、Pro版は~$30からです。NetLimiterは、多くのSysAdminsにとって、試行錯誤されてきた、使い勝手の良いアプリケーションです。

NetLimiter のトライアルが終了すると、ライセンスを購入するまでの間、NetLimiter は監視専用のツールとなり、スロットリングはサポートされなくなります。これはまだ便利ですが、このユースケースでは使えません。

ルーターの使用(このユースケースには良いアプローチではない理由の説明付き)。


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

この質問で有用に近いバリエーションは、アプリケーションがルータによって容易に識別できる特定のチャネルまたはタイプのトラフィックでしか通信しない場合です。以下はEAのOriginのダウンロードの例です。

Originは現在、アカマイを使用しています。通常、私は自動ダウンロード/更新をいつでも実行できるように設定していますが、他の重要な作業に追われている間は、回線容量をすべて使用しないようにしたいと思っています。Origin は thing this sort で非常に 悪い となっており、ダウンロードスケジュールやダウンロードスロットリングをサポートしていません。現在、私のデスクトップは「a1750.d.akamai.net」というサーバーを使ってゲームをダウンロードしています。MikroTikルータ(スマートルータの一例)は、このDNS名が使用されたことをメモして(IPアドレスと一緒にDNSキャッシュに入る)、一時的に宛先サーバのIPアドレスを「アドレスリスト」に追加するように設定することができます。このアドレスリストへの/からのトラフィックはすべてスロットルキューに追加され、技術的には単一のアプリケーションをスロットル化することができます。

しかし、上記のアプローチは甘い。EA はいつでもサーバー名や使用するプロトコルを変更したり、アカマイのインフラを使用している別の無関係なサービスが不注意にもスロットルされたりする可能性があるのです。これで、私のピカピカの新しいルールは無用の長物となり、壊れてしまいました。

3
3
3
2018-11-18 10:38:36 +0000

Windows グループ ポリシーを使用して、任意のプロセスの帯域幅をスロットルすることができます。次の場所に移動します。

  • Start Menu ¶> Run ¶> gpedit.msc
  • Computer/User Configuration (pick one or other)
  • Computer/User Settings ¶> Policy-based QoS ここでは、現在のポリシーを表示し、以下の方法で新しいポリシーを作成することができます。

  • “Policy-based QoS "を右クリックするか、"Action "に進みます。

  • その後、ウィザードに従って新しいスロットリングポリシーを作成する。

ウィザードでは、どちらかの帯域幅をスロットルするポリシーを作成することができます。

  • コンピュータ上のすべてのもの
  • 特定のプロセス
  • 特定のウェブサイト(HTTPプロトコルを使用するアプリケーションのみ)

ポリシーは以下のいずれかでフィルタリングすることができます。

  • TCPまたはUDPプロトコル
  • ソース/デスティネーションIP
  • ソース/デスティネーションポート

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

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

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

2
2
2
2016-10-20 10:05:21 +0000

これは、帯域幅を正確に制限するのではなく、むしろ帯域幅を食うプロセスを一時停止したり再開したりするので、他のアプリケーションのために帯域幅を解放してくれます。しかも無料! **

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

さて、管理者としてコマンドラインを開き、slotlesプログラムをパラメータとしてバッチファイルを実行する

slow.bat filetransfer.exe

(filetransfer.exeをプログラム名に置き換える)

終わったら、CTRL-Cを叩いてバッチをキャンセルします。

プログラムがまだ実行中の場合は、プログラムが中断されている間にバッチを中断した場合に備えて、プログラムを再開することを検討してください。

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

(filetransfer.exeをプログラム名に置き換えてください)