Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any way of throttling CPU/Memory of a process?

Problem: I have a developers machine (read: fast, lots of memory), but the user has a users machine (read: slow, not very much memory).

I can simulate a slow network using Fiddler (http://www.fiddler2.com/fiddler2/) I can look at how CPU is used over time for a process using Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).

Is there any way I can restrict the amount of CPU a process can have, or the amount of memory a process can have in order to simulate a users machine more effectively? (In order to isolate performance problems for instance)

I suppose I could use a VM, but I'm looking for something a bit lighter.

I'm using Windows XP, but a solution for any Windows machine would be welcome. Thanks.

like image 987
Matthew Farwell Avatar asked Feb 27 '09 06:02

Matthew Farwell


People also ask

Can a CPU throttle?

Also called "dynamic frequency scaling," CPU throttling is commonly used to automatically slow down the computer when possible to use less energy and conserve battery, especially in laptops. CPU throttling can also be adjusted manually to make the system quieter, because the fan can then run slower.

How do I Enable CPU throttling?

Press “Start” and type “task manager”. Click the first entry. In Task Manager, click the “Details” tab heading, then right-click any of the column headings and choose “Select columns”. In the “Select columns” window, look for “Power throttling”, tick it, and click “OK”.

How can I tell if my CPU is being throttled?

Fortunately, it's extremely easy; Windows 10 includes a basic hardware monitoring tool that you can use to quickly identify whether your CPU is throttling: Press the Windows Key + R to bring up the Run command box. In the available field, type "perfmon.exe /res" and hit Enter. This will open the Resource Monitor.


2 Answers

The platform SDK used to come with stress tools for doing just this back in the good old days (STRESS.EXE, CPUSTRESS.EXE in the SDK), but they might still be there (check your platform SDK and/or Visual Studio installation for these two files -- unfortunately I have niether the PSDK nor VS installed on the machine I'm typing from.)

Other tools:

  • memory: performance & reliability (e.g. handling failed memory allocation): can use EatMem
  • CPU: performance & reliability (e.g. race conditions): can use CPU Burn, Prime95, etc
  • handles (GDI, User): reliability (e.g. handling failed GDI resource allocation): ??? may have to write your own, but running out of GDI handles (buggy GTK apps would usually eat them all away until all other apps on the system would start falling dead like flies) is a real test for any Windows app
  • disk: performance & reliability (e.g. handling disk full): DiskFiller, etc.
like image 52
vladr Avatar answered Nov 15 '22 20:11

vladr


AppVerifier has a low-resource simulation feature.

You could also try setting the priority of your process to be very low.

like image 20
George V. Reilly Avatar answered Nov 15 '22 22:11

George V. Reilly