スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008.03.02

polipo のディスクキャッシュサイズ

なんだか polipo という proxy server が流行っているみたいなんで、物は試しと Mac 用 GUI がついてる Dolipo を入れてみた。読み込みも速いし、Activity Monitor で見ても CPU とメモリーの使用量も少ない。良いんじゃないかと思って2日程使ってみたら、キャッシュサイズが1.5GB超えてる!

なんてこったと思い、ディスクキャッシュを制限する設定は無いかなとマニュアルを探してみたら…

The variable maxDiskCacheEntrySize specifies the maximum size, in bytes, of an instance that is stored in the on-disk cache. If set to -1 (the default), all objects are stored in the on-disk cache,

[Disk cache - The Polipo Manual]

Polipo never removes a file in its on-disk cache, except when it finds that the instance that it represents has been superseded by a newer version.

[Purging - The Polipo Manual]

maxDiskCacheEntrySize(単位は byte )でキャッシュする単一ファイルの最大サイズは指定できるようだが、デフォルトでは制限無し。しかもファイルが更新されるまでそのままという男前な仕様。

またメーリングリストを探すとこういう記述も見つかった。

> i wondered if it's possible to limit the total size of the cache on disk.

No. Polipo doesn't maintain an index of the on-disk cache

[Email Archive: polipo-users]

どうも polipo ではキャッシュのトータルサイズを一定に制限する方法はないらしい。そりゃ容量くうわけだ。恐らく動画サイトをよく見る人は、初期設定のままで使っていると非常にすてきな事になると思われる。

ただ polipo のキャッシュを削除する方法も一応あるらしい。

polipo -x
polipo に -x オプションを付けて実行すると、アクセスされていないファイルを削除したり、でっかいファイルを truncate(いまいち意味が分からない)出来る。
$ killall -USR1 polipo
$ sleep 1
$ polipo -x
$ killall -USR2 polipo
     
なお「アクセスされていない」の期間だが32日(dolipo では7日)と長めに設定されている。diskCacheUnlinkTime で変更可能。
polipo-trimcache スクリプト
キャッシュを指定サイズ以下にしてくれる python スクリプト。
$ polipo_trimcache-0.2.py /path/to/cache/polipo 500M
こんな感じで引数にキャッシュディレクトリとサイズを指定して実行する。cron か OS X 10.4 以降なら launchd で定期的に回すのが現実的な方法だろうか。ただしそんなに速くない。
Disk quota
polipo を特定のユーザ、例えば polipo とかで実行して、そのユーザに disk quota で制限しとくという方法。OS X で disk quota をかけられるのかどうかは知らない。

うーん、どれもかったるい。設定で「キャッシュは1GB 以下ね、それ以上になったら適当に削除しといてね!」とか出来れば良いんだが。

<追記>
dolipo 1.0.7polipo_trimcache を起動時と24時間毎に実行する機能と、キャッシュするファイルの上限(maxDiskCacheEntrySize なのかな?)を設定できるようになっています。これでディスク容量に関してはそんなに心配しなくていいかも。
</追記>

まとめ

  • polipo はキャッシュを削除しない。
  • キャッシュを削除するときは polipo -x を実行
    • diskCacheUnlinkTime を小さい値にすると多分沢山削除される。
  • デフォルトではどんなでっかいファイルもキャッシュする
    • maxDiskCacheEntrySize でキャッシュするファイルサイズの上限を指定可能
    • ただし maxDiskCacheEntrySize を超えるようなストリーミング動画等で途中から再生されなくなる場合があるかも
  • 設定の変更は Polipo configuration から
  • とりあえず polipo-trimcache を定期的に実行しとくと吉
関連記事

この記事へのトラックバックURL
http://wildlifesanctuary.blog38.fc2.com/tb.php/158-81c51f0e
この記事へのトラックバック
この記事へのコメント
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。