Durum: Out of Memory
Ubuntu'nun Matlab Hedefindeki hataları düzeltin
Hedef: harici HDD / SSD'ye bazı sanal bellek ve / veya Takas ayırın; okuma / yazma 20 GB / sn'den 0,1 GB / sn'ye düşer, bu da sorun değil!
Terminoloji: takas ve sanal bellek burada
Hayır, takas ve sanal bellek tamamen farklıdır. Örneğin, 1GB'lık bir dosyanın bellek eşlemesi ek 1GB'lık bir sanal bellek kullanır, ancak takas kullanımında bir değişiklik olmaz. Takas, bir destek mağazasının bir şeklidir. Sanal belleğin birçok kullanımının destek deposuyla ilgisi yoktur. (Ve sanal belleğe sahip olan ve takas olmayan sistemler olduğu gibi, takas olan ancak sanal belleğe sahip olmayan sistemler de vardır.)
Tüketici donanımı sınırlıdır, bu nedenle harici HDD'lerimle daha fazla sanal bellek kullanmam ve / veya değiştirmem gerekiyor. Matlab takas belleği hakkında (sanal bellek hariç TODO mu?)
Linux Sistemleri -
mkswap
veswapon
komutlarını kullanarak takas alanınızı değiştirin .
Sistemin özellikleri
Ne kadarına sahip olduğunuzu görebilirsiniz.
swapon -s
Filename Type Size Used Priority /dev/sda3 partition 8326140 0 -1
Matlab'ın yapılandırmaları
% /programming//a/35971040/54964 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB % TODO cannot find ways how to put Matlab use /dev/sda3
Matlab'ımın bunu kullanmadığını görüyorsunuz.
Out of Memory
Matlab'da büyük matrislerle hata alıyorum .reshape
Vektörlere matris oluşturmada ve paralel kod yazmada başarısız oldum . Bu yüzden sanal belleği kullanmak istiyorum çünkü işim bitti; oran önemli değil.
pseudocode
- Bir takas oluşturan kabuk betiği, MATLAB'ı başlatın ve MATLAB çıktığında takas silin. ( MichaelHooreman )
- Harici HDD'de değiştirmeyi etkinleştir.
sudo swapon -a
Burada nasıl kullanılır ? - Matlab'ı başlatın.
- Matlab takas kullanın.
- Matlab çıktığında takas silin.
Micheal'ın komut dosyasında Geçici Değiştirme, İstemci Çalıştırma ve Takas Kapatma / Kaldırma
Durum : ortamı kurma (1), Matlab'ı (2) çalıştırma ve ortamı kapatma (3)
Komut Dosyası hatalarını denetleyemiyor
#!/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}
Transcend 25M3 1 TB ile yineleme 1 Dosya sisteminin az kullanıldığı berofe ext4
Komut dosyasını başlattıktan sonra günlükler
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
İstemciyi çalıştırma
Komut geçmişi, takas belleğindeki (bilet no. 02075943) Matlab'ın ilk başlangıcında gitti , komut geçmişinizi okurken bir sorun oluştu - - . Sadece Matlab'ınızı yeniden başlatın ve varsayılan ayarlarınız varsa sorun çözüldü. Komut varsayılan konum olanı
prefdir
verir/home/masi/.matlab/R2016a
(/home/{username}/.matlab/R2016a
./home/masi/.matlab/R2016a/matlab.prf
Yeniden başlatmadan sonra dosya var, burada .... [diğer hatalar] ...
Matlab'ı kapatma ve Terminal'de tekrar şifre yazma
[sudo] password for masi: swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016 [ bugs here! ]
Açık: Hata yakalamanın daha iyi Hata işlemesi nasıl uygulanır? Kaynaktaki örnek için komut dosyama bakın. Konu Hata yakalama ve swapoff Hata / Uyarı eğer Nasıl Yapılacak?
Kalıcı Takas = Çalışan İstemciden Takas Kurulumu Ayrı
Takas Kurulumu
# /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
Kalıcı değişiklik için aşağıdakileri sonuna ekleyin:
# /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
Linux çekirdeği: 4.6
Linux çekirdek seçenekleri: wl
Matlab: 2016a
Resmi Matlab belgeleri: "Bellek Yetersiz" Hatalarını Çözme
Harici HDD: Transcend 1 TB StoreJet 25M3 incelemesi , Transcend 2 TB StoreJet 25M3
Harici HDD dosya sistemi: ext4
Harici HDD arabelleği: 8 MB
İlgili konular: Ubuntu'da MATLAB bellek sınırlaması nasıl artırılır? (mkswap nasıl kullanılır, MATLAB için swapon?) , Matlab'da Fiziksel hafıza artışı nasıl azaltılır? , Matlab bellek yetersiz hatası nasıl giderilir? , 10800x10800 matris için Matlab bellek yetersiz hatası nasıl düzeltilir? ,Matlab r2012b'de bellek sınırını (bitişik ve genel olarak) nasıl artırabilirim? , Matlab 2009b'de Dizi Bloğu Nasıl Artırılır ve Bellek Yetersiz Hatası Nasıl Çözülür? , Matlab küçük bir değişken için bu bellek yetersiz sorunu nasıl çözülür? , Matlab'daki 'Bellek yetersiz'. Yavaş ama kalıcı bir çözüm mü?