Je comment verrast me. Ondanks dat de laatste jaren een hoop games een stuk beter gebruik maken van alle cores, zie je als je goed gaat analyseren dat de meeste games alsnog voornamelijk op 1 of een paar cores leunen en daarmee de maximale performance van de CPU of zelfs van de game op zich (indien je CPU bound bent door type spel/engine/instellingen). Meestal is het in de praktijk dan ook zo dat de snelheid van 1 a 2 cores de snelheid van CPU in de game bepalen. De overige cores doen ook wel wat,
Bij welke games zie je dit terug? En hoe bekijk je het CPU verbruik? Gebruik je de taakmanager en bekijk je dan de 'Overall utilization' of de 'Logical processors'? Of gebruik je zoiets als Afterburner?
Misschien zit ik er helemaal naast en beschik je over veel meer kennis hierover dan dat ik nu lijk te insinueren, maar als jij naar 'Overal utilization' kijkt snap ik waarom je het zegt (en dan durf ik ook te zeggen dat je ernaast zit). Wat er dan namelijk gebeurt is dat, omdat je zoveel cores hebt, en het merendeel van de cores grotendeels staat te niksen (omdat veel games in beginsel vanwege het realtime aspect zo slecht programmeerbaar zijn voor meerdere threads en dus multi-core/multit-hreading), dat de overal CPU utilization heel laag is, terwijl alsnog 1 of een paar cores de daadwerkelijke performance bepalen omdat deze volledig worden gebruikt en op maximale snelheid draaien, en daarmee de bottleneck vormen in het hele systeem.
Ook als je naar Logical processors kijkt, het feit dat het erop lijkt dat in de meeste grafiekjes je nog veel CPU capaciteit over hebt, is misleidend. Het gegeven dat veel games vanwege het basisprincipe relatief zwaar op singlethread performance leunen (turn based strategy games bijv. daargelaten), betekent in de praktijk dat single thread performance van CPU's nog steeds enorm belangrijk is, en daar is de ontwikkeling helaas een aantal jaren erg matig geweest (grofweg tussen Intel Core 6th en 11th generation).
Deze afbeelding geeft in extreme mate weer wat ik bedoel:
https://qph.cf2.quoracdn....3e5c197d50cc8e2e6a1bd6f98
De overal utilization van 10% valt heel laag te noemen. Maar op specifiek het moment van het maken van de screenshot (of eigenlijk vlak daarvoor) is er maar 1 core die echt zwaar belast werd en hij werd ook maximaal belast. M.a.w. 1 core is de bottleneck, waardoor je ook kan zeggen dat CPU op dat moment de bottleneck was. In de afbeelding is specifiek de 20e thread en dus 10e core die maximaal belast wordt en dus waarschijnlijk een bottleneck vormt.
Ik zie dit soort CPU gedrag bij een heleboel games nog steeds terug, al worden tegenwoordig 2e t/m 8e threads een stuk zwaarder belast, wat inderdaad een goede ontwikkeling is. Games als Far Cry 6 (OK, in basis een verouderde engine, een doorontwikkeling van de eerste Far Cry games, met Far Cry 7 starten ze met een andere engine) en Serious Sam 4 zijn daar voorbeelden van.
Met mijn 5800X3D, niet een laatste gen CPU maar nog steeds een CPU die specifiek wat betreft gaming tot de snelsten behoort, ervaar ik dit probleem nog steeds in sommige games. En de switch van een 5950X naar een 5800X3D, waardoor ik 2x zo weinig cores had, merk ik wel degelijk in games, bijv. in de Far Cry games, om een stabiele 120 FPS te halen. Als je in dat soort games heel veel grafische pracht uit zet en de resolutie omlaag haalt, is het goed merkbaar dat je vaak nog steeds flink CPU bound bent. Als je echt GPU bound zou zijn, dan zou de minimum 1% en 0.1% fps flink omhoog moeten gaan, maar dat gebeurt niet. Dat komt door de CPU.
Samengevat
- overall low cpu utilization betekent niet dat de CPU (of enkele core(s) daarvan) geen bottleneck kunnen zijn
- het gegeven dat veel games tegenwoordig een grotere hoeveelheid cores benutten betekent niet dat je daarmee niet meer geen CPU bottleneck kan hebben. Op die momenten dat 1 core/thread 100% benut wordt is de kans groot dat je CPU bound bent. Waarschijnlijk wordt op die moment de GPU niet 100% belast. Ook als er nog 8 andere threads voor 60 a 80% worden belast (wat mijns inziens goed gebruik van cores is in een game), is dat alsnog maar 80%. De core die 100% belast wordt bepaald de snelheid van de CPU: op dat moment zat er niet meer in en de rest van alle logica in de game en dus in de PC moet daarop wachten.
Bij dit laatste is zo'n task manager performance overzicht (of van Afterburner for that matter) best misleidend tegenwoordig: doordat de zwaarste processen zeer regelmatig van cores wisselen (vanwege thermal en power load, dat regel de CPU zelf), zie je niet in 1 grafiekje terug dat er de hele tijd 1 (of een paar) threads/cores zijn die 100% belast worden. Als je echter heel rustig kijkt of er voor ieder moment wel een core of thread is die 100% wordt belast, zul je dat bij een hoop games toch zo terugzien, tenzij je echt GPU bound bent. Het ligt er ook maar net aan welke games je speelt, me wat voor een resolutie en overige settings.
[Reactie gewijzigd door xtlauke op 22 juli 2024 13:21]