« Willcomが1x-8x使い放題を値下げ。でも2年縛り | メイン | Ubuntu Linux 8.04はWindowsディスクにインストールできるWubiが入るらしい »

Linuxのディスクアクセスを高速化するpreloadを入れてみた

Linuxに限らずデスクトップで使用するOSの体感速度の多くはディスクアクセスの時間によって決まることが多くあります。このpreloadはよく使うファイルを動的に先にメモリに読み込んでおいて高速化してくれるものです。Windows VistaにもSuperFetchという同様な機能がありますね。果たして効果があるのかどうかUbuntuで試してみました。

インストール方法

Ubuntuでは既にリポジトリに含まれているので普通にaptで入れることが出来ます。

sudo apt-get install preload

設定

基本的にそのままの設定で普通に動作してくれますが、より細かい設定を/etc/preload.confで調整することが出来ます。詳細はファイルを読んで下さい。いじりそうなパラメータを抜粋すると以下のような感じです。

  • デーモンの動作周期
    cycle = 20 [秒]
  • プリロードする最小のプロセスサイズ。
    小さくしすぎると多くのプロセスをプリフェッチしすぎるため遅くなる。大きくしすぎると意味がないとのこと。
    minsize = 2000000
  • メモリ関係
    プリフェッチに使うメモリ総量は
    max (0, TOTAL * memtotal + FREE * memfree) + CHACHED * memcached
    で計算されます。TOTAL/FREE/CACHEDは/proc/meminfoから。
    memtotal = -10 [%]
    memfree = 100 [%]
    memcached = 30 [%]
  • 情報の自動セーブ間隔 (/var/lib/preload/preload.state)
    autosave =3600 [秒]
  • その他
    スキャンを止めたり、プリロードするファイルパターンの指定など
動作状況のモニタ
  • 20秒おきに/var/log/preload.logに動作状態がログされます。
  • 1時間おき、またはシャットダウン時に/var/lib/preload/preload.stateにキャッシュされたファイルや統計情報等が保存されます。
動作

preloadをインストールするとデーモンが常駐します。このデーモンは定期的にファイルの読み込みをチェックし、プリフェッチ、トレーニングを繰り返します。これによってどのファイルがよく利用されるかをチェックし、readaheadシステムコールで先読みしてくれます。このあたりの詳細はpreload.pdfを参照。チラ読みしたところマルコフ過程を使った予測アルゴリズムを使っているとのことです。 

感想その他

ログイン画面が待ちきれないほど急ぎの時には余り役には立たないかもしれませんし、インストール直後は全く効果がありません。が、Webブラウズなどでちょこっと使った後システムを再起動して普通にログインしてみると次回のfirefox起動等が高速になっていることがわかると思います。

Ubuntu等で使われているスタティックなファイルのリストを先読みしてくれるreadaheadと比べ、このpreloadはほとんど設定なしで動的に先読みを管理してくれるのが利点です。その分デーモンが実行されるので、少し負荷を食うかもしれません。

以前このコマンドのことをどこかで読んだときはアヤシゲで放置したのですが、今回試してみると確かに効果を感じました。まだ試していませんが、遅めのディスクではより効果があるのではないかと思います。逆に高速なディスク、例えばRAID0やSSDなんかを使用している方には恩恵は少ないと予想されます。

以前にもっとローレベルで単純な先読み機能を実装したことがあるのですが、その際には先読みをするセクタ群をソートすることで劇的な効果が得られました。このpreloadのpdfでは優先順位でソートとあるのですが、ディスク上の位置が考慮されていれば面白い(というかその辺はOSまかせな感じか)。 

diggでの議論を 読むと、ユーザにもよると思うのですが、結構効果があるようで、その割りにさほどメモリを消費しないようです。 私のシステムでも劇的にキャッシュでメモリが食われているようではなさそう。使ってみて良ければラッキーでいいかもしれません。

トラックバック

このエントリーのトラックバックURL:
http://blog.browncat.org/cgi-bin/mt/mt-tb-abc.cgi/656


この一覧は、次のエントリーを参照しています: Linuxのディスクアクセスを高速化するpreloadを入れてみた:

» 脱Windows 2日目。openSUSE 11.0を試す! 送信元 目指せ!脱Windows de Linuxな生活!!!
いやあ、今日は月曜日とは思えないほど忙しかった。 さてさて、脱Windows 2日目の今日はopenSUSEをインストールして試す。 インストーラ... [詳しくはこちら]

コメント (1)

hiro:

このサイトを発見して早速wubi
にpreloadをいれてみました。
確かに速くなりました。自分の
環境では2倍くらいの体感速度
に思えました。これを使えばwubi
でDTMも夢ではないかもしれませんね。貴重な技術提供をありがとうございました。

コメントを投稿

(お書きになったコメントはすぐには表示されません。ご了承ください。)


About

2008年02月26日 01:38に投稿されたエントリーのページです。

ひとつ前の投稿は「Willcomが1x-8x使い放題を値下げ。でも2年縛り」です。

次の投稿は「Ubuntu Linux 8.04はWindowsディスクにインストールできるWubiが入るらしい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

           

カテゴリー

Powered by
Movable Type 3.36

Twitter


最近のエントリー

デル株式会社ads

注目エントリー