Auf der Suche nach den verlorenen Frames

  • Nachdem uns Marvel hier einen der Vorzüge des Export-Mechanismus näher gebracht hat, will ich diesbezüglich mal meine eigene Erfahrung und die mir dabei aufgefallenen Nachteile loswerden:


    Ich war gestern auf der Suche nach den verlorenen Frames, nachdem ich zusammen mit Wildhog ein paar Benchmarktests gemacht hatte und ich beim Vergleich der Ergebnisse wegen der offenbar mieserablen Performance meiner neu angeschafften RTX 3080 TI erstmal aus allen volumetrischen Wolken gefallen bin.


    Wir verwendeten in DCS die beim Supercarrier mitgelieferte Mission "Population Template", bei welcher man auf einem voll besetzten Carrier spawned. Hier hatte ich, nachdem wir die Grafik-Settings abgeglichen hatten, locker 20 FPS weniger als Wildhog auf seiner RTX 3070.


    Also habe ich angefangen zu suchen: Treiberversion, Einstellungen in Windows, im Nvidia-Controllpanel, im Bios, PCI (4.0,3.0 usw.) - Alles in Ordnung.


    Schlußendlich hat mir ein sehr gutes Tool, welches mit den Nvidia-Treibern mitgeliefert wird, unheimlich geholfen das Problem einzugrenzen.



    Man sieht hier ganz deutlich, dass meine GPU nur Teils ausgelastet ist, das hat mich erstmal beruhigt. Jetzt war nur die Frage, woran das liegt bzw. wie ich das ändere.


    Nachdem ich aller Variablen die mir eingefallen sind nach Rücksprache mit Wildhog aus der Gleichung entfernt hatte und immer noch keine Besserung eingetreten ist, fiel mir zum Glück noch die Export.lua ein, die ggf. anders ausehen könnte, als die von Wildhog.

    Habe also testhalber mal alle Tools (4 an der Zahl) entfernt und die gleichen Tests erneut durchgeführt. Und siehe da, in den extremsten Fällen habe ich durch die Tools über 30 FPS verloren (in dem hier reproduzierten Fall waren es "nur" 22) .



    Meine Vermutung:


    Das Problem, das DCS (im Moment noch) hat, ist, dass es quasi single-threaded läuft. D.h. dass für jedes Frame, alles was zu tun ist nacheinander abgarbeitet werden muß. Von der Berechnung aller Einheiten in der 3D Welt, das eingene Flugmodel, Vorbereitung der Grafik, aufrufen aller Tools in der export.lua und schließlich die Anzeige, wobei nur letzteres auf die GPU geht, das andere auf die CPU. Wenn dann ein Tool in der Export.lua für seine Abarbeitung zu lange benötigt, dann hilft auch keine 4000 Euro teure RTX 3090 TI. Die wäre dann vielleicht nur zu 5% ausgelastet bei weiterhin mieserablen Frameraten.


    Jetzt könne mann natürlich meinen, dass also entweder die GPU oder die CPU auf 100% laufen sollte. Am zweiten Screenshot ist aber gut zu sehen, dass weder die GPU noch die CPU annähernd ausgelastet sind. Der Flaschenhals muß also woanders liegen. Das kann dann nur noch etwas Bus-, IO-, IPC- oder TCP-Stack-technischens sein. Z.B. dass ein Tool zu lange benötigt, Koordinaten auf die Festplatte zu schreiben, wie es TacView macht. Oder u.U. suboptimal implementierte TCP Kommunikation zwischen DCS und einem externen Prozess wie sie z.B. in SRS Verwendung findet.


    All das habe ich noch nicht vollends ausgewertet, aber fest steht: Entweder alle Tools ein bischen oder eines meiner 4 Tools im speziellen hängt sich etwas zu lange im DCS-Prozess fest und beschert mir diesen enormen FPS-Verlust.


    So toll ich die Möglichkeiten, die mir die Export.lua bietet auch finde, solange die Abarbeitung von externen Zusatztools an den GFX-Thread gekoppelt ist, werde ich dieses Feature in Zukunft mit Vorsicht genießen.

    Hoffnung gibt mir im Moment die sich in Entwicklung befindliche Vulkan API, die durch Multithreading eben genau diese Abkopplung bewirkt.


    Da ich in letzter Zeit des öfteren in Diskussionen bzgl. Einbindung von Tools über die Export.lua involviert war, dachte ich, das es den einen oder anderen interessieren könnte...

    Vielleicht gibt es ja auch doch nochmal Anreiz über die Nutzung des internen Voice-Chat nachzudenken - wobei ich noch nicht genau weiß, wieviel FPS-Verlußt der im Moment genutzen Alternative SRS zuzuschreiben sind.


    Gruß

    Joker

  • Zum Thema Multithreaded sei noch gesagt, dass kannst du im Nvidia Control Panel ebenfalls einstellen. Einfach mal probieren.


    Zum Thema TacView, dass hatte ich vor langer Zeit in DCS abgeschaltet, da es bei mir Leistung gefressen hat. Das war aber noch zu GTX 970 Zeiten. Müsste ich mal ausprobieren.


    Zum Thema russische exe, verstehe ich Kowalski und kann das auch Nachvollziehen, zum Teil.

    Nur dann sollte man vielleicht auch die Finger von Windows lassen, da hält sich der amerikanische Geheimdienst NSA, auch eine Hintertür offen.


    Edit: TacView, egal ob an oder aus, ändert bei mir gar nichts.

  • Zum Thema Multithreaded sei noch gesagt, dass kannst du im Nvidia Control Panel ebenfalls einstellen.

    Mag schon sein, dass im NV Control Panel das Threading Model der GPU in gewisser Hinsicht manipulieren werden kann was die Aufbereitung der Grafikdaten angeht, es gab/gibt ja auch ein Tool, das die Priorisierung der CPU Threads anpassen soll, um DCS etwas schneller zu machen.

    Der Punkt ist aber, so lange im Kern die einzelnen Schritte, wie oben beschrieben von einander abhängig sind und das hängt alleine an der Anwendungsarchitektur, also wie die Anwendung entwickelt wurde, dann hilft es auch nicht, dass ich die GPU oder auch die CPU threadmäßig tunen kann, was einzelne Steps etwas optimiert und vlt. ein, zwei Prozent Leistung brint, die einzelnen Steps des Programmablaufs werden solange von einander abhängig sein bzw. sequenziell abgearbeitet werden bis die Anwendungskern grundlegend auf Multithreading umgestellt wurde. Und das ist kein leichtes Unterfangen und dauert halt. Und das ist ja auch schon lange ein Thema im Forum, nicht erst seit Vulkan.

  • Zum Thema russische exe, verstehe ich Kowalski und kann das auch Nachvollziehen, zum Teil.

    Nur dann sollte man vielleicht auch die Finger von Windows lassen, da hält sich der amerikanische Geheimdienst NSA, auch eine Hintertür offen.

    Sehe ich auch so. Da hätte ich jetzt eher Angst wegen Windows als wegen DCS und nicht weil ich dem FSB mehr vertraue als der NSA:


    Einerseits dauert das ja auch so ne Backdoor zu implementieren - was auch immer die in DCS für ein Zweck erfüllen könnte - bei einer Zielgruppe von ca, 0.0000001% der Menschen, die einen Computer benutzen.

    Da hatte man bei Windows mehr Zeit, mehr Ressourcen und vor allem eine um Lichtjahre größere Zielgruppe - und Bemühungen dieser Art sind ja auch bekannt. Hat zwar nix mit Windows zu tun aber google mal "cisco backdoor").

    kowalski Und wenn da wirklich was am Start sein sollte, dann hilft Dir auch nicht, dass dein letztes Update schon zwei Wochen her ist. Das wurde ja von langer Hand geplant und ist keine fixe Idee von Donnerstag abend.


    Ich für meinen Teil sehe keine Verbindungen zwischen der russischen Regierung und EagelDynamics, zumindest in Bezug auf das was auf unserem Computer läuft. Ich kann da nicht wirklich einen nennenswerten Angriffsvektor erkennen.

    Ich glaube eher, dass auch ED an den Folgen dieses Krieges eher zu knabbern haben als davon zu profitieren und nehme dem Chef und Gründer von ED (einem Engländer) auch folgene Zeilen absolut ab:

    https://forums.eagle.ru/topic/…ndComment&comment=4902613


    Aber auch ich will die Forumsregeln nicht überstrapazieren und würde gerne weitere Referenzen zu diesem Thema vermeiden, würde aber dennoch gerne erfahren, wie die allgemeine Auffassung in der Staffel bezüglich DCS ist.

  • Um mal zurück zum Thema zu kommen:

    Edit: TacView, egal ob an oder aus, ändert bei mir gar nichts.

    Ich habe auch für TacView im speziellen bisher noch keine Ergebnisse bzgl. Leistungsverlust. Kann also auch nicht mit Sicherheit sagen, dass das das Tool ist, was mir meine Frames auffrist.

    Ich wollte TacView nicht schlecht machen, ich habe es nur als Beispiel herangezogen für Operationen von Tools die zu zusätzlicher Beanspruchung von Systemleistung führen könnten.

    In diesem Fall "IO" (InputOutput), das schreiben auf Platte, welches sich nicht direkt in GPU oder CPU Auslastung im Benchmark wiederspiegelt.

    Da ist dann mit Sicherheit auch interessant, ob auf SSD oder HD geschrieben wird.

  • Ich hatte bei mit letztens den Grafikspeicher als Schwachstelle ausgemacht. Meine 3070TI hat ja leider nur 8GB. Die Auslastung der CPU und GPU waren unter 60% und die FPS waren enttäuschend.

    Ich konnte mir mit folgenden Tipps behelfen. DCS in VR bringt mich nun auf 95% GPU Auslastung und ich habe einen angenehmen FPS Zuwachs erhalten.

    DCS VR Boost

  • Danke für den interessanten Link. Werde bei mir mal schauen, ob ich da auch noch was rausquetschen kann. Auslastung des Grafikspeichers habe ich bei mir noch gar nicht in Betracht gezogen da die 3080 TI ja zum Glück 12GB Ram hat und ich nach Abschalten der Exports schon so in manchen Situationen mit Max Settings jenseits der 95% GPU bin.

    In VR sieht das bei mir allerding auch noch etwas anders aus. Da muß ich schon hier und da ein paar Dinge runterschrauben, damit mir im Headset nicht vom Ruckeln übel wird, also werde ich mir die im Video beschriebenen Einstellungen mal zu Gemüte führen.