2011-02-16
Cache::FastMmapと仮想メモリ
FastCGIの全プロセスでデータを共有したくて、Cache::FastMmapを使ってみた。
共有のshare fileを使う。
package MyApp::API::Cache; use Cache::FastMmap; my $fastMmap = Cache::FastMmap->new( share_file => '/tmp/sharefile-myapp-fastmmap', );
みたいな形。
これによりサーバー、プロセスのメモリ/仮想メモリ使用量がどう変わるかのイメージが以下:
使用前
top - 09:53:59 ... : Mem: 2097284k total, 251180k used, 1846104k free, ... Swap: 1052248k total, 47064k used, 1005184k free, ... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 26136 key_amb 17 0 92485 99m 7452 S 0.0 4.9 0:03.25 index.fcgi :
Cache::FastMmap 使用後
top - 09:53:59 ... : Mem: 2097284k total, 232180k used, 1846104k free, ... Swap: 1052248k total, 85064k used, 967184k free, ... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 26136 key_amb 17 0 130m 80m 7452 S 0.0 4.0 0:03.25 index.fcgi :
以下、まとめ:
- プロセスでメモリに持っていたデータを仮想メモリ領域にマッピングすることで、プロセスごとのメモリ使用量は減り、仮想メモリの使用量が増える。
- サーバ全体としては、データ量×プロセス数分のメモリ使用量が減り、データ量分の仮想メモリ使用量が増える。
問題点
- Cache::FastMmap::newはファイル新規作成時に排他制御しないらしく、上のMyApp::API::Cacheを複数プロセスで同時にuseするとエラーになることがあった。その対処はまた別の記事で。
参考
コメントを書く
トラックバック - http://d.hatena.ne.jp/key_amb/20110216/1297818015
リンク元
- 30 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP408JP408&q=Cygwin+分割
- 25 http://search.yahoo.co.jp/search?p=iPhone4+メール受信不良&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 12 http://www.google.co.jp/search?hl=&q=Cache::FastMmap&sourceid=navclient-ff&rlz=1B3GGGL_jaJP280JP281&ie=UTF-8
- 12 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=管理者+windows7+特定のプログラム&btnG=検索&aq=f&aqi=&aql=&oq=
- 12 http://www.google.co.jp/search?q=iphone4+メール+フリーズ&hl=ja&biw=1347&bih=609&sa=2
- 11 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=tortoise+SVN+"connection+closed+unexpectedly"&btnG=検索&aq=f&aqi=&aql=&oq=
- 8 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=トータスsvn+パスワード+何回も&num=50
- 7 http://search.yahoo.co.jp/search?p=iphone4 メール 受信&rs=6&aq=-1&ei=UTF-8&fr=top_ga1_sa
- 7 http://www.google.co.jp/search?hl=ja&lr=&q=eclipse++"はこのコンテキストにバインドされていません"&aq=f&aq
- 7 http://www.google.co.jp/search?hl=ja&rls=com.microsoft:ja-JP:IE-SearchBox&rlz=1I7GGLG_ja&q=struts2+inject+.properties&aq=f&aqi=&aql=&oq=
