Seite 1 von 1

Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 20:52
von Py-Prog
Ist es eigentlich möglich mit Python die Größe des RAMs zu Ermitteln?
Es wäre zwar nicht zwingend wichtig, aber besser für ein Programm.

(Und wenn es möglich ist und ich ein Modul dafür brauche was nicht standardmäßig dabei ist bitte den Download Link, und eine Referenz wenn oder ein Beispiel.)

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 20:59
von BlackJack
@Py-Prog: Für welches Betriebssystem? Und was denkst Du was Du mit der Information anfangen kannst? Der Speicher wird ja vom Betriebsystem verwaltet und steht nicht *einem* Programm zur Verfügung. Wie welcher Speicher (real und virtuell) welchem Prozess zugeordnet wird, hängt von vielen Faktoren zu Laufzeit eines Prozesses ab und was da nebenher noch so alles läuft. Ein einzelnes Programm kann also mit der Information wieviel Speicher im Rechner steckt, also eigentlich nicht viel sinnvolles anfangen.

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 21:05
von Py-Prog
Das Betriebssystem ist (immer noch) Windows XP (Home SP3).
Und doch, ein einzelnes Programm kann damit sehr viel anfangen. (Und es ist auch noch sinnvoll!)

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 21:11
von DasIch
Py-Prog hat geschrieben:Es wäre zwar nicht zwingend wichtig, aber besser für ein Programm.
Besser für was?

Die Grösse des RAMs absolut gar nichts über dessen Verfügbarkeit aus. Speicher kannst du überhaupt nicht managen und der Speicherverbrauch eines Objektes ist sowieso nicht zu ermitteln.

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 21:21
von Py-Prog
Aber Grundsätzlich ist nicht der Ganze RAM belegt. Aber manche Programme können auch die System Auslastung herausfinden, z. B. Taskmanager, Virenscanner, usw.

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 21:27
von HerrHagen

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 30. Dezember 2010, 21:50
von DasIch
Py-Prog hat geschrieben:Aber Grundsätzlich ist nicht der Ganze RAM belegt.
Stimmt aber du musst auch noch Fragmentierung beachten usw. Es kann durchaus sein dass du 100MB frei hast und Allokationen von weitaus weniger fehlschlagen.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 21:01
von Py-Prog
Wenn ihr immer so denkt, wieso Programmiert ihr dann? Es kann immer sein das aus irgendeinem Grund etwas nicht funktioniert. :roll:

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 21:32
von DasIch
Deine vorherigen Posts geben genug Kontext um bei der Frage davon auszugehen dass was auch immer du machen willst scheitert oder absolut grausam wird. Grund genug erstmal genau nachzufragen was du vorhast bevor man eine Antwort gibt.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 21:46
von Py-Prog
Das Backup-skript was ich mal geschrieben hab, hat auf einmal nicht mehr funktioniert und jetzt weiß ich wieso, weil eine Datei zu groß war. Und wenn ich den Fehler beheben will muss ich ja z. B. immer nur 512 MB von einer Datei einlesen bis sie Kopiert ist. Und jetzt wäre es besser wenn das skript selber erkennt wie viel es auf einmal kopieren kann. Wenn es auf einem getunten PC läuft mit 16 GB RAM und es dann auch nur so 'Kleine' teile Kopiert, verhältnismäßig zu langsam.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 22:12
von DasIch
Ob du 5MB einliest oder 512MB dürfte von der Geschwindigkeit keinen grossen Unterschied machen, wer aber tatsächlich 16GB Speicher hat wird die sicherlich nicht haben weil er die braucht um Backupscripts laufen zu lassen.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 22:30
von BlackJack
@Py-Prog: Du machst da IMHO viel zu naive Annahmen. Wenn das zum Beispiel ein Windows-Rechner ist, dann läuft da in der Regel ein Kernel-Task, der regelmässig Speicherseiten von Prozessen in die Auslagerungsdatei schreibt. Je mehr Du also auf einmal in den Speicher liest ohne das zeitnah wieder freizugeben, desto mehr Daten werden völlig unnötigerweise auf die Platte geschrieben. Wenn dann noch andere Prozesse Speicher anfordern fliegen die Speicherseiten aus dem RAM und müssen, wenn Du dann endlich wieder ans schreiben gehst, erneut von Platte in den RAM geladen werden. Das ganz also zeitlich auch ganz gewaltig nach hinten losgehen.

Das Betriebssystem hat die Aufgabe den Speicher zu verwalten und tut das auf modernen Systemen auf relativ komplexe Art und Weise. Da sollte man nicht versuchen "schlauer" zu sein, sondern darauf vertrauen, dass das BS seinen Job im Mittel ordentlich erledigt. Die Blöcke sollten IMHO ein paar wenige MB nicht überschreiten, so dass das auch auf Systemen mit wenig RAM vernünftig funktioniert und anderen Prozessen nicht unnötig Speicher abringt. Wenn ein Betriebssystem erkennt, dass ein Prozess in hoher Geschwindigkeit aus einer Datei liest und in eine andere schreibt, dann kann es auch so viel wie RAM "frei" ist, in den Block-Cache lesen, wenn das was bringt.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 22:36
von Py-Prog
Also bleibt mir nicht weiter übrig als weiter 'dumme' Programme zu Schreiben.

Re: Größe des RAMs Ermitteln

Verfasst: Freitag 31. Dezember 2010, 22:43
von DasIch
Du kannst es ohnehin nicht sinnvoll besser hinbekommen, im Gegenteil solche "Optimierungen" sind sehr komplex, nahezu unmöglich auf jeder Platform sinnvoll hinzubekommen und haben zweifelhaften Erfolg, den noch hast du noch nicht gezeigt dass deine Annahmen überhaupt richtig sind. Speicher Allokation kostet dich schliesslich auch Zeit.

Re: Größe des RAMs Ermitteln

Verfasst: Samstag 1. Januar 2011, 02:29
von cofi
Ich habe das Gefuehl, dass folgender Link hier reichlich relevant ist: http://www.varnish-cache.org/trac/wiki/ArchitectNotes

Re: Größe des RAMs Ermitteln

Verfasst: Donnerstag 6. Januar 2011, 08:32
von mkesper
@cofi: Sehr interessant, der Link, danke!
Python ist ja eine Hochsprache und das aus gutem Grund. Wer immer nur versucht, jedes kleine Schräubchen "optimal" zu bedienen, verliert leicht den Blick für das große Ganze.