I’m hungry

おもにAmazonでの衝動買いや技術的な話をぼちぼちと。

tugela cacheパフォーマンス出ない

2007-12-28 11:23:00 | ネットサービス/テクノロジ
今日は仕事納めなのでコードは触らない。予定。
で、前ちょこっと触ってた

http://meta.wikimedia.org/wiki/Tugelacache

を検証。

memcacheプロトコル(といっていいものか..)でデータのset/getが
できるんだけど、同時にberkeleyDBにも保存してくれるシロモノ。

→なにが良いかというと、

[1] データが永続化できる(プロセスが再起動orダウンしてもデータが復活できる)
[2] 全データがメモリにのるわけではない(使用するメモリ量が制御できる)

の2点。キャッシュ(最悪消えてもまあ問題ないデータ)ではあるんだけど、
全部メモリに乗せるにはキツイ、でもMySQLに格納するのはいまいち気が
乗らない(?)ケースにピッタリな希ガス。

ということでコードをダウンロード&RPMパッケージ作成&インストール。
起動してみる。

tugela -d -p 11211 -u nobody -c 1024 -m 128 -f /data/testing_tugelacache/sample.db -s 2


あとはmemcacheを扱うのと同じイメージなので
<?php
$host_array = array("localhost:11211");
$key="test_key";
$value="test_value";
$db_file="/data/testing_tugelacache/sample.db";

$memcache = new Memcache;

foreach($host_array as $current){
$tmp_array = explode(":",$current);
$current_host = $tmp_array[0];
$current_port = $tmp_array[1];

if(($memcache->addServer($current_host, $current_port))===FALSE){
echo "can't connect!!!n";
}

$memcache->set($key,$value,false,30);
$data = $memcache->get($key);
echo "memcached: ";
var_dump($data);

$db_conn = dba_open($db_file, "r", "db4") or die("Could not open the database!: $db_file");
echo "BerkeleyDB: ";
echo dba_fetch($key,$db_conn);
dba_close($db_conn);
}
?>

こんな感じで。コードが適当なのは気にしない。方向で。
memcacheばりにメモリにset/get、そしてBDBにも直接fetchしてみる。

[testing_tugelacache]$ php test.php
memcached: string(10) "test_value"
BerkeleyDB: Z_tGx_tGtest_key720test_value
[testing_tugelacache]$


BDBに入るのが若干遅れるケースもある(最大 -s で指定した秒数?)けど、いい感じに動いている様子。(あと、BDBには指定した値そのものが入っているわけではなさそう。)

で、今、数万回連続でランダムなデータをset/getしてみているのだけれども...

異常にコンテキストスイッチが多く発生してパフォーマンスが出ないのですよ。
straceして追跡中です。。。orz
Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« kwout.com(スクリーンショッ... | TOP | tugela cache(ぬれぎぬ) »
最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。

Recent Entries | ネットサービス/テクノロジ