windows - Hvordan finder jeg ud af, om min proces er CPU-bundet, I/O-bundet, Hukommelsesbundet eller

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at fremskynde den tid, der er taget for at kompilere min ansøgning, og en ting, jeg undersøger, er at undersøge, hvilke ressourcer, hvis nogen, jeg kan tilføje til byggemaskinen for at fremskynde tingene. Til dette formål, hvordan finder jeg ud af, om jeg skal investere i mere CPU, mere RAM, en bedre harddisk eller om processen er bundet af en anden ressource? Jeg har allerede set dette (Sådan kontrolleres, om appen er cpu-bound eller memory-bound?) Og leder efter flere tip og tips.


Hvad jeg har prøvet hidtil:



  • Tids processen på byggemaskinen vs. på min lokale maskine. Jeg fandt ud af, at bygningsmaskinen tager to gange tiden som min maskine.

  • Kør 'Resource Monitor' og kig på CPU-brugen, Hukommelsesforbrug og Diskbrug, mens processen kører - mens jeg gør det har jeg svært ved at fortolke tallene, primært fordi jeg ikke forstår hvad hver kolonne betyder og hvordan der oversætter til en Virtual Machine vs en fysisk boks, og hvad det betyder med multi-CPU-bokse.


Bedste reference


Start> Kør> perfmon.exe


Performance Monitor kan grafere mange systemmålinger, som du kan bruge til at udlede hvor flaskehalse er inklusive cpu-belastning, io-operationer, sidefile-hits og så videre.


Desuden indeholder Platform SDK nu et værktøj kaldet XPerf, der kan give information mere relevant for udviklere.

Andre referencer 1


Random-pausing vil fortælle dig, hvad din procentdel er fordelt mellem CPU og I/O tid.


I grund og grund, hvis du tager 10 tilfældige stackshots, og hvis 80\% (for eksempel) af tiden er i I/O, så på 8 +/- 1.3 prøver stakken kommer ind i systemrutinen, der læser eller skriver en buffer.
Hvis du vil have højere præcision, skal du tage flere prøver.