2010-07-26 22 views
5

ile göreceli olarak büyük verilerde R kullanıyorum ve bazı bellek sorunlarına yol açıyorum. Bu Linux'ta. Sistemdeki kullanılabilir bellekten çok daha az veri var, bu yüzden geçici ayırmayı yönetme sorunu.GC ve bellek sınırı sorunları R

Ben

  used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 2147186 114.7 3215540 171.8 2945794 157.4 
Vcells 251427223 1918.3 592488509 4520.4 592482377 4520.3 

henüz R 4GB takas ikamet bellek ve 2GB tahsis görünüyor Aşağıdaki liste olsun) (GC çalıştırdığınızda. Bunun, R'nin bellek yönetim sisteminin tahsis edeceği ve gerektiğinde GC'nin atayacağı işletim sistemi tarafından tahsis edilen bellek olduğu varsayılıyor. Bununla birlikte, R OS'nin, swap thrashing'i önlemek için 4GB'dan fazla tahsis etmesini istemediğimi söyleyelim. Her zaman ulimit olabilirdim, ama o zaman azaltılmış alan ve daha sık GCing içinde çalışmak yerine sadece çökecektir. Gc tetikleyicisi için keyfi bir maksimum belirleme ve R'nin daha fazla tahsis etmediğinden emin olmanın bir yolu var mı? Ya da bellek kullanımını yönetmek için yapabileceğim başka bir şey var mı?

cevap

3

Özetle: no. Ben sadece micromanage bellek yönetimi ve gc() olamaz bulundu. Diğer yandan, verilerinizi bellekte tutmayı deneyebilirsiniz, ancak R'nin “dışına” geçebilirsiniz. bigmemory bunu oldukça kolaylaştırır. Tabii ki, 64bit'lik bir R ve bol ram versiyonu kullanmak sorunu da ortadan kaldırabilir.

+0

'bigmemory' şeyleri diskte tutar, değil mi? – Shane

+0

Hayır, siz 'ff' yapmayı düşünebilirsiniz. –

+0

Tamam, bunu temizlemek güzel. Belgeler, "bigmemory" "bellek eşlemeli dosyaları kullanabilir" diyor. Ne zaman ve nasıl ilişkili olduğundan emin değilim. Büyükannenin içlerine hiç bakmadım ama Boost.Interprocess'i kullanıyor gibi görünüyor. – Shane

İlgili konular