Transport Fever verbleibt anscheinend unsichtbar im RAM

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Servus,


    fällt mir schon seit dem Anfang an auf.. Anscheinend verbleibt Transport Tycoon nach Beendigung "unsichtbar" im RAM..
    Findet sich aber nach Beendigung kein Eintrag mehr im Task-Manager/Details


    Das erste mal die Map geladen -> dauerte 115 Sekunden
    Spiel beendet und nach paar Stunden dann im Spiel die gleiche Map nochmal geladen -> dann nur noch 25 Sekunden


    Entweder liegt es daran, das ich eh genügend Arbeitsspeicher habe (16 Gb) und das Spiel "verbleibt" im RAM bis der Platz gebraucht wird,
    oder ist Fehler.. Was machen andere, die weniger RAM haben?


    Mir ist es halt nur aufgefallen, stört mich jetzt aber nicht...


    Bei euch?

  • Hi,


    Im Prinzip hast Du vermutlich recht. Dabei wird es sich aber um ein betriebssystemabhängiges Verhalten handeln.


    RAM funktioniert im Allgemeinen etwas anders, als sich der Laie das vorstellt.
    Jedes Programm erhält einen virtuellen Speicherbereich, der fortlaufend und unabhängig von dem der anderen Programme ist. Das Betriebsystem sorgt dann dafür, dass genau die virtuellen Speicherbereiche im physischen RAM abgelegt werden, die tatsächlich gerade zur Berechnung benötigt werden.


    In welcher Form Windows nun nach dem Beenden eines Programms genau dessen Speicherbereiche dealloziert bzw. zur Wiederverwendung cached, ist vermutlich proprietärer Code und nur dem Hersteller bekannt..


    An deiner Stelle würde ich mir aber keine Sorgen um Systeme mit weniger RAM machen, denn ich gehe davon aus, dass die physischen Speicherbereiche von beendeten Programmen bei Bedarf von Windows anderen Programmen zur Verfügung gestellt werden (überschrieben werden).

  • Servus,


    ich mache mir auch keine Sorgen.. hab ja 16 Gb Ram ..


    Mir viel es nur auf, da nach Start von TF die Auslastung vom Arbeitsspeicher um ca. 1,8 Gb stieg und nach beenden der Speicher um diesen Wert auch wieder reduziert wurde..
    Theoretisch müsste TF aus Speicher draußen sein.. Vor allem wenn man paar Stunden aus dem Programm ist..


    Ein Lob an Windows, das es weiß, das ich 2x am Tag TF starte.. :D

  • Anscheinend verbleibt Transport Tycoon nach Beendigung "unsichtbar" im RAM.

    Also hat der Verbleib von Transport Tycoon im RAM Auswirkungen auf Transport Fever. Dies muss eingehend getestet werden, es hat dann Auswirkungen auf den Verkauf von Transport Tycoon.

    Das erste mal die Map geladen -> dauerte 115 Sekunden

    Zufällige Map? Was geschieht beim laden der neuen Map? Sie wird generiert, Städte werde platziert, sowie Industrien, Wälde, Seen und Flüsse, nicht zu vergessen die Geländehöhe.
    Dies braucht Zeit.

    Spiel beendet und nach paar Stunden dann im Spiel die gleiche Map nochmal geladen -> dann nur noch 25 Sekunden

    Und Warum? Genau, weil alles nicht mehr gemacht werden muss was ich oben beschrieben habe.


    Du kannst ja folgendes machen, lade eine neue Karte, speicher die ab. Nun machst du deinen PC aus, nach dem Einschalten lädst du die Karte wieder. Wetten dies geht genauso schnell, wie deine Methode? Warum den PC ausmachen, weil dann der RAM komplett geleert ist.


    Mfg Sebastian

    Gyrfalcon – Gerfalke zu deutsch. Aha. WTF ist ein Gerfalke? Ich kenn nur Vogel, wenns fliegt isses Vogel. Wenns nicht fliegt, müss’mer mal genauer gucken, eventuell ne Kurve machen.WiSim Welt https://www.wisim-welt.de man könnte ja mal vorbeischauen.
    Der tägliche Adminwahnsinn ->Forentrollfalle aus Keksen

  • @Sebastianeh
    Einen Test mit zufälligen Karten ist ziemlich schlecht. Nehmen wir doch mal die Kampagnen. Hier dauert das erste laden beim starten eines neuen Spiels (also nicht fortsetzen oder laden eines eigenen Spielstands) eine Zeit x. Startet man später die selbe Kampagne nochmal neu (also wieder kein fortsetzen oder einen eigenen Spielstand laden) geht es deutlich schneller als die vorherige Zeit x. Beende ich nun TpF und starte es später erneut, starte wieder die selbe Kampagne wie zuvor, dann wird diese auch wieder schneller geladen.


    Natürlich ist nach einem kompletten Neustarts des Rechners der RAM leer. Dann braucht das starten der Kampagne wieder Zeit x.

    Xubuntu 18.04 64bit – MSI Z170A GAMING PRO Carbon – Intel Core i7-6700K – ZOTAC GeForce GTX 970 OC (Treiber 384.90) – 40GB DDR4 RAM Transport Fever Build 15434

  • Transport Tycoon ... Transport Fever ... Fingerfehler ^^ ;)


    Ich spreche von ein und der selben Map, wo ich schon gespielt hatte.. Map umfasst 10 oder 11 verbundene Städte..


    Gerade nochmal getestet..


    - PC frisch gestartet, TF gestartet, die schon gespielte Map gestartet -> 115 Sekunden
    - Halbe Stunde auf dieser Map gespielt, ohne speichern der Map beendet..
    - Lord of the Rings online gestartet, 2 Stunden gespielt, beendet.
    - TF nochmal gestartet, die gleiche Map von vorhin gestartet -> 25 Sekunden
    - Alles beendet, PC neu gestartet, TF gestartet, Map lädt wieder 115 Sekunden


    Also verbleibt TF im RAM... wahrscheinlich solange, bis Windows diesen Bereich für etwas anders brauchen würde.. oder auch nicht.. eventuell ist es ein Fehler vom TF und würde den Bereich im RAM "blockieren"..


    Ich kann mich noch an PC Zeiten erinnern, wo 4 MB (!!) RAM Standard waren, da hatte ich auch mal ein Spiel, das war so mies programmiert, das blockierte nach Beendigung den kompl. Rechner und nur ein Neustart half...

  • Was ich gerade nicht verstehe. Normal sollte der RAM leer sein, wenn man den PC ausgeschaltet hatte, bzw. es darf kein Strom mehr drauf sein.
    @Atomic Dad richtig, aber mit einem SEED könnte man es ebenfalls testen, so hat man ja immer dieselbe Karte.


    Mfg Sebastian

    Gyrfalcon – Gerfalke zu deutsch. Aha. WTF ist ein Gerfalke? Ich kenn nur Vogel, wenns fliegt isses Vogel. Wenns nicht fliegt, müss’mer mal genauer gucken, eventuell ne Kurve machen.WiSim Welt https://www.wisim-welt.de man könnte ja mal vorbeischauen.
    Der tägliche Adminwahnsinn ->Forentrollfalle aus Keksen

  • Was ich gerade nicht verstehe. Normal sollte der RAM leer sein, wenn man den PC ausgeschaltet hatte, bzw. es darf kein Strom mehr drauf sein.

    Anscheinend reden wir aneinander vorbei..


    Schalte ich den PC ganz frisch ein, lädt die Karte 115 Sekunden..
    Beende ich das Spiel, lasse den PC aber weiterlaufen (und zocke was anders) und starte TF nach paar Stunden wieder, lädt die selbe Karte nur 25 Sekunden


    Starte ich den PC neu, lädt die Karte wieder 115 Sekunden

  • Es liegt daran, dass das Betriebssystem die Objekte von der Festplatte nicht mehr komplett nachladen muss.


    Nein es bleibt nicht im RAM
    Ein Prozess kann nicht auf den Arbeitsspeicher eines anderen Prozesses zugreifen, erst recht nicht eines bereits beendeten.
    TpF blockiert keinen RAM
    Freut euch einfach das es schneller lädt.

  • Es liegt daran, dass das Betriebssystem die Objekte von der Festplatte nicht mehr komplett nachladen muss.

    Also verbleibt TF nach Beenden weiterhin im Arbeitsspeicher...


    Ob das so gewollt ist? Ein Programm was beendet ist, verbleibt im RAM ...
    Was passiert, wenn der RAM Speicher gebraucht wird? Wird er dann freigeben oder blockiert TF dann den freien RAM?


    Das ist ja der Knackpunkt..


    Mir geht's ja nur um das theoretische Beispiel, 16 GB Ram werden im normalen Windows / Zocker Betrieb nie voll, bin noch nie über 10 GB gekommen..

  • Ich bin kein Computerspezialist, hab aber hier und da schon etwas programmiert. Beim Programmieren ist es immer wichtig, dass man neuen Varianlen einen bestimmten Wert zuweist, zbsp 0. Wenn man das nicht macht, ist da möglicherweise irgendein Wert drauf von einem anderen Programm welcher nicht mehr gebraucht wird und das kann möglicherweise zu unvorhergesehenen Bugs führen. Das Ram leert sich also nicht wenn man das Programm schliesst. Die Register werden lediglich wieder zum überschreiben freigegeben. Tut das niemand verbleiben wohl die Werte und können anscheinend vom gleichen Programm wieder verwendet werden (aber da hab ich kein Plan wie das funzt).

  • Eben das wollte ich oben schon beschrieben haben. Der RAM wird vom Betriebssystem gemanaged und es ist nicht Aufgabe der Applikation, den physischen RAM zu belegen und freizugeben. (Anders, als es vielleicht vor 20 Jahren noch war).
    Ich würde wie gesagt davon ausgehen, dass Windows den RAM eines beendeten Programms wieder frei gibt, wenn er gebraucht wird.


    Im Windows 10 Task Manager gibt es unter "Performance" beim Memory übrigens eine Anzeige für den belegten "Standby"-Speicher. Das wird wohl die Kategorie sein, unter die ein beendetes Programm im Speicher fällt.

    Einmal editiert, zuletzt von wato ()

  • Sorry, aber das ist totaler Käse hier. Ist ein Prozess beendet, ist er beendet. Wird TPF neu gestartet, kann dass unmöglich "auf Daten im RAM einer vorherigen Instanz" zugreifen. Sonst soll mir jemand mal ein minimales Beispiel liefern wie so etwas unter Windows, mit C++ realisiert werden soll.


    Das es beim zweiten Mal schneller geht, liegt an irgendeinem Cache, sei es von der Festplatte, oder der Grafikkarte. Mit dem RAM eines vorherigen TPF-Prozesses hat das gar nichts zu tun.

  • Also ich verstehe es so, dass Windows die Virtual Memory Pages eines Prozesses nach dem Beenden erstmal im RAM hält, also cached. Da kann es doch dann durchaus schneller gehen, wenn man später die selben Pages wieder lädt. Warum soll das Käse sein?


    Dass es sich dabei natürlich nur um Daten von der Festplatte handeln kann und nicht aus dem Heap, habe ich dabei implizit angenommen. Falls Du, @eg3, das so verstanden hattest, dass der Heap bestehen bleibt, hast Du natürlich recht.

    Einmal editiert, zuletzt von wato () aus folgendem Grund: Nochmal nachgedacht..

  • wato: Windows wird keine Virtual Memory Pages eines Prozesses beim Beenden des Prozesses im RAM behalten. Das einzige was im RAM bleiben kann, sind Bibliotheken ("shared libs", unter Windows DLLs, unter Linux .so). Aber auch die werden entladen wenn der letzte Prozess beendet wird, der diese Bibliotheken nutzt. Der Heap eines Prozesses bleibt niemals bestehen wenn der Prozess beendet wird.

  • nach Beendigung "unsichtbar" im RAM..

    Nö.

    zur Wiederverwendung cached, ist vermutlich proprietärer Code und nur dem Hersteller bekannt..

    Vor dem Komma nicht schlecht, dann aber Totalabsturz. X/

    Also verbleibt TF nach Beenden weiterhin im Arbeitsspeicher...

    Nicht TF, sondern im RAM vom Betriebssystem vorgehaltene, gelesene "Platteninhalte" solange nichts anderes das RAM braucht.
    Starte irgendein größeres Programm oder lade eine große Datei zwei mal hinter einander, und beim zweiten mal wird es wesentlich schneller bereit sein.


    Lest mal das hier, da wird euch geholfen...


    https://de.wikipedia.org/wiki/Cache

  • Es geht aber "um Stunden", nicht um hintereinander. Selbst wenn der Rechner dann mehrere Stunden nahezu nichts macht, sollten die alten Daten aus dem Cache verdrängt worden sein... und er hat ja 2 Stunden was anderes gemacht. Ein so langes vorhalten von Daten - selbst bei ausreichenden Resourcen - ist mir - zumindest wahrnehmbar - noch nicht untergekommen...


    Bei kurzfristigem neu laden nach einen Neustart des Spiels kurz nach Beenden von TPF kann ich aber auch eine Verkürzung der Ladegeschwindigkeit einer großen Test-Karte von ca. 16 Sekunden auf ca. 13 Sekunden bemerken, die nach Neustart des PCs wieder bei ca. 16 Sekunden liegt.


    Aber wie gesagt nicht wenn dazwischen auch noch andere Programme liefen...

    i7-5820 K | 32 GB | GTX 2070 Super 8 GB | Win 10 64bit | 10 TB HDDs
    i7-3770 K | 16 GB | GTX 1070 8 GB | Win 10 64bit | 4 TB HDDs

    Einmal editiert, zuletzt von 0815san ()

  • Selbst wenn der Rechner dann mehrere Stunden nahezu nichts macht, sollten die alten Daten aus dem Cache verdrängt worden sein

    Wie soll denn durch nichts tun etwas aus dem Cache verdrängt werden? Warum? Wozu?
    Teurer Hauptspeicher (im Vergleich zu den trägen Massenspeichern), der nicht genutzt wird, ist für den Ars..


    Vom Stromverbrauch ist es egal, ob da nun "nichts" im RAM steht oder die Informationen, die vor einer Woche da hinein geladen wurden.
    Solange kein anderes Programm etwas von dem vom Cache belegten Speicher benötigt, rückt das Betriebssystem kein einziges Byte von
    diesem heraus. Woher soll denn das System wissen, ob Du nicht vielleicht doch nach einer halben Woche wieder das selbe Programm
    oder die selben Daten benötigst?


    Das RAM in deinem Rechner ist bei den heutigen Betriebssystem immer zu 100 Prozent ausgenutzt (In der Computer-Steinzeit war das
    noch nicht so). Die laufenden Programm und Dienste bekommen ihre benötigten Speicherhäppchen und alles was übrig ist, wird als Cache genutzt!
    Es wäre grober Unfug, dies nicht zu tun...

  • Windows wird keine Virtual Memory Pages eines Prozesses beim Beenden des Prozesses im RAM behalten.

    Laut dieser Beschreibung (unter Standby) ist genau das der Fall für nicht modifizierte Pages. Zumindest steht es dort so, wie ich es auch verstanden habe und versucht habe, hier zu beschreiben.


    Der Heap eines Prozesses bleibt niemals bestehen wenn der Prozess beendet wird.

    Dann sagen wir dasselbe ;)

    Vor dem Komma nicht schlecht, dann aber Totalabsturz.

    Gleichfalls.
    Soweit ich weiss, ist Windows jedenfalls noch nicht Open Source.

    Einmal editiert, zuletzt von wato () aus folgendem Grund: Grammatik

  • Die "Virtual Memory Pages eines Prozesses" sowie der "Heap eines Prozesses" haben mit einem Cache,
    hier speziell der Disk-Cache, so viel gemeinsam, wie Zitronenfalter mit Zitronen falten.


    Um zu verstehen, wie ein Betriebssystem funktioniert, muss es nicht Open Source sein. Es ist keineswegs
    so, dass Microsoft diese erfunden hätte. Die Funktionsweise der heutigen Betriebssysteme ist älter als
    die Firma Microsoft und gehörte zumindest bei meinem Studium der Informatik zum Stundenplan.


    Wenn man nicht weiß, was ein Prozess, was eine Halde, was ein Cache etc. ist, dann sollte man
    sich an Nuhr halten: Einfach mal....


    ...und sich nicht mit jemanden anlegen, der seit 40 Jahren seine Brötchen damit verdient...

BlueBrixx