RAM-Verbrauch feststellen unter *BSD

kraileth

Steht noch ganz am Anfang
Hallo zusammen!

Mein bevorzugter leichtgewichtiger Desktop, das auf dem FLTK toolkit aufbauende EDE (http://equinox-project.org/), ist glücklicherweise auch auf den BSDs in den Ports verfügbar. Eine Funktion die dort gegenüber Linux jedoch fehlt, ist das memory usage applet. Das macht den Desktop zwar nicht gerade unbenutzbar, aber ich fände es schön, wenn die BSD-Version mit Linux auf einer Stufe stünde und nicht ein Stück darunter.

Der Entwickler ist gegenüber BSD erfreulich aufgeschlossen (sowohl den Betriebssystemen, als auch permissiven Lizenzen, weshalb eine Änderung von der GPL weg erwogen wird). Meine Frage, warum das Memory Meter auf den BSDs nicht funktioniere, beantwortete er dahingehend, daß er einen sysinfo() API call nutze, der wohl linuxspezifisch sei. Eine BSD-Alternative mit einzubauen ist er jedoch nicht abgeneigt.

Meine Frage ist jetzt: Wie fragt man mit C bzw. C++ unter den BSDs den RAM-Verbrauch korrekt ab? Gibt as da eine Möglichkeit, die am besten für Free/Open/Net und möglichst die Exoten gleichsam gilt? Für Anregungen dazu wäre ich dankbar.
 
Unter FreeBSD macht man es per sysctl(): https://www.freebsd.org/cgi/man.cgi?query=sysctl&sektion=3

Die Nodes sind:
  • vm.stats.vm.v_active_count
  • vm.stats.vm.v_inactive_count
  • vm.stats.vm.v_wire_count
  • vm.stats.vm.v_cache_count
  • vm.stats.vm.v_free_count
  • vm.stats.vm.v_swappgsin
  • vm.stats.vm.v_swappgsout
Die Werte sind in Pages, müssen also mit der Pagesize multipliziert werden.
 
Vielen Dank, Yamagi! Ich gebe das dann mal so weiter - und bin gespannt, ob es dieses Feature in die kommende Version schafft. :)

Kann irgendjemand noch etwas zu OpenBSD bzw. NetBSD sagen? Sind diese Sysctls FreeBSD-spezifisch, oder funktionieren sie BSD-übergreifend?
 
@kraileth

"... oder funktionieren sie BSD-übergreifend?"

Zu NetBSD: 'sysctl -a | grep vm.stats' liefert kein Ergebnis. Also wohl eher nicht!
Ich kenne mich mit FreeBSD nicht sonderlich gut aus, daher kann ich die o.g. Nodes nicht zu den entsprechen von NetBSD zuordnen.

VG aus LE
Franco
 

Hallo franco98,

danke für die Bestätigung, daß dieses Vorgehen doch FreeBSD-spezifisch ist und den Hinweis darauf, wie man es mit NetBSD macht. Bin mir noch nicht ganz sicher, ob ich das einfach so weitergebe oder mir etwas Zeit nehme und zuerst selbst mal zusätzlich zu meinen FreeBSD-Rechnern einen mit NetBSD aufsetzu und selbst mal versuche, etwas Code zusammenzuschreiben... Währe wahrscheinlich keine schlechte Gelegenheit auch mal NetBSD kennenzulernen, was sich bisher noch nicht ergeben hatte. :)
Eine andere Möglichkeit wäre wohl den FreeBSD port von sysinfo als Abhängigkeit zu haben. Wobei sysctl eben diese die Abhängigkeit erspart.

Für FreeBSD sicher eine nette Möglichkeit. Werde es mir bei Gelegenheit mal anschauen, danke. Aber im Grunde ich will ja gerade versuchen, ob das „mem meter“ nicht auf *BSD zur Kooperation zu bewegen ist. Klar, FreeBSD ist mein erster Ansatzpunkt, aber ich würde gerne nicht die anderen ausschließen.

Wenn Dich kryptische Befehle und Seitengrößen nervös machen, ist das hier einen Blick wert:
http://www.cyberciti.biz/faq/freebsd-command-to-get-ram-information/

Hier liegt wohl das Original:
http://people.freebsd.org/~rse/dist/freebsd-memory

Ahh, die eine Seite hatte ich vor einiger Zeit mal gefunden, als ich nach einem FreeBSD-Äquivalent für "free" suchte. War etwas verwundert, daß es das „von Haus aus“ nicht gibt. Aber klar, damit kann man sich schon behelfen. Allerdings ist das ja eher für den Anwender interessant, vielleicht noch innerhalb von Shellskripten. Aber falls ich nicht weiterkomme, kann ich mir natürlich mal den Programmcode ansehen und schauen, wie es dort gelöst ist. Danke für die Empfehlung!
 
Ahh, die eine Seite hatte ich vor einiger Zeit mal gefunden, als ich nach einem FreeBSD-Äquivalent für "free" suchte. War etwas verwundert, daß es das „von Haus aus“ nicht gibt.
Das hängt damit zusammen, dass die Information im Alltag nicht besonders nützlich ist. Ich würde mal schätzen, dass 90% der Leute die die Information haben wollen diese vollkommen falsch interpretieren.
 
Zurück
Oben