windows - Er der nogen måde at smøre CPU/hukommelse af en proces?

Indlæg af Hanne Mølgaard Plasc

Problem



Problem: Jeg har en udvikler maskine (læs: hurtig, masser af hukommelse), men brugeren har en bruger maskine (læs: langsom, ikke meget hukommelse).


Jeg kan simulere et langsomt netværk ved hjælp af Fiddler (http://www.fiddler2.com/fiddler2/)
Jeg kan se på, hvordan CPU bruges over tid til en proces ved hjælp af Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).[4][5]


Er der nogen måde, jeg kan begrænse mængden af ​​CPU en proces kan have, eller hvor meget hukommelse en proces kan have for at simulere en brugers maskine mere effektivt? (For at isolere præstationsproblemer for eksempel)


Jeg formoder, at jeg kunne bruge en VM, men jeg søger noget lidt lettere.


Jeg bruger Windows XP, men en løsning til enhver Windows-maskine ville være velkommen. Tak.

Bedste reference


Platformen SDK plejede at komme med stressværktøjer til at gøre netop dette tilbage i de gode gamle dage (STRESS.EXE, CPUSTRESS.EXE i SDK), men de kan stadig være der (tjek din platform SDK og/eller Visual Studio installation for disse to filer - desværre har jeg ikke PSHK eller VS installeret på maskinen, jeg skriver fra.)


Andre værktøjer:



  • hukommelse : ydeevne & pålidelighed (f.eks. håndtering mislykket hukommelseallokering): kan bruge EatMem

  • CPU : ydeevne & pålidelighed (f.eks. raceforhold): kan bruge CPU Burn, Prime95 osv.

  • håndterer (GDI, Bruger): pålidelighed (f.eks. handling mislykkedes GDI ressourceallokering): ??? Måske skal du skrive din egen, men løbe tør for GDI-håndtag (buggy GTK-apps vil normalt spise dem alle sammen, indtil alle andre apps på systemet begynder at falde som fluer) er en reel test for enhver Windows-app

  • disk : ydeevne & pålidelighed (fx håndtering af disk fuld): DiskFiller osv.



Se også denne eksisterende tråd. [6] [7] [8] [9]

Andre referencer 1


AppVerifier har en lav-ressource simuleringsfunktion. [11]


Du kan også prøve at indstille prioriteten i din proces til at være meget lav.

Andre referencer 2


Du kan køre MemAlloc for at tygge op RAM, muligvis et par kopier på én gang. [12]

Andre referencer 3


Jeg fandt et relateret spørgsmål:


Angiv Windows-proces (eller bruger) hukommelsesgrænse


Det accepterede svar på spørgsmålet har et link til Windows API 's SetProcessWorkingSetSize, så det er ikke ligefrem et værktøj, der kan begrænse mængden af ​​hukommelse, som en proces kan bruge.


Med hensyn til at ændre mængden af ​​CPU-ressourcer, kan en proces bruge, hvis du ikke tager højde for granulariteten af ​​ressourcebegrænsning af ressourcer, kan task manager ændre processorns affinitet for en proces.


Højreklik på en proces i Task Manager og vælg 'Set Affinity ...', og vælg derefter processorkernerne, som processen kan tildeles.


Hvis udviklingsmaskinen har mange kerner, men brugermaskinen kun har en, skal man i stedet for at lade processen køre på alle de tilgængelige kerner, indstille processen 'processoraffinitet til kun en kerne.

Andre referencer 4


Det har intet at gøre med SetProcessWorkingSetSize


Brug kun intern Win32 kernel apis til at begrænse CPU-brug