数GB分のディスクI/O使う処理は、EC2上でRAMDISKマウントして処理すれば速いよ!
先日、数百GBのファイルを処理する必要が生じたのですが、どうしてもディスクI/Oがボトルネックとなる為、AmazonEC2のm2.4xlargeインスタンスを借りました。
m2.4xlargeインスタンスだと、68.4GB(2012/9/9時点で)ものメモリを積んでおり、それをRAMDISKとしてマウントする事により、I/Oを気にする事なく高速に処理ができると考えた為です。
結果的に目的は達成できなかったのですが、やってみた感じ、数GB〜30GBぐらいまでなら高速に処理できるかなと思い、手段の一つとしてありかなと思ったのでメモとして残しておきます。
ファイルサイズがそれ以上超えるとcpとかでスワップ食って遅い。
コストとしては、
100GB超近くの転送量
47時間使用
で、約$100でした。
東京リージョンだと時間帯によってストレスなくファイル転送できます。
さすが東京都近辺にあるらしいだけあります。
Amazon Web Servieces
http://aws.amazon.com/jp/ec2/instance-types/
Amazon EC2/S3を使ってみた - まとめ (Amazon Web Services関連エントリ目次)
http://d.hatena.ne.jp/rx7/20080528/p1
※ここを見れば大抵解決します。
ec2-api-toolsでRegionを設定(固定)する
http://d.hatena.ne.jp/rx7/20100612/p1
RAMDISKをマウント
mount -t tmpfs -o size=60g tmpfs /dev/shm
以上、やークラウドってほんとに素晴らしい。
初期設定がちと面倒だけどAWSの登録から初めて30分ぐらいでもうインスタンス立ち上がる。
アドバイスくれた @kakipo 先生に感謝。