Bestimmen, ob ein Spiel CPU- oder GPU-begrenzt ist

Was ist eine zuverlässige, aber nicht zu zeitraubende Möglichkeit, festzustellen, ob ein bestimmtes Spiel durch die Grafikkarte oder durch die Prozessorgeschwindigkeit begrenzt ist?

Ich habe einige Vorurteile darüber, ob ich meistens GPU oder CPU begrenzt bin, aber ich würde gerne überprüfen, ob ich recht habe. Ich habe einige Ideen, wie ich gehen würde und testen, dass aber die Durchführung von genauen Benchmarks ist notorisch schwierig und ich habe nicht viel Erfahrung damit.

Also frage ich mich, was wäre ein einfacher Weg, um den Engpass zu bestimmen, mit nur einem Computer mit einer bestimmten Konfiguration zur Verfügung? Welche Werkzeuge würde ich für diesen Zweck verwenden?

Es wäre auch interessant zu bestimmen, ob die Menge an VRAM auf meiner Grafikkarte ein begrenzender Faktor ist.

  • Kann ich Skyrim an meine benutzerdefinierten Keybindings erinnern?
  • Kann ich die Anzahl der erlaubten speichert erhöhen?
  • Ist es möglich, Screenshots im Spiel zu machen?
  • Aktiviere den Kristall von weitem
  • Aktionsschlüssel neu anordnen?
  • Wie kann man kämpfende Schnelle Zeitereignisse erleichtern?
  • 6 Solutions collect form web for “Bestimmen, ob ein Spiel CPU- oder GPU-begrenzt ist”

    Zwei Faustregel, die ich benutzt habe:

    Wenn die Auflösung der Auflösung zu einem großen Rückgang der Bildrate führte, konnte dies darauf hindeuten, dass das Spiel GPU-gebunden war, da die erhöhte Auflösung die Videokarte viel härter macht und infolgedessen länger dauert Tür.

    Auf der anderen Seite, wenn die Erhöhung der Auflösung nur eine vernachlässigbare Abnahme der Bildrate (oder gar keine Abnahme) verursachte, dann war es ein Indikator dafür, dass das Spiel CPU-gebunden war, da die zusätzliche Videokomplexität leicht von Ersatzvideo abgewickelt wurde Kartenverarbeitungskapazität, während die Hauptspielverarbeitungslogik bereits die CPU anpaßte. In dieser Situation ist die Spielmaschine zu beschäftigt, um dem Video-Subsystem genug Arbeit geben zu können.

    Allerdings denke ich nicht, dass Spiele heutzutage so einfach sind, dass die Leistung so leicht beschränkt ist. Seit vielen Jahren sind die GPUs komplexer geworden und die Entwickler finden Wege, um mehr Arbeit an sie zu verlagern, so dass es eine Menge Arbeit gibt, die auf beiden Seiten getan werden könnte … deshalb verwende ich diese Faustregeln nicht Sehr viel mehr – sie passen einfach nicht an. Die Annahme war, dass die Erhöhung der Auflösung keine zusätzlichen Arbeiten an der CPU verursachte.

    Wenn du diesen Videokarten-Benchmarks von Tom's Hardware Guide religiös in den frühen 2000er Jahren gefolgt bist, könntest du das manchmal sehen – zB Quake 3 mit einer "modernen" Videokarte, und du bekommst so viele Bar-Charts, die einfach nur flach sind.

    Wenn Sie die Bildrate Ihres Spiels messen können, geben Sie dies einen Versuch und sehen, was passiert.

    Da die Verringerung der Bildschirmauflösung und / oder Textur Details Optionen ist ziemlich viel garantiert, um die Leistung eines Spiels zu verbessern, kann dies nicht verwendet werden, um festzustellen, ob es GPU gebunden ist oder nicht. Sie könnten sehen, was die höchste Auflösung / Textur Detail Ebene für Ihr System zur Verfügung steht.

    Wenn du die Leistung deiner CPU reduzieren könntest (Underclocking?), Dann könnte dir das ein paar Hinweise darauf geben, ob das Spiel CPU gebunden ist – aber ich glaube nicht, dass es 100% zuverlässig sein kann.

    Es gibt auch eine Verschwommenheit von dem, was von der Game Engine (CPU) gemacht wird und was von der Rendering Engine (GPU) gemacht wird. In den späten 1990er / frühen 200s Spielphysik wurde von der CPU getan, aber dann Grafikkarten begonnen, in der Lage, diese Berechnungen auf dedizierte Hardware so beschleunigen sie und die Verbesserung der Leistung. Dies bedeutet, dass das Sehen, wie viele Objekte auf dem Bildschirm (zum Beispiel) bewegt werden kann nicht als Leitfaden verwendet werden, wie leistungsfähig eine CPU, die Sie haben, wie eine Menge der Bewegung von der GPU-basierten Physik-Engine gesteuert werden könnte.

    Eine Sache zu beachten ist, dass aufgrund der breiten Palette von Hardware, die PC-Spiele auf Spiel-Entwickler laufen müssen, werden auf der Suche nach jedem Tricks, die Leistung verbessern können und auch das Spiel wird (hoffentlich) gracefully abbauen, so dass es ist Spielbar auf den unteren Maschinen. Dies bedeutet, dass, wenn Sie die Hardware zur Verfügung haben, wird es verwendet, wenn nicht auf die äußerste, dann ziemlich nah.

    Aus einer rein visuellen Perspektive (nicht die Überprüfung anderer Anwendungen usw.) Ich glaube, dass, wenn Sie CPU gebunden sind, finden Sie das, dass es viel mehr Frame Stottern wie die GPU wartet auf die CPU, wo, als ob Sie GPU gebunden werden wird Eine konsequentere Erfahrung sein, wenn auch langsam und lockig.

    Das könnte alles hübsch sein.

    Wenn du nach einem "schnellen und schmutzigen" Ballpark suchst, sind hier zwei Tests, die du ausführen kannst:

    1. Verwenden Sie ein Systemmonitor oder ein Profiling-Tool, um die CPU mit der GPU-Nutzung zu vergleichen und sehen Sie, ob eine signifikant nicht ausgelastet ist. Mein Vorschlag ist GPUView .
    2. Führen Sie alle GPU-Engpass-Tests zur gleichen Zeit und sehen, ob die Leistung verbessert:
      • Reduzieren Sie Farb- / Tiefenpuffer-Bittiefen.
      • Verwenden Sie die höchsten Mip-Level-Texturen (niedrigste Auflösung).
      • Reduzieren Sie die Auflösung.
      • Vereinfachen Sie den Vertex-Shader.
      • Reduzieren Sie die Scheitelformatgröße.

    Was meinen Sie:

    • Kleinere Bittiefe bedeutet weniger Ressourcen pro Pixel, was Engpässe auf der Framebuffer-Ebene zeigt. Mögliche Korrekturen:
      • Rendertiefe zuerst
      • Verwenden Sie weniger Alpha-Blending
      • Deaktivieren Sie Tiefenschreibe, wo möglich
      • Vermeiden Sie unnötigen Puffer klären
      • Optimieren Sie skybox (rendern Sie mit frühem Z-out, oder zuerst ohne Tiefe r / w)
      • Verwenden Sie Puffer mit kleineren Bittiefen
    • Kleinere Texturen bedeuten weniger Ressourcen und weniger Abrufe und enthüllen Engpässe in der Texturbandbreite. Mögliche Korrekturen:
      • Verwenden Sie kleinere Texturen
      • Verwenden Sie kleinere Textur-Bittiefen
      • Komprimieren Sie Texturen
      • Mipmapping verwenden
    • Reduzierte Auflösung bedeutet weniger Pixel zu verarbeiten und enthüllt Engpässe sowohl bei Framebuffer als auch bei Fragment Shader. Mögliche Korrekturen:
      • Rendertiefe zuerst
      • Bewege die Arbeit von Fragment-Shader zum Vertex-Shader
      • Vermeiden Sie übermäßige Normalisierung
      • Vermeiden Sie übermäßige teure Texturfilterung
      • Reduzieren Fragment Shader Komplexität 🙁
    • Kleinere Vertex-Shader bedeutet weniger Verarbeitung pro Scheitelpunkt und enthüllt Engpässe bei der Vertex-Verarbeitungsstufe. Mögliche Korrekturen:
      • Reduzieren Sie die Anzahl der Vertices verarbeitet!
      • Bewegen Sie pro Objekt-Berechnungen zur CPU-Seite
      • Verwenden Sie LOD
      • Vermeiden Sie weniger Umwandlungen, indem Sie mit korrekten Koordinatenräumen beginnen
    • Kleinere Vertex-Formate bedeuten weniger Daten zu übertragen und enthüllen Engpässe bei der Vertex- / Index-Transfer-Ebene. Mögliche Korrekturen:
      • Verwenden Sie kleinere Vertex-Formate (wenn Ihr ist unnötig Fett)
      • Verwenden Sie kleinere Vertex-Formate (indem Sie Attribute von kleinen Typen ableiten, anstatt größere zu speichern)
      • Verwenden Sie kleinere Indextypen
      • Zugriffsscheitel / Indexdaten sequentiell

    Wenn all dies geschehen ist und du keine Leistungsverbesserung siehst, ist es wahrscheinlich sicher zu sagen, dass du CPU-gebunden bist. Mögliche Korrekturen:

    • Mehr Batching
    • Weniger verriegeln
    • Arbeiten Sie weiter unten das Rohr
    • Erfahren Sie mehr über Ihr Projekt

    Wenn diese Menge an GPU-Tests immer noch zu umfangreich für Sie ist, können Sie die einfachsten Tweaks aus ihm herausholen (z. B. die Auflösung reduzieren) und hoffen, dass es Ihnen etwas sagt, aber Ihre Ergebnisse werden offensichtlich weniger schlüssig sein, da dies keine Engpässe offenbaren wird In bestimmten Stadien der GPU-Pipeline.

    Wenn Sie GPU-gebunden sind, um Engpässe auf der GPU-Seite weiter zu isolieren, werden Sie diese Tests einzeln durchführen wollen, beginnend von unten (Ende der Pipeline) und arbeiten Sie Ihren Weg nach oben (Framebuffer -> Textur – > Fragmentschattierung -> Scheitelverarbeitung -> Scheitelübertragung).

    HINWEIS: Dies ist natürlich vorausgesetzt, dass Sie entweder Zugriff auf Einstellungen haben, die Ihnen erlauben, diese Änderungen vorzunehmen, oder dass Sie ein Entwickler sind und es ist ein Spiel, für das Sie Zugriff auf Quellcode haben.

    Sie können den Windows Task Manager (den, den Sie durch Control + Alt + Delete) aufrufen können, öffnen und dann minimieren und Ihr Spiel für ein bisschen spielen. Dann beenden Sie Ihr Spiel und schauen Sie sich die CPU-Nutzung in der Performance-Registerkarte (Sie können den Monitor ändern, um mehr von der Trend zu sehen). Überprüfen Sie, ob Ihre CPU-Nutzung scheint, um 100% oder viel weniger zu bleiben.

    Ich weiß, es gibt andere Dienstprogramme, die Sie sehen CPU-Nutzung, sowie RAM-Nutzung und Festplatte IO, die Sie versuchen könnten. Ich weiß nicht, ob es eine Möglichkeit gibt, die Grafikkartenleistung zu überwachen.

    Vor einigen Jahren würde ich definitiv sagen, dass bei der Wiedergabe mit der Auflösung: Wenn die Performance in direkter Beziehung zur Auflösung variiert, dann ist es GPU gebunden, wenn nicht, ist es CPU, aber es ist eine andere Geschichte jetzt, da Shader im Spiel sind. Einige der Shader-Effekte können nicht nur durch die Senkung der Auflösung abgeschwächt werden, sie greifen nur die gleiche Menge an Ressourcen, egal was passiert.

    Einige Grafik-Optionen betreffen nur die CPU, einige nur die GPU, und einige eine Mischung von beiden (Rauch-Effekte sind ein gemeinsames Beispiel).

    Die Senkung der Auflösung ist immer noch eine Faustregel, es funktioniert einfach nicht so gut wie früher

    Aber wenn ich das Geld hätte, würde ich auf eine bessere GPU investieren als eine schnellere CPU, denn es gibt Extras, die du niemals ohne GPU-Power erzielen wirst, wie Anti-Aliasing und Anisotropic Filtering.