Kalkylator för flaskhals mellan CPU och GPU

Uppmätta bildrutetider, inte ett allmängiltigt flaskhalsvärde

Använd CPU- och GPU-bildrutetider som registrerats i samma repeterbara scen, med samma inställningar och testmetod. Nyttjandegraden ensam kan inte bevisa en flaskhals. Verktyget har ingen databas med maskinvarunamn och ger ingen köp- eller uppgraderingsrekommendation.

Analys av bildrutetid

Beskriv testets sammanhang

Etiketter är valfria. Ange inte kontonamn, serienummer eller konfidentiell projektinformation.

Värden i direktvyn behandlas via Livewire. Värden i stegflödet, inklusive valfria etiketter, placeras i sidans webbadress och webbläsarhistorik så att varje steg kan återställa dem. Ange inte konfidentiella namn eller uppgifter om arbetsbelastningen.

Använd den här flaskhalskalkylatorn för att jämföra uppmätta CPU- och GPU-tider per bildruta från samma spelscen. Den uppskattar den övre bildfrekvensgränsen för båda sidor, pekar ut den långsammare sidan endast när skillnaden överstiger din tolerans och förklarar varför en enda inspelning inte kan ge ett allmängiltigt procenttal för flaskhalsen i alla spel och inställningar.

Så analyserar du en flaskhals i CPU eller GPU

  1. 1

    Spela in en repeterbar scen

    Använd ett inbyggt prestandatest, en repris eller en fast rutt med samma upplösning, grafikinställningar, bildfrekvensgräns och VSync-läge. Låt spelet värmas upp före inspelningen.

  2. 2

    Ange CPU-tiden per bildruta

    Hämta CPU-tiden per bildruta i millisekunder från profileringsverktyget eller prestandainspelningen. Använd ett representativt värde från det valda testintervallet.

  3. 3

    Ange GPU-tiden per bildruta

    Hämta motsvarande GPU-tid från samma scen och inspelningsintervall. Blanda inte resultat från olika körningar, förinställningar eller upplösningar.

  4. 4

    Ange en tolerans och tolka resultatet

    Med en tolerans räknas små skillnader som balanserade, eftersom normal variation mellan körningar kan vända ett jämnt resultat. Upprepa inspelningen innan du agerar på en marginell skillnad.

Bildrutetiden är en användbar utgångspunkt

Antalet bildrutor per sekund är inversen av bildrutetiden. När tiden mäts i millisekunder gäller:

övre bildfrekvensgräns = 1000 / bildrutetid i ms

Det långsammare uppmätta steget bestämmer den övre gränsen för den förenklade bearbetningskedjan:

uppskattad övre gräns = 1000 / max(CPU-bildrutetid, GPU-bildrutetid)

Detta är en diagnostisk uppskattning, inte ett löfte om att spelet visar bildrutor med exakt den frekvensen. Bildfrekvensgränser, synkronisering, köer, arbete i spelmotorn, inläsning, operativsystemets schemaläggning och presentation på skärmen kan påverka den observerade bildfrekvensen. Microsoft definierar CPU- och GPU-tid per bildruta separat i sin vägledning för DirectX-profilering, eftersom båda sidor kan överskrida den tillgängliga tidsbudgeten för en bildruta.

Önskad bildfrekvens Tidsbudget per bildruta
30 FPS 33,33 ms
60 FPS 16,67 ms
120 FPS 8,33 ms
144 FPS 6,94 ms
240 FPS 4,17 ms

Omvandlingen 1000 / ms ger en övre gräns för det uppmätta steget. En CPU-tid på 12 ms motsvarar till exempel cirka 83,33 FPS, medan en GPU-tid på 7 ms motsvarar cirka 142,86 FPS. I den här inspelningen är CPU-sidan långsammare och den förenklade övre gränsen är cirka 83,33 FPS.

Varför toleransen är viktig

När bildrutetiderna ligger nära varandra bör resultatet inte uttryckas med falsk säkerhet. Kalkylatorn jämför den absoluta skillnaden med bildrutetiden för den långsammare sidan:

relativ skillnad = |CPU ms - GPU ms| / max(CPU ms, GPU ms) × 100

Om skillnaden ligger inom den valda toleransen är resultatet balanserat eller obestämt för just den här inspelningen. Om den överstiger toleransen är sidan med den längre bildrutetiden den aktuella begränsningen.

CPU-tid GPU-tid Relativ skillnad Resultat vid 5 % tolerans
12,0 ms 7,0 ms 41,67 % Begränsning på CPU-sidan
6,0 ms 10,0 ms 40,00 % Begränsning på GPU-sidan
8,0 ms 8,3 ms 3,61 % Balanserat eller för liten skillnad för en slutsats

Procenttalet beskriver avståndet mellan två tidsmätningar i en viss arbetsbelastning. Det visar inte hur stor andel av CPU:n eller GPU:n som går till spillo och förutsäger inte heller prestandavinsten av att byta maskinvara.

Gör inspelningen reproducerbar

För en användbar jämförelse måste arbetsbelastningen hållas stabil. Håll följande oförändrat:

  • version av spelet och spelmotorn;
  • sparfil, repris, prestandatestsekvens eller fasta rörelserutt;
  • upplösning, renderingsskala, kvalitetsförinställning och grafik-API;
  • bildfrekvensgräns samt VSync- och dynamiskt upplösningsläge;
  • drivrutinsinställningar, energiläge och bakgrundsbelastning;
  • uppvärmningstid och inspelningslängd.

Kör testet flera gånger och jämför representativ statistik i stället för att lita på ett enda kort mätprov. AMD:s vägledning för CPU-prestanda rekommenderar att variabler som testscen och slumptalsfrö hålls fasta. I vägledningen för Unreal Engine föreslår AMD också att upplösningen ändras som ett diagnostiskt test: om en mycket högre renderingsupplösning knappt påverkar prestandan är det en indikation som bör undersökas för en möjlig CPU-begränsning i den arbetsbelastningen. Det är fortfarande en indikation, inte ett allmängiltigt besked.

Varför nyttjandegrad inte är ett bevis

Nyttjandegraden kan stödja en diagnos men kan inte fastställa den på egen hand. Den totala CPU-användningen kan se måttlig ut även om en huvud- eller renderingstråd är fullbelastad. Låg GPU-användning kan bero på en bildfrekvensgräns, väntan på CPU:n, synkronisering eller för lite inskickat arbete. Hög GPU-användning visar att enheten var upptagen, men pekar inte ut det exakta kostsamma renderingssteget och förutsäger inte resultatet av en uppgradering.

Verktyg för tidsmätning ger bättre sammanhang. Intel PresentMon registrerar telemetri för bildrutor och GPU, NVIDIA Nsight visar bildrutornas varaktighet på CPU och GPU samt GPU-belastningens intervall, och AMD Radeon GPU Profiler visualiserar kötider och perioder då GPU:n är inaktiv. Även tröskelvärden i profileringsverktyg är tumregler: Radeon GPU Profilers klassificering av en CPU-bunden situation använder ett justerbart tröskelvärde för GPU-inaktivitet, inte en lag som gäller för alla spelmotorer.

Vad 1 % low-värden kan och inte kan säga

Ett 1 % low-värde sammanfattar den långsamma svansen i en fördelning av bildrutetider. Därför är det användbart för att hitta ojämn bildleverans som ett genomsnitt kan dölja. Det avslöjar däremot inte om CPU, GPU, strömning av resurser, kompilering av shaders, minnestryck eller ett annat stopp orsakade de långsamma bildrutorna.

Definitionerna varierar också. Vissa rapporter beräknar en bildfrekvens från bildrutetidens 99:e percentil (1000 / p99-bildrutetid), medan andra beräknar medelvärdet för den långsammaste procenten av FPS-mätningarna. NVIDIA Nsight Systems definierar bildrutelängden vid den 99:e percentilen som det värde som endast 1 % av bildrutorna är längre än. Anteckna verktyget och definitionen när du jämför resultat, och ersätt inte matchande CPU- och GPU-tider per bildruta med ett 1 % low-värde.

Varför allmängiltiga procenttal för flaskhalsar är missvisande

En dator har inte ett permanent förhållande mellan CPU- och GPU-flaskhalsar. Det begränsande arbetet kan ändras beroende på spel, scen, upplösning, inställningar, version av spelmotorn, drivrutin, bildfrekvensgräns och önskad bildfrekvens. En livlig stadsscen kan belasta simuleringen och inskickningen av renderingsanrop, medan en annan scen med högre renderingsskala kan kräva mer tid av GPU:n.

Kalkylatorer som bara använder modellnamn kan inte observera de här förhållandena. Ett resultat som ”23 % flaskhals” utan uppmätta tidsvärden från samma scen har ingen stabil teknisk innebörd. Använd den här kalkylatorn för att beskriva den inspelning du faktiskt har gjort, upprepa testet med den arbetsbelastning som är viktig för dig och använd en tidslinjeprofilerare när du behöver hitta det specifika arbete som orsakar begränsningen.

Officiella tekniska källor

Vanliga frågor

Ange CPU-tiden per bildruta och GPU-tiden per bildruta i millisekunder från samma profileringsinspelning och scen. Ange inte total nyttjandegrad, marknadsförda klockfrekvenser, poäng från prestandatester eller tidsmätningar som samlats in med olika inställningar.

Nej. Det betyder att den uppmätta CPU-tiden per bildruta var längre än GPU-tiden med mer än den valda toleransen i den här inspelningen. En bildfrekvensgräns, spelinställningar, bakgrundsarbete, en resurskrävande tråd eller själva scenen kan ändra resultatet. Profilera arbetsbelastningen innan du drar en mer övergripande slutsats.

Fem procent är en praktisk utgångspunkt för att skilja en tydlig skillnad från ett jämnt resultat, men det är ingen allmängiltig standard. Använd en större tolerans när upprepade körningar varierar mer och jämför flera inspelningar innan du klassificerar en marginell skillnad.

Nej. De sammanfattar olika delar av den levererade bildruteprestandan och är inte CPU- och GPU-tidsvärden. Använd matchande mätningar i CPU-ms och GPU-ms. Håll genomsnittlig FPS och 1 % low-värden åtskilda som information om genomströmning och bildrutetidernas jämnhet.

Upplösning och renderingsskala förändrar vanligen GPU-arbetet mer direkt än CPU-simulering eller inskickning av arbete. En höjning kan flytta den längre bildrutetiden mot GPU:n, medan en sänkning kan blottlägga en CPU-begränsning vid högre bildfrekvenser. Det nya resultatet beskriver den nya arbetsbelastningen och är ingen motsägelse.

Relaterade verktyg