人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

memcachedをソースからインストールする際のconfigureに
--enable-64bitをつける場合と、
つけない場合では何が異なるのでしょうか。

よろしくお願いします。

●質問者: the_yakisoba
●カテゴリ:インターネット ウェブ制作
✍キーワード:memcached インストール ソース
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● zzz_1980
●20ポイント

コンパイル時、gcc の option に -m64 が付き、ポインタが64bitアドレス空間をサポートしている環境で走る memcached が

build されます。

32bit 環境では --enable-64bit をつけても無視されます。configure の中で64bit環境かどうか見てますので。

(configure のテストスクリプトより引用)

int
main ()
{
return sizeof(void*) == 8 ? 0 : 1;

 ;
 return 0;
}
◎質問者からの返答

ご回答ありがとうございます。

64bitアドレス空間をサポートすることで変化がある部分は、

memcachedがキャッシュできるメモリの上限が変わるという認識で良いでしょうか。


2 ● zzz_1980
●20ポイント

memcachedがキャッシュできるメモリの上限が変わるという認識で良いでしょうか。

上限がかわるのか下限がかわるのかはアーキテクチャ依存なので、なんともいえませんが

「キャッシュできるメモリのサイズがかわる」ということでいいのでは。

◎質問者からの返答

再度回答ありがとうございます。

一般的に言われる32bit環境で利用可能なメモリは4Gまでという上限を超え、

利用できるかと思ったのですが、

コレはまた別の話でしょうか。

具体的にいうと、

memcachedの-mの起動オプションの上限が変わるのかと思いました。


3 ● zzz_1980
●20ポイント

具体的な例としてはどこに変化があるのでしょうか。

malloc の引数が変わります。

 if (prealloc) {
 /* Allocate everything in a big chunk with malloc */
 mem_base = malloc(mem_limit);
 if (mem_base != NULL) {
 mem_current = mem_base;
 mem_avail = mem_limit;
 } else {
 fprintf(stderr, "Warning: Failed to allocate requested memory in"
 " one large chunk.\nWill allocate in smaller chunks\n");
 }
 }

起動のオプションに-Lが見当たらないのですが、

私が参照しているものとバージョンが異なるのでしょう。

◎質問者からの返答

ご回答ありがとうございます。

上記の結果、

memcachedを利用する際にはどの部分に変化が現れるのでしょうか。


4 ● zzz_1980
●20ポイント

memcachedを利用する際にはどの部分に変化が現れるのでしょうか。

memcached がデータのキャッシュに使う領域の大きさが増えます。memcached はこの領域を自前で管理して使いまわしています。

◎質問者からの返答

「memcached がデータのキャッシュに使う領域の大きさ」と、

起動時のオプションの-mで指定できる数値は異なるものを指しているのでしょうか。


5 ● zzz_1980
●20ポイント

「memcached がデータのキャッシュに使う領域の大きさ」と、

起動時のオプションの-mで指定できる数値は異なるものを指しているのでしょうか。

データをキャッシュするたびに malloc を呼んでメモリを確保していては処理が重くなるため、

初期化の際に -m で指定されたサイズのメモリをまとめて確保し、memcached 独自の手法にて

このメモリを使いまわしています。

確保したメモリすべてがデータのキャッシュに使われるわけではなくキャッシュの管理にも使われています。

というわけで、-m の指定のメモリがすべてデータキャッシュに使われるわけではない、ということです。

◎質問者からの返答

たびたびありがとうございます。

C言語は余りわからないのですが、

malloc の引数の元を少し見てみたところ、

memcached.cの-mオプションの引数が渡るようでした。

 case 'm':
 settings.maxbytes = ((size_t)atoi(optarg)) * 1024 * 1024;

つまりは、

このsettings.maxbytesが、

結果として4G以上のメモリを確保できるという認識でよいのでしょうか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ