Situación: corrija Out of Memory
errores en el
objetivo Matlab de Ubuntu : asigne un poco de memoria virtual y / o intercambie en HDD / SSD externo; la lectura / escritura disminuye de 20 GBps a 0.1 GBps, ¡lo cual está bien!
Terminología: intercambio y memoria virtual aquí
No, el intercambio y la memoria virtual son completamente diferentes. Por ejemplo, la asignación de memoria de un archivo de 1 GB utiliza 1 GB adicional de memoria virtual pero no cambia el uso de intercambio. Swap es una forma de tienda de respaldo. Muchos usos de la memoria virtual no tienen nada que ver con la tienda de respaldo. (Y ha habido sistemas con memoria virtual y sin intercambio, así como sistemas con intercambio pero sin memoria virtual).
El hardware del consumidor es limitado, así que necesito usar más memoria virtual y / o intercambiar con mis discos duros externos. Matlab dice acerca de la memoria de intercambio (¿TODO excluyendo la memoria virtual?)
Sistemas Linux: cambie su espacio de intercambio utilizando los comandos
mkswap
yswapon
.
Características del sistema.
Puedes ver cuánto lo tienes
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Configuraciones de Matlab
% /programming//a/35971040/54964 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB % TODO cannot find ways how to put Matlab use /dev/sda3
Entonces ves que mi Matlab no lo está usando. Recibo
Out of Memory
errores con matrices grandes en Matlab. No he tenido éxito enreshape
incorporar matrices a vectores y escribir código paralelo. Entonces quiero usar memoria virtual porque necesito hacer el trabajo; La tasa no importa.
Pseudocódigo
- Script de shell que crea un intercambio, inicia MATLAB y elimina el intercambio cuando sale de MATLAB. ( MichaelHooreman )
- Habilite el intercambio en HDD externo. ¿Cómo usarlo
sudo swapon -a
aquí? - Comience Matlab.
- Ponga a Matlab usando el intercambio.
- Eliminar intercambio cuando Matlab sale.
Intercambio temporal, ejecución de cliente y cierre / eliminación de intercambio en el script de Micheal
Situación : no se pueden controlar los errores al configurar el entorno (1), ejecutar Matlab (2) y cerrar el
script de entorno (3)
#!/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}
Iteración 1 con Transcend 25M3 1 TB con poco uso berofe donde sistema de archivos ext4
Registros después de comenzar el script
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
Ejecutando el cliente
El historial de comandos desapareció en el primer inicio de Matlab en la memoria de intercambio (ticket # 02075943), con el error Hubo un problema al leer su historial de comandos - - . Simplemente reinicie su Matlab y el problema se resolverá si tiene la configuración predeterminada. El comando
prefdir
da/home/masi/.matlab/R2016a
cuál es la ubicación predeterminada (/home/{username}/.matlab/R2016a
. El archivo/home/masi/.matlab/R2016a/matlab.prf
existe después del reinicio, aquí .... [otros errores] ...
Cerrando Matlab y escribiendo la contraseña nuevamente en la Terminal
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Abierto: Cómo aplicar la mejor gestión de errores de captura de errores aquí? Vea mi script para el ejemplo en la fuente. Enhebrar Cómo hacer Errores de captura y si swapoff error / advertencia?
De intercambio permanente = El programa de intercambio independiente del cliente en marcha
Configurar Swap
# /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
Ponga lo siguiente al final de /etc/fstab
para el cambio permanente
# /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
Sistema: Linux Ubuntu 16.04 64 bit
Kernel de Linux: 4.6
Opciones de kernel de Linux: wl
Matlab: 2016a
Documentos oficiales de Matlab: Resolver errores de "memoria
insuficiente " HDD externo: Transcend 1 TB StoreJet 25M3 revisión , Transcend 2 TB StoreJet 25M3 Sistema
de archivos HDD externo: ext4
tampón externa de disco duro: 8 MB
temas relacionados: ¿Cómo aumentar la limitación de memoria MATLAB en ubuntu? (¿Cómo usar mkswap, swapon para MATLAB?) , ¿Cómo reducir el aumento de memoria física en Matlab? , Cómo resolver error de memoria en Matlab? , Cómo arreglar error de memoria en Matlab para 10800x10800 matriz? ,¿Cómo aumento el límite de memoria (contigua y general) en Matlab r2012b? , Cómo aumentar la matriz del bloque y resolver fuera de error de memoria en Matlab 2009b? , De cómo resolver este problema de memoria Fuera de una pequeña variable en Matlab? , 'Fuera de memoria' en Matlab. Un lento pero una solución permanente?