2011年12月28日水曜日

Xubuntuのパフォーマンスを上げる試み(その2)

前回は、ディスクのマウントオプションの変更によるパフォーマンスの向上について書きましたので、
今回は2つ目の/tmpをRAMディスク上に配置する、という設定変更について書きます。

Linuxカーネルでは、2.6系の頃(詳細は調べてません)からtmpfsというファイルシステムを
実装できるようになっています。
これは、RAM上にファイルシステムを作成し、HDDより高速アクセスが可能なファイルを
作成できるような仕組みです。(説明は至らないところがあるかと思いますがご了承ください)
要するに、一時領域など恒久的に保存する必要がないが、システムやアプリケーションで
作成し使用するファイルを、RAM上に作成して動作を高速化できるというわけです。
詳細については、こちらのリンクをご参照ください。
(参考リンク:Linux Kernel Documentation :: filesystems : tmpfs.txt

今回はこのtmpfsファイルシステムを/tmpにマウントし、更にユーザのキャッシュ保存先も
tmpfsを使用してしまおう、という設定変更内容になります。

まずは、/tmpにtmpfsをマウントする設定から。

1.ターミナルエミュレータを起動し、rootになります。
 $ sudo su -

2.fstabをバックアップします。
 # cp -p /etc/fstab /etc/fstab.`date +%Y%m%d`

3.fstabを編集します。(エディタはお好きなエディタで。私はvi派です。)
 # vi /etc/fstab

4.以下の項目を一番下に追記します。
 tmpfs /tmp tmpfs defaults,noatime,mode=1777  0 0

5.システムを再起動します。

/tmpに関しては、システムが利用していたり、ユーザが利用していたりで強制的に
マウントすると不具合が生じる可能性がありますので、必ず再起動します。
以上です。

これで、一時領域として使用されることの多い/tmpにtmpfsがマウントされるはずです。
dfコマンドで状態を表示してみると、以下のように表示されます。

user@Lenovo:~$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda1             59595916   5226496  51342120  10% /
udev                    500856         4    500852   1% /dev
tmpfs                   507864        64    507800   1% /tmp
tmpfs                   203148       800    202348   1% /run
none                      5120         0      5120   0% /run/lock
none                    507864       584    507280   1% /run/shm
/dev/sda4            179889560  62405872 108345772  37% /home
user@Lenovo:~$ 

赤字の項目が今回追加されたマウントポイントになります。
ブロックサイズは、デフォルトではシステムに搭載されているRAMの50%になります。
ただし、使用可能なRAMの50%が完全に割り当てられてしまうわけではなく、
tmpfsがマウントされているマウントポイントの使用量によってダイナミックに割り当てられます。
この割り当て量を50%ではなく、サイズで指定することもできます。
その手順については、後述するユーザキャッシュのtmpfsへの割り当てで説明します。

それでは、次の設定変更ポイント、ユーザキャッシュをtmpfsに割り当てる設定方法になります。

1.まずは上記のfstabに以下の項目を追記します。マウントポイントのターゲットのフォルダ名は
 任意のフォルダ名に変更してください。私はuserユーザを使っているため、以下のような
 記述にしています。そして、今回のtmpfsはブロックサイズを200Mに指定しています。
 "size=200M"のエントリがそのサイズ指定の記述になります。
 tmpfs /tmp/user tmpfs defaults,noatime,size=200M,mode=1777 0   0
 ※必ず/tmpのエントリより下に追記してください。

2.システムを再起動します。再起動後、dfコマンドでマウントされているファイルシステムを
 確認します。赤文字の項目、/tmp/userにtmpfsがマウントされていることを確認します。


user@Lenovo:~$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda1             59595916   5226500  51342116  10% /
udev                    500856         4    500852   1% /dev
tmpfs                   507864        80    507784   1% /tmp
tmpfs                   203148       800    202348   1% /run
none                      5120         0      5120   0% /run/lock
none                    507864       584    507280   1% /run/shm
tmpfs                   204800      7660    197140   4% /tmp/user
/dev/sda4            179889560  62405300 108346344  37% /home
user@Lenovo:~$



3.キャッシュをtmpfsに割り当てるユーザのホームディレクトリに移動します。この時のユーザは
 rootである必要はありません。逆にrootであると後でパーミッションの変更等が発生するため
 ホームディレクトリの所有者で実施したほうが効率的です。

4.ホームディレクトリ直下の.cacheディレクトリを削除し、tmpfsをマウントしたフォルダへの
 シンボリックリンクを作成します。
 $ rm ~/.cache
 $ ln -s /tmp/user .cache

5.一度、ログアウトし再度ログインします。

以上です。
これで、ブラウザなどで利用するキャッシュデータがRAMに保存されるようになります。
現状、私は高速回線で動かしていないため、それほど高速化されたかが実感できませんが
数十Mbpsの回線速度でブラウザの動作確認をすると差が出るかもしれません。
また、その他のアプリケーションでもキャッシュを使って動作するアプリケーションの動作は
速くなる可能性はあります。

どの程度、効果があるかわかりませんが、NetBookという貧弱なハードウェアで最大限に
リソースを活用するために今回の設定を実施してみました。

これは、サーバとして運用する場合のほうがパフォーマンスの変化が見える設定かもしれませんね。
RAMを大量に積んでいる場合は、データベースサーバのキャッシュディレクトリに
tmpfsを割り当てたりすれば、よりパフォーマンスの変化が見えるかもしれません。

この設定はデスクトップに限った設定ではありませんので、応用を効かせれば色々と
活用できると思います。

とりあえず、今回Xubuntuに設定したパフォーマンス向上の試みはこれだけになります。

次回は、パフォーマンス向上ではなく、パフォーマンス劣化時のために対処した設定を
書きたいと思います。
大したことはやってませんが、いちいちコマンド打つのがめんどくさかったので…(^_^;)

0 件のコメント:

コメントを投稿