Protokollierung von Ressourcengebrauch möglich?

cabriofahrer

Well-Known Member
Mich würde einfach mal interessieren, ob eine Protokollierung vom Ressourcengebrauch (insbesondere RAM, SWAP, CPU) möglich ist, bevor ich ein Spiel starte und die ich mir hinterher angucken kann, idealerweise als Grafik/Statistik? Reine Zahlenwerte tun es zur Not auch.
 
Also wenn du wirklich detailierte Informationen wuenschst, dann brauchst du einen Profiler wie gprof. Dazu muss du das Programm, aber neu bauen mit -gp. Das kannst du dann auch mit entsprechenden Tools visualisieren. Mit valgrind gibt es aehnlich Moeglichkeiten.

Wenn es wirklich nur um CPU load etc geht, kannst du ja auch iostat -I <zeitintervall> bzw. vmstat benutzen.
 
Cacti würde den Job ganz gut erledigen, allerdings hat es einige Anforderungen (Webserver mit PHP, MySQL-DB, SNMP) die es für ein Einzelsystem als oversized erscheinen lassen. Aber damit lassen gut solche Werte über einen langen Zeitraum aufzeichnen und dokumentieren.
 
Oder Munin. Ich finde Cacti ist eine Strafe. Wenn es denn läuft dann OK. Aber danach nicht mehr fummeln.
 
Munin ist dafür sehr gut.

Wenn du es ein wenig hipper haben möchtest könntest du dir die collectd mal anschauen - das in Kombination mit Grafana und Co lässt keine Wünsche bzgl. Dashboards offen - ist aber einiges an Arbeit.

Gruß
Markus
 
OK, Danke für die Hinweise. Allerdings erscheinen mir diese Programme etwas kompliziert, da müsste man sich wohl länger mit beschäftigen. Ich konnte mein Ziel jedoch anders erreichen: Gkrellm hat eine Funktion namens "Set on top of other windows of the same type". Wenn ich jetzt Team Fortress 2 im Fenstermodus starte, ist Gkrellm stets sichbar und ich kann die Werte ablesen. Wen es interessiert: Mitten im Spiel sind von 2GB dann weniger als 200 MB frei, und von 2 GB Swap dann noch um die 700. Die Prozessorleistung von beiden Kernen liegt bei über 90 %, aber selten bei 100. Fazit: 4GB wären wohl optimal für TF 2.
 
Was verstehst Du unter frei?
Wenn der Wert von Free gering ist, aber viel Speicher Inact ist, so gibt es keinen Grund zur Beunruhigung.
Auch Swapbenutzung ist nicht böse. Ein nichtgebrauchter Prozess kann auch mal ausgeswappt werden. habe das ganze beim Neuerstellen eines Full-Backups am Wochenende erst selbst erlebt.
 
Nun, "free", also frei, ist das was angezeigt wird. Was soll man mehr dazu sagen? Und Swapbenutzung bedeutet bei Online-Shootern eben in diesem Moment den sofortigen Tod...
 
Und Swapbenutzung bedeutet bei Online-Shootern eben in diesem Moment den sofortigen Tod...
Na, dann sind Online-Shooter gute Kandidaten zum Messen der Effektivität eines Settings! Dann brauchen wir nur noch einen leistungsfähigen Simulator an der Konsole und fertig ist das Tool. :) ;)

Nachtrag: Vielleicht sollte man das Ganze auch ganz einigen Simulatoren überlassen die die ganze Nacht spielen und man hätte wieder Zeit zum lesen, zum aufräumen, zur Liebe oder was auch immer...:)
 
Code:
Mem: 2250M Active, 3590M Inact, 1068M Wired, 243M Cache, 780M Buf, 680M Free
Weil ich das grad laufen habe, mal eine Kopie der Ausgabe von top(1). Es gibt natürlich Werkzeuge, die noch umfangreichere Information zur Speicherauslastung zeigen, aber im Unterschied zu nur "free" ist das jedenfalls schon etwas deutlicher. Das kannst du auch in einem Fenster über anderen laufen haben, eine bei mir beliebte Optionenfolge ist -tCIP. Gefällt mir besser, als solche Dinger wie gkrellm.

Und SWAP habe ich ganz ausgeschaltet, sonst gäbe es dafür noch eine weitere Zeile. Ist SWAP vorhanden, wird er auch irgendwann genutzt. Ohne SWAP wird früher etwas aus Inactive weggenommen, um das mal so platt zu sagen. Ich will das nicht falsch wiedergeben, aber man könnte sich denken, dass in Wahrheit "Free" plus "Inact" dein verfügbarer Speicher ist. Das ganze ist natürlich unendlich komplexer und wenn weniger Speicher vorhanden ist, dann wird da automatisch eine ganz andere Verteilung gefahren. Sonst könnte man auf Systemen mit <GB RAM ja niemals irgendwas kompilieren.
Vorhersagen über den Speicher-Einsatz sind sicher selbst für Experten nicht einfach und da unterscheiden sich durchaus auch Linux von FreeBSD oder DragonFlyBSD. Man könnte vielleicht sagen, dass FreeBSD etwas konservativer mit Speicher umgeht und daher womöglich nicht so riskant, aber Linux zum Beispiel möglicherweise eine höhere Performance liefern kann. Das sind allerdings pauschale Sprüche, die der Wirklichkeit kaum gerecht werden. Die ist auch mit top und anderen einfachen Tools nur annähernd zu ahnen und allenfalls in der Langzeitbeobachtung zu erschließen.

Manchmal denke ich, die Spielehersteller bauen besondere Routinen ein, um viel Speicher und CPU zu verbrauchen. Es scheint mir wie ein Wettbewerb und ein Qualitätsmerkmal für ein Spiel, dass es besonders viele Ressourcen verbraucht. Das ist eine merkwürdige Auffassung; früher wollte man genau das vermeiden und hielt solche SW für die schlechtere. Ich meine, was wird denn letztlich verlangt und gemessen? Wie schnell jemand einen bestimmten Knopf wie oft hintereinander drücken kann und dabei gleichzeitig Bewegungen an einem Steuergerät vollführt? Dazu bräuchte es doch keiner komplexen Grafik mit aufwändigem Sound.
Jedenfalls fühle ich mich durch so etwas nicht angesprochen und kann auch solchen Spielen nichts abgewinnen, aber das ist ein anderes Thema.
 
Nicht nur einfach keine Swap geben, sondern auch noch 'sysctl vm.swap_enabled=0' setzen. Sonst führt er die Berechnungen ob er swappen muss weiter durch, kommt nur jedes Mal zum Ergebnis, dass er nicht ausreichend Swap hat. Die CPU-Zyklen kann man sich sparen... Allerdings bleibe ich nach wie vor dabei: Eine kleine Swap schadet nicht, sondern gibt dem System mehr Luft.
 
'sysctl vm.swap_enabled=0'
danke.
Das ist wieder so ein kleiner und wertvoller Hinweis, auf den ich ja niemals gestoßen wäre. Wer liest schon alle sysctl-Variablen, versteht die dann auch noch und setzt die nötigen Einstellungen richtig, die dem persönlichen Wunsch entsprechen? Lernt man so etwas? Liest man das irgendwo?
 
Das liest man und merkt es sich. Wenn man es sich nicht merken kann, schreibt man einen Kommentar in die Config-Datei und nimmt diese immer mit ;)
 
Das liest man und merkt es sich. Wenn man es sich nicht merken kann, schreibt man einen Kommentar in die Config-Datei und nimmt diese immer mit ;)

Jeh, nuhn, klar, nun habe ich es auch in meiner conf!
Aber in meiner Tageszeitung könnte ich lange danach suchen. Wo liest man denn das, ich meine, wenn man nicht auf bloßen Zufall angewiesen sein möchte?
 
Yamagi hat extrem viel Wissen um FreeBSD, eine wandelnde Enzyklopädie ;) Hauptsächlich bekommt man das, indem man mit diesen Systemen arbeitet und auch mal eine man-Page durcharbeitet und nicht bei Google sucht, denke ich. Alle sysctl Befehle zum Thema vm kann man sicher auch mal überfliegen...
 
Wäre es in dem Fall nicht sinnvoller, die Berechnungen auch ohne den sysctl-Knopf nicht zu machen, wenn kein Swap da ist? Warum ist das überhaupt parametrisierbar? Gibt es irgendeinen Sinn, die Berechnungen zu machen, wenn man keinen Swap hat?

Sinnvolle Defaults > tausend Knöpfe, deren genaue Bedeutung in Foren rumgereicht wird. Wie Linux...
 
Ich habe es gerade noch mal im Code nachgelesen:
  • Wenn der Kernel mit NO_SWAPPING gebaut ist, wird der Swap-Code komplett herausgelassen. In dem Fall kann also keine Swap genutzt werden. Das spart ein paar Zeilen Code ein und das Kernelimage wird etwas kleiner. Sinn dürfte das nur haben, wenn man sich Embedded Systeme oder ähnliches baut, die definitiv keine Swap benötigen.
  • Wenn vm.swap_enabled gesetzt ist, wird in Situationen von Speicherknappheit (die angeforderte Menge Pages ist nicht mehr bereitzustellen, es muss Speicher freigeräumt werden) der für das Deaktivieren ausgeswappter Pages zuständige Kernel-Thread nicht aufgeweckt. Das spart im Falle einer nicht vorhandenen Swap tatsächlich einige CPU-Zyklen, aber es ist ein selten auftretender Randfall. Wenn die Speicherknappheit diesen Punkt erreicht hat, ist man nur noch den letzten Strohhalm in Form von einem Schließen nicht benötigter Vnodes (die Kernelrepräsentation von Dateien) vom Out of Memory Killer entfernt.
Kurz gesagt, ob vm.swap_enabled nun auf 1 oder 0 gesetzt ist, dürfte in der Praxis keinen messbaren Unterschied machen. Wenn man an den Punkt kommt, dass vm.swap_enabled relevant wird, ist das Kind eh schon im freien Fall in Richtung Brunnen-Boden und kaum noch aufzuhalten.

Nachtrag: FreeBSD ist wie jedes System unter gewissen Annahmen vorkonfiguriert. Wenn man zu sehr von diesen Annahmen abweicht, muss man nun einmal in die Konfiguration eingreifen. Ja, teilweise könnte das System von sich aus mitdenken. Aber das ist Code, den jemand schreiben muss. Wenn es um Randfälle geht, ist die Begeisterung da oft gering. Kurz gesagt: Patches are welcome. Und ja, es wäre auch schön, wenn alle Sysctl in einer großen Tabelle dokumentiert wären. Aber auch die muss jemand erstellen und pflegen. Es mag sein, dass kommerzielle Systeme da etwas besser dokumentiert sind. Schließlich bezahlt der Hersteller jemand für das Erstellen der Doku. Allerdings ist der Abgrund nicht dokumentierter Funktionen und Einstellungsmöglichkeiten meiner bescheidenen Erfahrung nach zumindest bei OS X und Windows kaum weniger tief als bei Linux und den BSDs. Mit dem Unterschied, dass man dort nicht mal eben in den Code schauen kann. Können wir uns daher dieses provokante und nur auf Anzetteln von Streit gerichtete "wie Linux" Nicht-Argument vielleicht sparen?
 
  • Like
Reaktionen: lme
Zurück
Oben