|
|
Speicherprobleme bei zweiter Festplatte |
|
Lipton-Ice |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 16.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2011, 15:01
Titel: Speicherprobleme bei zweiter Festplatte
|
|
|
|
|
Hallo,
da ich neu hier bin, bin ich mir auch nicht ganz sicher ob dieser Thread der richtige ist, versuche es dennoch.
Problem:
Ich glaube mein Code (in Matlab 2007b) ist etwas zu lang um ihn hier zu posten, doch ich erläutere einfach mal das Problem.
Eine for-loop am Ende des Skripts lädt ein mat-file aus einem Ordner mit ca. 300000 mat-files. In dieser Datei befindet sich eine ca. 1000x1000 Matrix im logical Format.
Anschließend wird das Format in uint8 geändert und jede 1 wird durch eine 255 ersetzt.
Diese Matrix soll dann in einem anderen Ordner der gleichen Festplatte (d: ) in ein mat-file gespeichert werden.
Dabei dauert es ca. 5 Minuten zur Speicherung einer einzigen Datei.
Wird hingegen die Datei auf Festplatte c: gespeichert geht alles RuckZuck.
Zusatz (auch wenn es eigentlich keine Rolle spielen sollte):
Das m-file, in dem das Skript gespeichert ist wurde zwischenzeitlich auf einem anderen PC mit Matlab 2011a editiert. Vorher gab es keine Probleme mit dem Skript, nun schon. Veränderungen an dem file waren jedoch nur kleinere Veränderungen, die nicht innerhalb der angesprochenen for-loop vorgenommen wurden.
Vielen Dank für eure Hilfe und Grüße,
Lipton-Ice
|
|
|
Verschoben: 16.05.2011, 17:52 Uhr von denny Von Matlab intern nach Sonstige MATLAB Fragen |
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 16.05.2011, 17:59
Titel: Re: Speicherprobleme bei zweiter Festplatte
|
|
Lipton-Ice hat Folgendes geschrieben: |
Hallo,
Zusatz (auch wenn es eigentlich keine Rolle spielen sollte):
Das m-file, in dem das Skript gespeichert ist wurde zwischenzeitlich auf einem anderen PC mit Matlab 2011a editiert. Vorher gab es keine Probleme mit dem Skript, nun schon. Veränderungen an dem file waren jedoch nur kleinere Veränderungen, die nicht innerhalb der angesprochenen for-loop vorgenommen wurden.
|
Welche Art von Problem meinst denn, das du oben beschrieben hast? Also meinst früher ging das Speichern schneller? Was würde denn editiert?
Ich denke nicht das es an Matlab liegt
Vielleicht ist deine Festplatte fragmentiert. Lösung die Festplatte defragmentieren
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 16.05.2011, 19:54
Titel: Re: Speicherprobleme bei zweiter Festplatte
|
|
Hallo Lipton-Ice,
Ein Ordner mit 300.000 File ist sehr groß. Mit welchen Datei-System ist die Platte formatiert? Welches Betriebssystem benutzt Du? Ist die Platte stark fragmentiert? Ist die Platte eventuell defekt, siehe z.B. SMART-Information? Versucht der Indexing-Dienst von Windows diesen Riesen-Ordner zu indizieren? Starten alle Dateien mit fast dem Gleichen String - dann hat Windows bei jedem erzeugten File sehr hart daran zu arbeiten den 8.3-File-Namen zu erstellen. Dann würde es helfen z.B. '12345TestFile.mat' statt 'TestFile12345.mat' als Namen zu wählen.
Es hört sich nicht so an, als habe das Problem nichts mit dem Matlab-Programm zu tun.
Gruß, Jan
|
|
|
Lipton-Ice |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 16.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2011, 10:35
Titel: Hypothesen, Belege aber leider keine vernünftige Lösung
|
|
|
|
|
Guten Morgen,
vielen Dank für eure Antworten.
1. Die Fragmentierung liegt bei 0%
2. Format ist "NTFS"
3. Windows 7
4. Festplatte ist nicht defekt
Belege für (4):
Der Code funktioniert wunderbar, wenn ich den Pfad, wo Matlab die Datei speichern soll, von "d:\PhD\Experiment 2\Stimuli\Sample 1\BWsubx.mat (x=fortlaufende Nummer)" auf "d:\Sample 1\BWsubx.mat" verkürze.
5. An der Länge des Pfades an sich kann es aber auch nicht liegen
Beleg: Wenn ich den Code so ändere, dass die Dateien von Festplatte d:\ geladen werden und mit dem gleichen Pfad wie vorher auf c:\ gespeichert werden, klappt alles wunderbar.
Zusatz: Witzigerweise funkioniert das gleiche Verfahren umgekehrt nicht (also von c:\ alles laden und mit dem gleichen Pfad auf d:\ speichern)
6. Es kann auch nicht an der Festplatte (d:\) an sich liegen
Beleg: Wenn ich den Code so ändere, dass er mit dem gleichen langen Pfad von Festplatte c:\ lädt und auch dort speichert, dann tritt das Problem ebenfalls auf. Zusatz: Beschreibung wie bei Punkt 4 funktioniert hier ebenfalls
Schlussfolgerung: Es muss also irgendwas damit zu tun haben, dass der Ordner in dem die "neuen" Dateien gespeichert werden sollen ein Unterordner des Ordners ist, aus dem vorher die Dateien geladen werden (die liegen in "d:\PhD\Experiment 2\Stimuli")
Beleg: Laden von c:\ und speichern in einem Unterordner auf c:\ führt zum gleichen Problem.
Zusatz: Auch wenn die Länge der Pfade verkürzt wird tritt dasselbe Problem auf (Bsp.: laden von "d:\Stimuli\Dateiname"; speichern in "d:\Stimuli\Sample 1\Dateiname")
Einschränkung der Schlussfolgerung:
Existieren in dem Ordner in dem die Dateien gespeichert werden sollen bereits irgendwelche Dateien mit dem gleichen Namen, sodass sie nurnoch überschrieben werden müssen, tritt das Problem nicht auf.
Beleg: lasse ich folgenden Code laufen, werden 360 Dateien angelegt. Der Code um den es hier ursprünglich geht läuft dann einwandfrei und weißt keine Speicherverzögerungen auf.
Einschränkung des letzten Beleges:
Verkürze ich die Schleife von 360 auf 180 Iterationen läuft er ebenfalls einwandfrei. Eine anschließende Änderung (ohne Matlab neu zu starten) von 180 auf 360 produziert das gleiche Speicherproblem. Erst wenn Matlab beendet wird (funktioniert ausschließlich über den Taskmanager, anhalten des Codes mit STRG-C nicht möglich) lässt ihn wieder einwandfrei funktionieren.
Ehrlich gesagt kommt mir dieses Problem spanisch vor. Mir fällt keine wirkliche Möglichkeit mehr ein um das Problem weiter einzugrenzen. Were jetzt alles nochmal auf einen anderen PC kopieren und das gleiche dort nochmal versuchen. Aber selbst wenn es dort funktionieren sollte, sagt mir das leider nicht viel darüber wo das Problem auf meinem PC zu suchen ist bzw. wie es zu lösen ist.
Ich hoffe jemand hat noch eine Idee für mich
Vielen Dank nochmal bis hier
Grüße,
Lipton-Ice
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 17.05.2011, 11:55
Titel: Re: Hypothesen, Belege aber leider keine vernünftige Lösun
|
|
Hallo Lipton-Ice,
Bitte überprüfe die Festplatte mit einem Diagnose-Programm und Teste auch die Integrität des File-Systems.
Welche Matlab-Version verwendest Du?
Aus Deinem Code-Beispiel wird mir nicht klar, ob Du die erstellten Dateien zwischendruch wieder gelöscht hast. Wenn Du die Schleife von 0 bis 180 laufen läßt, werden keine Datein überschrieben. Bei 0 bis 360 wird die Hälfte der Datein aber wieder überschrieben. Macht das den Unterschied aus?
Welches Programm verbraucht die Zeit während der Verzögerungen? Matlab, der Index-Dienst, oder eine Virus-Checker?
Gruß, Jan
|
|
|
Lipton-Ice |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 16.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2011, 12:51
Titel:
|
|
|
|
|
Habe grad mit erschrecken feststellen müssen, dass der von mir gepostete Code eine ganz andere (als beschriebene) Konsequenz zur folge hat.
Habe den PC heruntergefahren und nach einiger Zeit neu gestartet.
Dann den geposteten Code ausgeführt mit n=1:180 (Schleifeniterationen).
Der Ordner in den die Dateien gespeichert werden sollten ist anfangs leer.
Lass ich nun den Code laufen werden zwar die Dateien dort ohne Probleme gespeichert, Matlab scheint danach jedoch noch irgendwas anderes zu tun.
Beleg: Im Workspace wird keine einzige Variable angezeigt, im Taskmanager wird die CPU-Nutzung von Matlab (und die Gesamtnutzung) mit 25% ausgewiesen (Quad-Prozessor), obwohl alle Dateien schon gespeichert sind. Kein anderer Prozess beansprucht die CPU.
Das Commandwindow enthält einen blinkenden Cursor für eine neue Eingabe und "Busy" wird NICHT angezeigt.
Gebe ich jetzt einfach etwas simples wie "p=1" ins Commandwindow ein wird "Busy" angezeigt und es dauert wieder 5 Minuten bis etwas passiert.
Ändere ich den Speicherort auf c:\ funktioniert es reibungslos.
Im Gegensatz zum ursprünglichen Problem werden aber die Dateien zumindest schonmal angelegt (auch mit einer Matrixgröße von 1000x1000).
Werde jetzt mal ein Diagnosetool drüberlaufen lassen.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|