Page 1 of 1

Free-Memory aus C-Programm ermitteln

Posted: 29. Jan 2002 13:22
by sulu
Hi.

Ich möchte meinen C-Programmen ein sinnvolles Memory-Limit auf's Aug drücken. Leider finde ich einfach keine Funktion die etwas analoges zum Output von free in der bash liefert. Unter freien Speicher verstehe ich übrigens: (free + buffers + cached). Ich finde in dan man-pages einfach nichts. <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
Ich hab mir schon überlegt einfach ein
echo /proc/meminfo > mem.txt vom Programm aus abzusetzen und nachfolgend mem.txt entsptrchend auszuwerten. Das finde ich aber nicht sehr elegant.

Wer weis Rat ?

Gruss und Dank
Sulu

Re: Free-Memory aus C-Programm ermitteln

Posted: 29. Jan 2002 13:29
by trinity
Du hast doch sicherlich die Quellen von free, oder? <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Re: Free-Memory aus C-Programm ermitteln

Posted: 29. Jan 2002 17:31
by hjb
Hi,

die Aufgabe ist sinnlos. Es ist immer genug Speicher frei, solange malloc nicht NULL liefert.

Etwas anderes ist es, wenn du die Funktion von free usw. imitieren willst. Aber wozu braucht man noch eine Version von free? Für den User sind die Zahlen nutzlos.

Gruß,
hjb

Re: Free-Memory aus C-Programm ermitteln

Posted: 29. Jan 2002 18:10
by sulu
Hi Lutz.

An die Quellen von free hab ich gar nicht gedacht.
Es sitzt sich gut auf dem Hirn.
Danke für die Anregung.

Hi hjb.
Das weis ich schon. Ich möchte das die Programme erst gar nicht den anfangen den Swap zu nutzen.
Swap ist für mich ein wenig performanter Notnagel ums das System bei grosser Last funktionsfähig zu halten.

Gruss
Sulu

Re: Free-Memory aus C-Programm ermitteln

Posted: 01. Feb 2002 13:01
by hjb
Hi Sulu,

> Swap ist für mich ein wenig performanter Notnagel
> ums das System bei grosser Last funktionsfähig zu halten.

das kann man so nicht sehen. Swap dient in erster Linie dazu, nicht aktive Programme auszulagern. Es verringert nicht die Performance, sondern steigert sie. Erst wenn der Working Set (die aktiven Speicherseiten) größer wird als das RAM, müssen ständig aktive Seiten ausgelagert werden, und das System wird langsam (thrashing).

Du könntest zwar Thrashing erkennen, indem du die Zahl der pagein/pageout pro Sekunde mißt, doch ich sehe wenig Sinn darin. Kein Programm hat sowas eingebaut, nur ganz wenige messen die Systemlast (sendmail, INN, ...).

Die Performance mißt man ab und zu mit einem Tool, und wenn das System ständig am Swappen ist, steckt man mehr RAM rein oder konfiguriert die Software um, so daß sie weniger Speicher braucht. Aber einen direkten Einbau in ein Programm halte ich für sinnlos.

Gruß,
hjb

Re: Free-Memory aus C-Programm ermitteln

Posted: 01. Feb 2002 16:42
by Sulu
Hi hjb.

>das kann man so nicht sehen. Swap dient in erster Linie dazu, nicht aktive Programme auszulagern. Es verringert nicht die Performance, sondern steigert sie. Erst wenn der Working Set (die aktiven Speicherseiten) größer wird als das RAM, müssen ständig aktive Seiten ausgelagert werden, und das
System wird langsam (thrashing).

Aha. Sehr interessant. Das System macht den RAM frei und das Programm läuft ergo so performant wie möglich.

Es geht mir darum das Blocking mit möglichst grossen Blöcken durchzuführen. Na gut. Dan setzen wir halt einen vernünftigen Default.

Danke
Sulu