2004-07-31

_How to install and use gpg-agent ?

ssh-agentの次はgpg-agentか... こういうのって、統合できないもんなんですかね? KDEのKWalletとか、Mozillaに組み込みの記憶機能とか、 自分から見れば同じ目的としか思えないものがこうもたくさんあると、 うっとうしく感じませんか?

_MySQL Clusterを試す - クラスタ化した分散アドレス帳をつくる

結論としては、NDBの耐故障性はまだ機能していないってことか。 私としてはパフォーマンスの方が気になるので、 誰か試して欲しいのぉ。 こればかりはある程度ハードウェアが整わないと実験できないので、 自分は人柱になれそうにもありませぬ。

_ZODB の続き

とりあえず、とある顧客のある時点でのData.fsを使って、 いくらか調べてみました。 ファイルの大きさは1942154571バイト。 これはpackしてしまっているので、すごく小さくなってますが、 しばらく放って置くと、40GB超える事がよくあります。

得られたデータはこんな感じ。

トランザクションの数
338682
オブジェクトの数
5705925
オブジェクトのデータ部分の総和
1687537394バイト
オブジェクトの平均長
296バイト
トランザクション当たりの平均オブジェクト数
16.8
トランザクション当たりの平均データ量
4983バイト
ヘッダのオーバーヘッド
254617177バイト
データの全体に占める割合
86.9%

packしてしまっているので、abortされたトランザクションは全く無し、 同一oidのオブジェクトはごく僅かしか含まれていません。 この状況では明らかに差分を使う意味はありません。

次にgzipかけたらどうなるかを見てみました。 gzipはデータ部分のみで、 ヘッダやバージョン等は含まないことにしました。

圧縮したオブジェクトの大きさの総和
1135171881バイト
圧縮したオブジェクトの大きさの平均
199バイト
圧縮率
67.3%
ヘッダも含めた全体での圧縮率
71.6%
トランザクション当たりの平均データ量
3566バイト

案外データ長が短くても、gzipは圧縮率は良いことが分かります。 ちなみに、デフォルトのレベル6で圧縮してます。

これで分かるのは、圧縮なしだと、一つのトランザクションが(平均で) 4KBを越えるのに対し、圧縮ありだと、 ヘッダを含めても越えなくなるということ。 ファイルシステムが2KBや4KB単位のブロックを利用することが多いのを考慮すると、 一つのトランザクション内のオブジェクトが少ないブロック数に収まる可能性が高くなるので、 多少はパフォーマンスが上がるかもしれません。 同じトランザクションに存在するオブジェクトは関連性が高いと考えられるので、 意味があるかもしれないという訳です。

しかし、こればかりは実際にベンチマークしないとよく分かりません。 実装するのは面倒そうだなあ。 FileStorageを改造するのは簡単だと思いますが、 既存のData.fsを変換するのは大変そうです。 オブジェクトの位置関係を保持したままテストしたいのですが、 圧縮するとバイト位置が変化してしまいますからね。

[]