Situation: Out of Memory
Fehler in Ubuntus Matlab beheben
Ziel: Etwas virtuellen Speicher zuweisen und / oder auf externe Festplatte / SSD tauschen; die Lese- / Schreibgeschwindigkeit sinkt von 20 GB / s auf 0,1 GB / s, was in Ordnung ist!
Terminologie: Swap und virtueller Speicher hier
Nein, Swap und virtueller Speicher sind völlig unterschiedlich. Beispielsweise werden für die Speicherzuordnung einer 1-GB-Datei zusätzliche 1 GB virtueller Speicher benötigt, die Verwendung von Swap ändert sich jedoch nicht. Swap ist eine Art Backing Store. Viele Verwendungen des virtuellen Speichers haben nichts mit dem Sichern des Speichers zu tun. (Und es gab Systeme mit virtuellem Speicher und keinem Swap sowie Systeme mit Swap, aber keinem virtuellen Speicher.)
Consumer-Hardware ist begrenzt, sodass ich mehr virtuellen Speicher verwenden und / oder mit meinen externen Festplatten austauschen muss. Matlab sagt über den Swap-Speicher (TODO ohne virtuellen Speicher?)
Linux-Systeme - Ändern Sie Ihren Swap Space mit den Befehlen
mkswap
undswapon
.
Eigenschaften des Systems
Sie können sehen, wie viel Sie davon haben
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Matlab's Konfigurationen
% /programming//a/35971040/54964 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB % TODO cannot find ways how to put Matlab use /dev/sda3
Sie sehen also, dass mein Matlab es nicht verwendet. Ich erhalte
Out of Memory
in Matlab Fehler mit großen Matrizen. Es ist mir nichtreshape
gelungen, Matrizen für Vektoren zu erstellen und parallelen Code zu schreiben. Ich möchte also virtuellen Speicher verwenden, weil ich die Arbeit erledigen muss. die rate spielt keine rolle.
Pseudocode
- Shell-Skript, das einen Swap erstellt, MATLAB startet und den Swap löscht, wenn MATLAB beendet wird. ( MichaelHooreman )
- Swap auf externer Festplatte aktivieren. Wie man
sudo swapon -a
hier benutzt? - Starten Sie Matlab.
- Setze Matlab mit dem Swap ein.
- Swap löschen, wenn Matlab beendet wird.
Temporärer Swap, Client ausführen und Swap in Micheals Skript schließen / entfernen
Situation : kann keinen Fehler steuert in die Umgebung der Einrichtung (1), läuft Matlab (2) und Schließen die Umwelt (3)
Script
#!/usr/bin/env bash
# /programming//a/69808/54964
set -e
# TODO How to do swapoff if any error?
SWAP_FILE="/media/masi/SamiSwapVirtual/.swap_file_20.7.2016"
SIZE_MB=16000
TO_RUN="matlab"
dd if="/dev/zero" of=${SWAP_FILE} bs="1M" count=${SIZE_MB} status="progress"
mkswap ${SWAP_FILE}
chmod 0600 ${SWAP_FILE}
sudo chown 0.0 ${SWAP_FILE} # /unix//a/297153/16920
sudo swapon -v ${SWAP_FILE}
echo "Swap enabled. Press enter to continue"; read
${TO_RUN}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v ${SWAP_FILE}
rm -vf ${SWAP_FILE}
Iteration 1 mit Transcend 25M3 1 TB mit wenig Gebrauch über wo Dateisystem ext4
Protokolliert nach dem Start des Skripts
sh start_matlab_with_swap.sh 16000+0 records in 16000+0 records out 16777216000 bytes (17 GB, 16 GiB) copied, 134.489 s, 125 MB/s Setting up swapspace version 1, size = 15.6 GiB (16777211904 bytes) no label, UUID=48c2835b-4499-4534-aa49-0648e15bd5d9 [sudo] password for masi: swapon /media/masi/SamiWeek/tmp/swap_file_18.7.2016 swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: insecure file owner 1000, 0 (root) suggested. swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: found swap signature: version 1d, page-size 4, same byte order swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: pagesize=4096, swapsize=16777216000, devsize=16777216000 Swap enabled. Press enter to continue start_matlab_with_swap.sh: 11: read: arg count
Client ausführen
Befehlsverlauf beim ersten Start von Matlab im Auslagerungsspeicher (Ticket-Nr. 02075943) mit dem Fehler Beim Lesen des Befehlsverlaufs ist ein Problem aufgetreten. - - . Starten Sie einfach Ihr Matlab neu und das Problem ist behoben, wenn Sie Standardeinstellungen haben. Befehl
prefdir
gibt an,/home/masi/.matlab/R2016a
welches der Standardspeicherort ist (/home/{username}/.matlab/R2016a
. Datei/home/masi/.matlab/R2016a/matlab.prf
existiert nach dem Neustart, hier .... [andere Fehler] ...
Matlab schließen und Passwort erneut in Terminal eingeben
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Öffnen: Wie wende ich hier die bessere Fehlerbehandlung für die Fehlerbehebung an? Siehe mein Skript für das Beispiel in der Quelle. Thread Wie mache ich Fehlerbehebung und Swapoff wenn Fehler / Warnung?
Permanenter Swap = Separate Swap-Einrichtung vom laufenden Client
Swap einrichten
# /unix//q/297767/16920
masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile
masi@masi:~$ sudo mkswap /mnt/.swapfile
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72
masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.
masi@masi:~$ sudo chmod 600 /mnt/.swapfile
masi@masi:~$ free -m
total used free shared buff/cache available
Mem: 7925 1494 175 196 6255 5892
Swap: 28610 0 28610
Setzen Sie am Ende von /etc/fstab
für die dauerhafte Änderung Folgendes ein
# /unix//a/298212/16920
# /unix//a/298543/16920
# If swap is on SSD, trim blocks each time at startup.
#/mnt/.swapfile none swap defaults,discard 0 0
# If swap on External HDD, just use sw.
/media/masi/SamiWeek/.swapfile none swap sw 0 0
System: Linux Ubuntu 16.04 64-Bit-
Linux-Kernel: 4.6
Linux-Kernel-Optionen: wl
Matlab: 2016a
Offizielle Matlab-Dokumente : Beheben von Fehlern aufgrund von Speichermangel
Externe Festplatte: Transcend 1 TB StoreJet 25M3- Test , Transcend 2 TB StoreJet 25M3
Externes HDD-Dateisystem: ext4
Externer Festplattenpuffer: 8 MB
Verwandte Themen: Wie kann die MATLAB-Speicherbeschränkung in Ubuntu erhöht werden? (wie benutzt man mkswap, swapon für MATLAB?) , Wie kann man die Zunahme des physischen Speichers in Matlab reduzieren? , Wie kann ein Speicherfehler in Matlab behoben werden? , Wie man aus Gedächtnisstörung in Matlab für Matrix 10800x10800 heraus regelt? ,Wie erhöhe ich das Speicherlimit (sowohl zusammenhängend als auch insgesamt) in Matlab r2012b? , Wie kann der Array-Block erhöht und ein Speicherfehler in Matlab 2009b behoben werden? , Wie behebt man dieses Problem mit zu wenig Arbeitsspeicher für eine kleine Variable in Matlab? , 'Nicht genügend Speicher' in Matlab. Eine langsame, aber dauerhafte Lösung?