Free-Memory aus C-Programm ermitteln

Post Reply
Message
Author
sulu
Posts: 64
Joined: 29. Oct 2001 10:13
Location: Dornbirn

Free-Memory aus C-Programm ermitteln

#1 Post 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

trinity
Posts: 821
Joined: 12. Oct 2001 10:04

Re: Free-Memory aus C-Programm ermitteln

#2 Post 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">
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Free-Memory aus C-Programm ermitteln

#3 Post 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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

sulu
Posts: 64
Joined: 29. Oct 2001 10:13
Location: Dornbirn

Re: Free-Memory aus C-Programm ermitteln

#4 Post 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

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Free-Memory aus C-Programm ermitteln

#5 Post 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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Sulu

Re: Free-Memory aus C-Programm ermitteln

#6 Post 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

Post Reply