Ситуація: виправити Out of Memory
помилки в
цілі Matlab Ubuntu : виділити деяку віртуальну пам’ять та / або поміняти на зовнішньому HDD / SSD; зменшення читання / запису зменшилось з 20 Гбіт до 0,1 Гбіт, що нормально!
Термінологія: підкачки і віртуальна пам'ять тут
Ні, своп і віртуальна пам'ять абсолютно різні. Наприклад, для відображення пам’яті на 1 ГБ файл використовується додатковий 1 ГБ віртуальної пам’яті, але не має змін у використанні свопу. Swap - це форма підкладки магазину. Багато видів віртуальної пам'яті не мають нічого спільного з резервним магазином. (І були системи з віртуальною пам'яттю і без свопу, а також системи з свопом, але без віртуальної пам'яті.)
Споживаче обладнання є обмеженим, тому мені потрібно використовувати більше віртуальної пам'яті та / або обмінюватися своїми зовнішніми жорсткими дисками. Matlab каже про пам’ять своп (TODO виключаючи віртуальну пам'ять?)
Системи Linux - Змініть свій обмінний простір за допомогою команд
mkswap
іswapon
.
Характеристика системи
Ви можете бачити, скільки у вас є
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Конфігурації Матлаба
% /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 закінчується.
Тимчасовий обмін, запуск клієнта та закриття / видалення заміни за сценарієм Micheal
Ситуація : не вдається контролювати помилки в налаштуванні середовища (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 TB з невеликим використанням 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 в пам’яті swap (квиток № 02075943), з помилкою Виникла проблема з читанням історії вашої команди - - . Просто перезапустіть Matlab і проблема буде вирішена, якщо у вас є налаштування за замовчуванням. Команда
prefdir
дає/home/masi/.matlab/R2016a
місце розташування за замовчуванням (/home/{username}/.matlab/R2016a
. Файл/home/masi/.matlab/R2016a/matlab.prf
існує після перезавантаження, тут .... [інші помилки] ...
Закрити Matlab та знову ввести пароль у Terminal
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Відкрито: Як тут застосувати кращу помилку з помилками, пов’язаними з помилками? Дивіться приклад у джерелі для мого сценарію. Тема, як зробити помилку та заміни, якщо помилка / попередження?
Постійна заміна = Окремі налаштування заміни від запущеного клієнта
Налаштування 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
Поставте наступне в кінці /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: wl
Matlab: 2016a
Офіційні документи Matlab: Вирішіть «Поміть » Помилки
Зовнішній жорсткий диск: Transcend 1 TB StoreJet 25M3 огляд , Transcend 2 TB StoreJet 25M3
Зовнішня файлова система жорсткого диска: ext4
Зовнішній буфер жорсткого диска: 8 Мб
Пов'язані теми: Як збільшити обмеження пам'яті MATLAB в ubuntu? (як використовувати mmwp, swapon для MATLAB?) , Як зменшити збільшення фізичної пам'яті в Matlab? , Як вирішити помилку пам'яті в Matlab? , Як виправити помилку пам'яті в Matlab для матриці 10800x10800? ,Як я можу збільшити ліміт пам’яті (як суміжний, так і загальний) у Matlab r2012b? , Як збільшити блок масиву та усунути помилку пам'яті в Matlab 2009b? , Як вирішити цю проблему з пам'яті для малої змінної в Matlab? , 'Без пам'яті' в Matlab. Повільне, але постійне рішення?