前回は、ディスクのマウントオプションの変更によるパフォーマンスの向上について書きましたので、
今回は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に設定したパフォーマンス向上の試みはこれだけになります。
次回は、パフォーマンス向上ではなく、パフォーマンス劣化時のために対処した設定を
書きたいと思います。
大したことはやってませんが、いちいちコマンド打つのがめんどくさかったので…(^_^;)