Hallo Leute , stehe leider vor einem Riesiegen problem.
Unser board wird mit nen USB gebottet wodrauf unser programm läuft.
Nun haben wir keine Swap unter linux und prob das wir grosse datenmängen im speicherladen so wie das OS.
Nun meine Frage gibt es eine einfach möglichkeit den Speicher auszulesen unter Py ?
Wir brauchen werder Virtuellspeicher noch sonst was abfragen halt nur den aktuellen speicher der noch frei ist.
Würde mich auch mit eine C/++ Api zufrieden stellen , wenn sie klein is
LG KC
Speicher auslastung und abfrage
Das lässt sich eigentlich nicht wirklich zufriedenstellend abfragen. Weil man es letztendlich doch mit virtuellem Speicher zu tun hat, auch wenn keine Auslagerungsdatei verwendet wird. Zum Beispiel kann man mit `malloc()` sehr viel Speicher anfordern, ohne das der wirklich physikalisch als RAM oder in der Auslagerungsdatei vorhanden sein muss. Solange man nichts in diesen Speicher hineinschreibt, belegt der nur ein ganz bischen Verwaltungsinformation.
Und bei Multitaskingsystemen hat man auch immer das Problem, dass das Ergebnis so einer Abfrage schon wieder ungültig sein kann wenn man es auswertet.
Und bei Multitaskingsystemen hat man auch immer das Problem, dass das Ergebnis so einer Abfrage schon wieder ungültig sein kann wenn man es auswertet.
Es wird tatsächlich nur der DDR speicher auf dem Mainborad benutzt.
Virtuellen speicher haben wir komplett raus genommen , da kein schreibmedium da ist wo er auslagern könnte.
Daher reicht eine einfach abfrage des verbleibenden speichers eigentlich aus.
Virtuellen speicher haben wir komplett raus genommen , da kein schreibmedium da ist wo er auslagern könnte.
Daher reicht eine einfach abfrage des verbleibenden speichers eigentlich aus.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi KC25m!KC25m hat geschrieben:Daher reicht eine einfach abfrage des verbleibenden speichers eigentlich aus.
Unter Linux kannst du den freien Speicher mit "free" oder noch besser mit "free -m" abfragen.
Mit Python sieht das so aus:
Code: Alles auswählen
#!/usr/bin/env python
import os
for line in os.popen("free -m").readlines():
if "buffers/cache" in line:
print line[:-1].rsplit(" ", 1), "MB frei"
break
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Virtuellen Speicher kann man nicht rausnehmen. Der ist ziemlich fundamental in Linux. Mit virtuellem Speicher ist die Umsetzung von virtuellen Adressen auf realen Speicher gemeint. Der kann dann entweder echtes RAM, oder aber Auslagerungsdatei sein. Egal wieviel RAM und/oder Auslagerungsdatei man wirklich hat, gibt's auf einem 32-bit Intelsystem einen virtuellen Adressraum von 4 GB pro Prozess. Davon wird nur das auf echten (Hintergrund)Speicher abgebildet, was in Benutzung ist.KC25m hat geschrieben:Es wird tatsächlich nur der DDR speicher auf dem Mainborad benutzt.
Virtuellen speicher haben wir komplett raus genommen , da kein schreibmedium da ist wo er auslagern könnte.
Daher reicht eine einfach abfrage des verbleibenden speichers eigentlich aus.
Und nun die Frage: Wieviel Speicher verbraucht `*ptr` in diesem Programm:
Code: Alles auswählen
#include <stdlib.h>
int main(void)
{
char *ptr;
ptr = malloc(300 * 1024 * 1024);
ptr[42] = '*';
while (1) {
}
}
Ja okay hast ja schon gewonnen , aber wie gesagt wir benutzen kein Swap und daher ist wirklich nur der chipram da.
Das prob ist das wir sehr grosse daten an grafiken haben die auf dem Bildschirm geblittet werden müssen.
Derzeit hängt sich das System zwischenzeitig weg nach paar minuten.
Letzte änderungen waren nur halt mehr grafiken weil mehr effekte gewünscht wurden.
Daher brauche ich halt eine lösung die einfach zwischenzeitig mal den Ram abfragt und ausgibt.
Denke mal das mit dem Free werde ich mal versuchen hoffe das ich dann sehen kann was wirklich los ist mit dem speicher.
Das prob ist das wir sehr grosse daten an grafiken haben die auf dem Bildschirm geblittet werden müssen.
Derzeit hängt sich das System zwischenzeitig weg nach paar minuten.
Letzte änderungen waren nur halt mehr grafiken weil mehr effekte gewünscht wurden.
Daher brauche ich halt eine lösung die einfach zwischenzeitig mal den Ram abfragt und ausgibt.
Denke mal das mit dem Free werde ich mal versuchen hoffe das ich dann sehen kann was wirklich los ist mit dem speicher.
inzwischen habe ich eine lösung gefunden, weiss nur noch net ob die so gut ist.
Ich öffne mit lesezugriff einfach "/proc/meminfo" was mir ständig die neuen werte dann angibt.
Funktioniert leider nur unter Linux , für windows hab ich leider immer noch keine brauchbare alternative gefunden.
Ich öffne mit lesezugriff einfach "/proc/meminfo" was mir ständig die neuen werte dann angibt.
Funktioniert leider nur unter Linux , für windows hab ich leider immer noch keine brauchbare alternative gefunden.
-
- User
- Beiträge: 94
- Registriert: Freitag 12. September 2003, 07:58
- Wohnort: 50.9333300 / 6.3666700
Hi unter windows kann Dir eventl. die Wmi weiterhelfen.
http://python.sandtner.net/viewtopic.php?t=2639
Greetz from 2bock
http://python.sandtner.net/viewtopic.php?t=2639
Greetz from 2bock
Also prob war das wir halt eine riesen mänge an daten haben die geladen werden ... des weiteren schreiben wir noch auf dem USBStick daten zurück die wir im laufe des spieles sammeln.
Das aufhängen hat sich nun erledigt , für dem Speicher habe ich nun eine Preload funktion geschrieben (wir nutzen Pygames) ...
Lade die Grafiken in einen cStringIO und entpacke sie bei bedarf und lösche sie dann wieder , das cStringIO wird halt im Speicher gehalten.
Läuft echt super , nur das beim entpacken die CPU auslastung in die höhe geht und unser system dann halt für ein paar ms stehen bleibt.
Das mit dem WMI hört sich echt gut an , dann könnte ich alles unter Win testen und muss nicht immer zu ziehlplatform rennen und da die speichertests machen .
Danke Euch für die Schnelle und Infomative Antowrten.
Gruß der KC
Das aufhängen hat sich nun erledigt , für dem Speicher habe ich nun eine Preload funktion geschrieben (wir nutzen Pygames) ...
Lade die Grafiken in einen cStringIO und entpacke sie bei bedarf und lösche sie dann wieder , das cStringIO wird halt im Speicher gehalten.
Läuft echt super , nur das beim entpacken die CPU auslastung in die höhe geht und unser system dann halt für ein paar ms stehen bleibt.
Das mit dem WMI hört sich echt gut an , dann könnte ich alles unter Win testen und muss nicht immer zu ziehlplatform rennen und da die speichertests machen .
Danke Euch für die Schnelle und Infomative Antowrten.
Gruß der KC