Ситуация: исправьте Out of Memory
ошибки в Ubuntu Matlab
Цель: выделить немного виртуальной памяти и / или поменять местами на внешнем жестком диске / SSD; Снижение скорости чтения / записи с 20 Гбит / с до 0,1 Гбит / с, и это нормально!
Терминология: своп и виртуальная память здесь
Нет, своп и виртуальная память совершенно разные. Например, при отображении памяти в файле объемом 1 ГБ используется 1 ГБ виртуальной памяти, но при этом не происходит никаких изменений в использовании подкачки. Своп - это форма бэк-магазина. Многие виды использования виртуальной памяти не имеют ничего общего с резервным хранилищем. (И были системы с виртуальной памятью и без подкачки, а также системы с подкачкой, но без виртуальной памяти.)
Потребительское оборудование ограничено, поэтому мне нужно использовать больше виртуальной памяти и / или менять местами внешние жесткие диски. Matlab говорит о подкачке памяти (за исключением TODO виртуальной памяти?)
Linux Systems - Изменение пространства подкачки, используя
mkswap
иswapon
команды.
Характеристики системы
Вы можете увидеть, сколько у вас есть по
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Конфигурации Matlab
% /programming//a/35971040/54964 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB % TODO cannot find ways how to put Matlab use /dev/sda3
Итак, вы видите, что мой Matlab не использует его. Я получаю
Out of Memory
ошибки с большими матрицами в Matlab. Мне не удалось найтиreshape
матрицы для векторов и написать параллельный код. Поэтому я хочу использовать виртуальную память, потому что мне нужно выполнить работу; скорость не имеет значения.
ПСЕВДОКОД
- Сценарий оболочки, который создает своп, запускает MATLAB и удаляет своп при выходе из MATLAB. ( MichaelHooreman )
- Включить обмен на внешнем жестком диске. Как использовать
sudo swapon -a
здесь? - Запустите Matlab.
- Положите Matlab использовать своп.
- Удалить своп, когда выходит Matlab.
Временный обмен, запуск клиента и закрытие / удаление обмена в скрипте Майкла
Ситуация : невозможно контролировать ошибки при настройке среды (1), запуске Matlab (2) и закрытии среды (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}
Итерация 1 с Transcend 25M3 1 ТБ с небольшим использованием berofe, где файловая система ext4
Логи после запуска скрипта
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
Запуск клиента
История команд исчезла при первом запуске Matlab в памяти подкачки (тикет # 02075943), с ошибкой При чтении истории команд возникла проблема - - . Просто перезапустите ваш Matlab, и проблема будет решена, если у вас есть настройки по умолчанию. Команда
prefdir
дает/home/masi/.matlab/R2016a
расположение по умолчанию (/home/{username}/.matlab/R2016a
. Файл/home/masi/.matlab/R2016a/matlab.prf
существует после перезагрузки, здесь .... [другие ошибки] ...
Закрытие Matlab и повторный ввод пароля в Терминале
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Открыть: Как применить здесь лучшую обработку ошибок для перехвата ошибок? Смотрите мой скрипт для примера в источнике. Тема Как сделать ошибок захвата и Swapoff если ошибки / предупреждения?
Постоянный своп = отдельная настройка свопинга от запущенного клиента
Настройка свопа
# /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
Поместите следующее в конце /etc/fstab
для постоянного изменения
# /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
Система: Linux Ubuntu 16,04 64 бит
Linux ядра: 4,6
Linux ядра опции: з.д.
Matlab: 2016a
Официальный Matlab документы: Resolve "из памяти" Ошибки
Внешний HDD: Transcend 1 TB StoreJet 25м3 обзор , Transcend 2 StoreJet TB 25м3
Внешние HDD Файловая система: ext4
Внешний буфер жесткого диска: 8 МБ
Связанные темы: Как увеличить ограничение памяти MATLAB в Ubuntu? (как использовать mkswap, swapon для MATLAB?) , Как уменьшить увеличение физической памяти в Matlab? , Как решить из ошибки памяти в Matlab? , Как исправить Из ошибки памяти в Matlab для 10800x10800 матрицы? ,Как увеличить предел памяти (как смежный, так и общий) в Matlab r2012b? , Как увеличить массив блок и устранить Из Ошибки памяти в Matlab 2009b? , Как решить это из выпуска памяти для малого переменной в Matlab? , «Из памяти» в Matlab. Медленное, но постоянное решение?