Way to limit bandwidth of programs on Windows?

86

29

Is there a technique in Windows that can selectively limit bandwidth of a running process?

James McMahon

Posted 2010-04-28T22:55:18.163

Reputation: 3 010

3

There is a whole list of applications here that can do this: http://alternativeto.net/software/netbalancer/

– bgmCoder – 2015-07-29T15:17:14.967

NetBalencers’ new updates do not limit programs as per their statement, the trial is only 7 days, you can only limit 3 softwares (when it does decide to work) and it costs a whopping 50 bucks for the full service. Don’t even bother. – None – 2016-07-07T09:37:14.973

Answers

22

I use Net Limiter, which has a free version, but unfortunately you'll need to pay for the limitation feature.

NetLimiter is an ultimate internet traffic control and monitoring tool designed for Windows. You can use NetLimiter to set download/upload transfer rate limits for applications or even single connection and monitor their internet traffic.

Along with this unique feature, Netlimiter offers comprehensive set of internet statistical tools. It includes real-time traffic measurement and long-term per-application internet traffic statistics

user

Posted 2010-04-28T22:55:18.163

Reputation: 1 853

NetLimiter 4 still has the limiting functionality, and it's in the free version, but is time-limited. – Dan Atkinson – 2016-10-21T17:02:59.317

8No, the lite/pro versions, which allow traffic limiting, aren't free. – demonkoryu – 2013-03-28T10:34:39.860

This one, on contrary, works quite good on Windows XP.

– GSerg – 2013-04-09T15:29:00.433

9

There are good reasons to look at the "Internet facing router" approach for managing a network as a whole - however as the original question was specific and the user may very well be the only computer on the network, that is a secondary concern.

NetBalancer


Per one of the other top answers, for a while I tested out NetBalancer. It works really well - and is easy to configure.

NetBalancer is available for purchase on their web page for about $50. The trial/free version allows you to monitor connections - but does not allow throttling.

NetLimiter


The alternative is NetLimiter. It has a free trial period - but starts at ~$20 for the Lite version or ~$30 for the Pro version. NetLimiter is the tried-and-tested go-to application for many SysAdmins.

When NetLimiter's trial ends, until you buy a license, it becomes a monitoring-only tool - and no longer supports throttling. This can still be useful - but not for this use case.

Using a Router (with an explanation of why this isn't a good approach to this use case).


Though using a smart/highly-configurable router is usually the better approach to wholistic network management, the disconnect between that and the original question is not explained in @ZaB's answer. The original question is specifically asking about a process - which a router has no way reliably to identify.

The one variation that is close to useful on this end is if an application only communicates over a specific channel or type of traffic that easily can be identified by the router. An example is below of EA's Origin downloads:

Origin presently uses Akamai. Typically I set automatic downloads/updates to run at any time - but I'd prefer that it not use all the line capacity while I'm busy doing other more important things. Origin happens to be very bad at this sort of thing, thus it doesn't support download schedules or download throttling. Currently my desktop is downloading a game using the server "a1750.d.akamai.net". A MikroTik router (an example of a smart router) can take note that this DNS name was used (it will be in the DNS cache with an IP address) and can be configured temporarily to add the destination server's IP address to an "address list". All traffic to/from the address list can be added to a throttled queue thereby, technically, throttling a single application.

The approach above is naive however. EA could at any time change the server name, the protocol used, or another unrelated service using the Akamai infrastructure could be inadvertently throttled. Now my shiny new rule is rendered useless and broken.

zaTricky

Posted 2010-04-28T22:55:18.163

Reputation: 222

I'm not sure the free version of NetBalancer still allows bandwidth limitation. Quoting the download page: "The unregistered version works as a monitoring application only, and supports no priorities or rules".

– Gras Double – 2017-04-06T01:06:03.657

Sigh. Curious now about when that changed. I haven't installed Origin since I last "refreshed" my gaming desktop. – zaTricky – 2017-04-06T12:57:41.827

3

You can use Windows Group Policy to throttle the bandwidth of any process. Go to:

  • Start Menu > Run > gpedit.msc
  • Computer/User Configuration (pick one or the other) > Windows Settings > Policy-based QoS

Here you can see the current policies and create new ones by:

  • Either right clicking "Policy-based QoS" or going to "Action" > Create new policy...
  • Then follow the wizard to create a new throttling policy.

The wizard allows you to create a policy to throttle bandwidth for either:

  • Everything on your computer
  • Specific processes
  • Specific websites (only for applications using HTTP protocols)

And your policies can then be filtered by:

  • TCP or UDP protocols
  • Source/destination IP
  • Source/destination ports

You can also create these policies in Powershell by running:

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

Although this might require administrator rights, and there seems to be a bug where policies created like this will not appear in the GUI.

Silveri

Posted 2010-04-28T22:55:18.163

Reputation: 1 781

2

Here is my poor mans throttling:

It does not exactly limit the bandwith, it rather suspends/resume the bandwidth eating process and thus frees some bandwidth for other applications. And it's free!

You need PsSuspend.exe (I put this file into C:\tools\sysinternals) and a batch file (e.g.) 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

Now open a command line as administrator and run the batch file with the throttles program as parameter

slow.bat filetransfer.exe

(replace filetransfer.exe with your program name)

If you are done, hit CTRL-C and cancel the batch.

If the program is still running consider to resume the program in case you interrupted the batch while the program was suspended:

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

(replace filetransfer.exe with your program name)

bebbo

Posted 2010-04-28T22:55:18.163

Reputation: 171

This doesn't really solve the issue. It's a single process fix, you have to know the process which is hogging the bandwidth, and you have to not be actively using it. – Dan Atkinson – 2016-10-21T17:06:00.440

1If you want to "limit the bandwidth of a running process" (that is the question), you know the process, right? And my processes which eat all the bandwidth are especially uploads (makes my internet not usable for anything else) and maybe also downloads. My "poor man's throttling" does the job: I can upload and still use the internet. And yes - it's not a perfect solution. It's for poor men - not buying some software. – bebbo – 2016-10-21T20:34:34.057

1I have to agree with @dan-atkinson. NetBalancer is a good example where the free version will work perfectly well in the same use-case as this.

This method also has limitations:

  • Requires cumbersome/manual steps
  • There is no way to specify what the bandwidth limit should be.
  • This method can simply shift the "stable" unwanted usage into less-desirable peaks-and-troughs.
  • The application will become unresponsive/laggy
  • < – zaTricky – 2016-11-07T09:28:57.223

The geek in me wonders if this could actually be a good, cheap way to get things done, but with a much lower timeout like 50ms. So there would be a lot of suspending/unsuspending, but the experience could be smoother.I don't know how the time in suspension actually maps out to a reduced upload rate, but it's something to experiment with... – pgr – 2018-05-05T16:06:40.617