Situasi: memperbaiki Out of Memory
kesalahan dalam
Tujuan Matlab Ubuntu : mengalokasikan beberapa memori virtual dan / atau Swap pada HDD / SSD eksternal; penurunan baca / tulis dari 20 GBps menjadi 0,1 GBps, yang ok!
Terminologi: swap dan memori virtual di sini
Tidak, swap dan memori virtual benar-benar berbeda. Misalnya, pemetaan memori file 1GB menggunakan memori virtual tambahan 1GB tetapi tidak ada perubahan dalam penggunaan swap. Swap adalah bentuk backing store. Banyak penggunaan memori virtual tidak ada hubungannya dengan backing store. (Dan telah ada sistem dengan memori virtual dan tanpa swap serta sistem dengan swap tetapi tidak ada memori virtual.)
Perangkat keras konsumen terbatas sehingga saya perlu menggunakan lebih banyak memori virtual dan / atau bertukar dengan HDD eksternal saya. Matlab mengatakan tentang memori swap (TODO tidak termasuk memori virtual?)
Sistem Linux - Ubah ruang swap Anda dengan menggunakan perintah
mkswap
danswapon
.
Karakteristik sistem
Anda dapat melihat seberapa banyak Anda memilikinya
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Konfigurasi Matlab
% /programming//a/35971040/54964 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB % TODO cannot find ways how to put Matlab use /dev/sda3
Jadi, Anda lihat bahwa Matlab saya tidak menggunakannya. Saya menerima
Out of Memory
kesalahan dengan matriks besar di Matlab. Saya tidak berhasil dalamreshape
matriks untuk vektor dan menulis kode paralel. Jadi saya ingin menggunakan memori virtual karena saya harus menyelesaikan pekerjaan; harga tidak masalah.
Kodesemu
- Skrip shell yang membuat swap, mulai MATLAB, dan hapus swap saat MATLAB keluar. ( MichaelHooreman )
- Aktifkan swap pada HDD eksternal. Bagaimana cara menggunakannya di
sudo swapon -a
sini? - Mulai Matlab.
- Masukan Matlab gunakan swap.
- Hapus swap saat Matlab keluar.
Swap Sementara, Menjalankan Klien dan Menutup / Menghapus Swap dalam skrip Micheal
Situasi : tidak dapat mengontrol kesalahan dalam mengatur lingkungan (1), menjalankan Matlab (2) dan menutup lingkungan (3)
Skrip
#!/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}
Iterasi 1 dengan Transcend 25M3 1 TB dengan sedikit penggunaan berofe di mana filesystem ext4
Log setelah memulai skrip
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
Menjalankan klien
Histori perintah hilang di permulaan pertama Matlab dalam memori swap (tiket # 02075943), dengan kesalahan Ada masalah saat membaca riwayat perintah Anda - - . Nyalakan ulang Matlab Anda dan masalah akan terpecahkan jika Anda memiliki pengaturan default. Perintah
prefdir
memberi/home/masi/.matlab/R2016a
yang merupakan lokasi default (/home/{username}/.matlab/R2016a
. File/home/masi/.matlab/R2016a/matlab.prf
ada setelah restart, di sini .... [kesalahan lain] ...
Menutup Matlab dan mengetik kata sandi lagi di Terminal
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Buka: Cara Mendaftar Penanganan Kesalahan yang Lebih Baik dari Penangkapan Kesalahan di sini? Lihat skrip saya untuk contoh di sumber. Thread Bagaimana Cara Menjebak Kesalahan dan Swapoff jika Kesalahan / Peringatan?
Swap Permanen = Pisahkan Swap Setup dari Running Client
Menyiapkan 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
Masukkan yang berikut di akhir /etc/fstab
untuk perubahan permanen
# /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
Sistem: Linux Ubuntu 16.04 64 bit
Kernel Linux: 4.6
Opsi kernel Linux: wl
Matlab: 2016a
Dokumen Matlab resmi: Menyelesaikan Kesalahan "Kehabisan Memori"
HDD Eksternal: Transcend 1 TB StoreJet 25M3 tinjauan , Transcend 2 TB StoreJet 25M3
Filesystem HDD eksternal: ext4
Buffer HDD eksternal: 8 MB
Utas terkait: Cara menambah batasan memori MATLAB di ubuntu? (bagaimana cara menggunakan mkswap, swapon untuk MATLAB?) , Bagaimana cara Mengurangi peningkatan memori fisik di Matlab? , Bagaimana Mengatasi kesalahan memori di Matlab? , Bagaimana Memperbaiki Kesalahan Memori di Matlab untuk matriks 10800x10800? ,Bagaimana cara meningkatkan batas memori (bersebelahan dan keseluruhan) di Matlab r2012b? , Cara Meningkatkan Array Block dan Mengatasi Kesalahan Memori di Matlab 2009b? , Bagaimana Mengatasi Masalah Kehabisan Memori ini untuk Variabel Kecil di Matlab? , 'Kehabisan memori' di Matlab. Solusi lambat tapi permanen?