Größe des RAMs Ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

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.)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
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.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

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!)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Aber Grundsätzlich ist nicht der Ganze RAM belegt. Aber manche Programme können auch die System Auslastung herausfinden, z. B. Taskmanager, Virenscanner, usw.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Wenn ihr immer so denkt, wieso Programmiert ihr dann? Es kann immer sein das aus irgendeinem Grund etwas nicht funktioniert. :roll:
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

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.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
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.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Also bleibt mir nicht weiter übrig als weiter 'dumme' Programme zu Schreiben.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich habe das Gefuehl, dass folgender Link hier reichlich relevant ist: http://www.varnish-cache.org/trac/wiki/ArchitectNotes
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

@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.
Antworten