Kernelspace und Userspace

Stephan78

Ensign
Dabei seit
Sep. 2010
Beiträge
151
Hallo,

ich habe 3GB RAM unter WinXp Home und erhalte
Memory-Fehler, wenn der verfügbare freie Speicher auf <1GB sinkt.
Der Memoryfehler wird von Python-Skripten verursacht, sofern diese
zu <1GB freier RAM führen. Vor Starten von Python sind rund 2GB frei,
wenn Python läuft, rund 1,8 bis 1,7 GB frei und bei RAm-intensiven Operationen dann bis zu < 1GB.
Unklar ist, warum der Fehler erzeugt wird, da ja die 2GB als obere Grenze für den Prozeß "Python"
nicht erreicht werden und freier Speicher ebenfalls zur Verfügung steht.
Eine mögliche Problemquelle, die mir noch einfällt, ist die Aufteilung des RAMS in
Kernel- und Userspace. Hierzu sowie zur Windows-Speicherverwaltung meine Frage:
Was zeigt der Windows Taskmanager unter freier verfügbarer Speicher an?
verfügbaren Userspace oder Userspace + nichtbelegten kernelspace? Letzteres
könnte den Memoryfehler erklären, falls nicht, weiß ich dann wirklich nicht,
woran das Problem liegt. Kommt ein Treiberproblem (Chipsatz o.a.) in Frage
oder irgend eine Einstellung im BS?
 

muesler

Commander
Dabei seit
Apr. 2005
Beiträge
2.099
Klingt für mich nach Speicherleck im Script... Oder defektes RAM... Was sagt MemCheck?
 

DocWindows

Rear Admiral
Dabei seit
Mai 2013
Beiträge
5.334
Von was werden die Fehler denn gemeldet? Python oder Windows?
Speicherfehler bekomme ich eigentlich von Windows nur dann wenn ein Prozess mehr Speicher reservieren möchte als er darf (32-Bit Beschränkung).
Ansonsten gibt es unter Windows mehrere Arten von Speicher. Da kann man ohne genauere Fehlertexte eigentlich nicht sagen welcher Speicher das Problem verursacht.
 

Stephan78

Ensign
Ersteller dieses Themas
Dabei seit
Sep. 2010
Beiträge
151
Hallo,
danke für die schnellen Rückmeldungen.
Der Fehler wird nicht von Windows ausgelöst, sondern im Python-Script,
wenn es läuft und die problematiche Befehlszeile(n) enthält.
Diese Befehlszeile selber sollte korrekt sein, es wird ja auch kein Syntaxfehler
ausgeworfen und es gibt keine Endlosschleife etc..
Der Fehler wird im Pandas-Modul für Python erzeugt, wenn eine Pivottabelle
erstellt werden soll aus einer 280MB großen Tabelle.
Möglicherweise hat die Pivot-Routine an sich einen Fehler bzw. Speicherleck,
allerdings verstehe ich nicht, warum der Fehler ausgegeben wird, wenn
noch reichlich freier Speicher vorhanden ist, lt. Taskmanager.

Wie führt man diesen RAM-check in WIN XP aus?
Eines wundert mich: Wenn ich im Taskmanager unte Physikalischer Speicher nachschaue,
wird unter Insgesamt 3109932 KB angezeigt.
Wenn ich das unter Windows Systeminformationen nachschaue,
wird 4096 MB als gesamter realer Speicher angezeigt.
Was stimmt da nun?
 

muesler

Commander
Dabei seit
Apr. 2005
Beiträge
2.099
Ich gehe mal davon aus, du hast ein 32 bit WinXP, dann kann das System ohnehin nicht mehr als ca 3GB addressieren.
Die 4GB sind das verbaute RAM, die 3GB der vom OS verwendbare Anteil... Daher machen mehr als 4GB RAM bei einem 32 bit OS keinen Sinn (liegen brach)...
 

Stephan78

Ensign
Ersteller dieses Themas
Dabei seit
Sep. 2010
Beiträge
151
ja, ist ein 32 bit System.
Man kann aber glaube ich
einen 3GB switch setzen in der boot.ini
und mehr Speicher für Anwendungen erzwingen.
Außerdem dachte ich, daß WinXp 32 bit 4GB verwalten kann.

Wie checkt man seinen RAM auf Fehler?
das o.g. Problem ist nun leider noch nicht gelöst.
 
G

Green Mamba

Gast
Der 3GB-Switch wirkt nur in Verbindung mit speziell dafür kompilierten Anwendungen. ;) Warum zeigst du uns nicht einfach mal die Fehlermeldung?
 

Stephan78

Ensign
Ersteller dieses Themas
Dabei seit
Sep. 2010
Beiträge
151
Hi die Fehlermeldung wird in der Python Console angezeigt
und sieht so aus:

mask = np.zeros(np.prod(self.full_shape), dtype=bool)
MemoryError

die 1. Zeile zeigt die Aktion, bei der der Fehler auftrat und ist in dem Fall
eine interne Python/Pandas-Prozedur .

Normalerweises wird ein memory Fehler ausgegeben, wenn nicht mehr genug
RAM zur Verfügung steht, was in meinem Fall ja offensichtlich aber nicht der Fall ist.
 
Top