//このページが表示される方は、URLから「action=SOURCE&」を削除してみてください [[R備忘録 - 記事一覧]] !!!64ビットLinux機で2Gバイト以上のメモリを使う *投稿者: ひな *カテゴリ: なし *優先度: 普通 *状態: 完了 *日時: 2008年12月08日 19時47分41秒 //{{bugstate}} !!内容 *Rで2Gバイト以上のメモリを使えないと出来ないような、分析が発生した. **何か工夫をすれば出来るのかも知れないが、そんなマシンがあったもので・・・ *同僚の隠しサーバー!?にAthlon64でメモリが8Gバイト乗っているLinuxマシンがあったので聞いてみたら、1プロセスで2Gバイト以上使えるはずとのこと. **32ビット機のLinuxだと普通は1プロセス2Gまで? *ということで、Rをインストールさせてもらって、その大きなデータを扱う分析が出来るかどうか、トライしてみた. **分析は出来たけどここではメモリが確保できるかどうかをレポーティング !!!Rをインストールするマシンの情報 $ uname -a Linux zzz 2.6.15-1.1833_FC4smp #1 SMP Wed Mar 1 23:55:52 EST 2006 x86_64 x86_64 x86_64 GNU/Linux $ free total used free shared buffers cached Mem: 7172508 5679844 1492664 0 37056 5275572 -/+ buffers/cache: 367216 6805292 Swap: 0 0 0 *7Gしかないように見えるが、OSで認識できるのが7Gとのこと(同僚談).つまり7Gです. *ちなみに、スワップさせないようにスワップ領域をはずしてます(同僚談). !!!Rをインストール *Rのインストールがメインではないのでかなりはしょる tar xvf R-2.8.0.tar.gz ./configure make LANG=C LC_ALL=C make check (root権限になって) make install (以上) !!!まずはいつも使っているLinux機(32ビット)で > a <- matrix(0, 1024*1024) > is.double(a) [1] TRUE > a <- matrix(0, 1024*1024*1024) 以下にエラーmatrix(0, 1024 * 1024 * 1024) : 長さ 1073741824 のベクトルを割り当てることができません > a <- matrix(0, 1024*1024*100) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 233772 6.3 467875 12.5 350000 9.4 Vcells 104960845 800.8 117212752 894.3 106009876 808.8 > a <- matrix(0, 1024*1024*200) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 233772 6.3 467875 12.5 350000 9.4 Vcells 209818445 1600.8 330655019 2522.7 314676070 2400.8 > a <- matrix(0, 1024*1024*300) エラー:サイズ 2457600 Kb のベクトルを割り当てることができません *この状態での「ps」コマンド PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 14716 0.4 39.9 1667532 1655964 pts/33 S+ 08:19 0:09 /usr/local/lib/R/bin/exec/R --no-save --no-restore *VSZ・RSSとも約1.6Gバイトを使ってます. !!!Athlon64マシンで > a <- matrix(0, 1024*1024) > is.double(a) [1] TRUE > a <- matrix(0, 1024*1024*1024) エラー: サイズ 8.0 Gb のベクトルを割り当てることができません *↑OSで7Gしか認識できていないのであたりまえか・・・ > a <- matrix(0, 1024*1024*100) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105851 5.7 350000 18.7 350000 18.7 Vcells 104977007 801.0 117230573 894.4 106025977 809.0 > a <- matrix(0, 1024*1024*200) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105851 5.7 350000 18.7 350000 18.7 Vcells 209834607 1601.0 330671985 2522.9 314692228 2401.0 > a <- matrix(0, 1024*1024*300) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105851 5.7 350000 18.7 350000 18.7 Vcells 314692207 2401.0 550872945 4202.9 524407428 4001.0 > a <- matrix(0, 1024*1024*400) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105851 5.7 350000 18.7 350000 18.7 Vcells 419549807 3201.0 771073905 5882.9 734122628 5601.0 > a <- matrix(0, 1024*1024*500) エラー: サイズ 3.9 Gb のベクトルを割り当てることができません *↑3.9G以上使えないわけではなくて、前の変数で3.2Gほど使っているので *↓なのでいったん「a」を削除してから > rm(list="a") > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105986 5.7 350000 18.7 350000 18.7 Vcells 119431 1.0 616859124 4706.3 734122628 5601.0 > a <- matrix(0, 1024*1024*500) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105990 5.7 350000 18.7 350000 18.7 Vcells 524407432 4001.0 647782080 4942.2 734122628 5601.0 *↑成功 > rm(list="a") > a <- matrix(0, 1024*1024*600) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105990 5.7 350000 18.7 350000 18.7 Vcells 629265032 4801.0 714343743 5450.1 734122628 5601.0 > rm(list="a") > a <- matrix(0, 1024*1024*700) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105990 5.7 350000 18.7 350000 18.7 Vcells 734122632 5601.0 809707597 6177.6 734122628 5601.0 > rm(list="a") > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105986 5.7 350000 18.7 350000 18.7 Vcells 119431 1.0 647766077 4942.1 734122784 5601.0 > a <- matrix(0, 1024*1024*800) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105990 5.7 350000 18.7 350000 18.7 Vcells 838980232 6401.0 925313130 7059.6 838980252 6401.0 > rm(list="a") > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105986 5.7 350000 18.7 350000 18.7 Vcells 119431 1.0 740250504 5647.7 838980384 6401.0 > a <- matrix(0, 1024*1024*900) エラー: サイズ 7.0 Gb のベクトルを割り当てることができません *↓「ps」コマンドでメモリ使用状況を見るために「a <- matrix(0, 1024*1024*800)」でメモリを消費 > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105993 5.7 350000 18.7 350000 18.7 Vcells 119458 1.0 592200403 4518.2 838980384 6401.0 > a <- matrix(0, 1024*1024*800) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 105990 5.7 350000 18.7 350000 18.7 Vcells 838980232 6401.0 925313130 7059.6 838980384 6401.0 *↑↓約6.6Gを使用 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND admin 13337 28.0 91.7 6647288 6579812 pts/6 S+ 08:59 2:55 /usr/local/lib64/R/bin/exec/R !!コメント *[4G乗ってるWindows機でvmware playerを使ってお手軽に?確認する|http://phoenixx.sakura.ne.jp/R/wiki.cgi?page=BugTrack%2D%A3%D2%C8%F7%CB%BA%CF%BF%2F17] - ひな (2008年12月09日 09時19分02秒) //{{comment}}