ウィモバの日々

Windowsをモバイルする…それがウィモバ(仮)。手のひら端末が好きです

Linuxのキャッシュ領域やスワップ領域をメモリに移して高速化したりSWAPを無効化したりする

Windowsではデフォルトでメモリのスワップ領域やTEMP(一時)キャッシュ領域がHDDやSSDに設定されているけど、
Linuxでも同じようにOSをインストールした際に自動的にswap領域やキャッシュがどこかに割り当てられることがある。
物理デバイスに書き込む場合はその分だけ処理が遅くなってしまうし
SSDの場合だとWindowsと同じように、SSDへの書き換えが発生して寿命が縮まるということになってしまうので、
スワップ領域や一時キャッシュ領域をメモリに移したり、メモリに余裕があるならスワップを無効してしまおう。
これはUbuntu系ならディストリビューション関係なく定番っぽい。

まずfreeコマンドでswap領域が割り当てられているか確認する。
SwapTotalメモリが0でない場合は、どこかに割り当てられているので
cat /proc/swaps とか cat /proc/partitions でswap領域のデバイス名を確認しよう。

ちなみに、今回は割り当てられているのは /dev/zram0 だった。
調べてみると、このzramというのはメインメモリの中に高速な圧縮RAM領域を作る機能らしい。
http://linux.ikoinoba.net/index.php?UID=1330607779
物理的なディスクのパーティションに割り当てはなかったので問題なし、かな。よかった。
もし物理パーティション(HDDやSSD)に割り当てられていたら、
上記のサイトを参考にzramを作成して割り当て直したりしよう。
Debian系の場合はこちらを参考に。 http://www.nofuture.tv/diary/20140626.html

最近の高スペックなPCで動作させていてメモリがたっぷりあるならswap領域を完全に消しちゃうのもありっぽい。

#swapoff -a
上記のコマンドで一時的にswap領域を無効化できるけど、Linuxを再起動したらまたswapが自動的に復活してくるので、
#sudo leafpad /etc/rc.local とか #sudo gedit /etc/rc.local とかで
rc.localを開いて、exit 0コマンド行の前に 
#swapoff -a
の行を追加して起動時に毎回swapを無効化しよう。
もしくは、完全に消去する場合はswapoffした後にrmコマンドでデバイス自体を削除したりしよう。
 ※/etc/rc.local はLinux立ち上がり時に毎回実行されるシェル。

  • 3:一時フォルダやログフォルダをメモリ(RAMDISK)に設定

一時フォルダ(キャッシュ)やログフォルダは通常では物理ディスクにそのまま保存されるけど
tmpfsを指定してマウントすることで、メモリに割り付ける。WindowsでいうRAMディスク機能。
厳密には少し違うけどそこまで意識しなくていい。 http://itpro.nikkeibp.co.jp/article/Keyword/20080808/312545/

#sudo leafpad /etc/fstab とか #sudo gedit /etc/fstab
とかでfstabファイルを開いて、
tmpfs /var/log tmpfs defaults,noatime,size=64m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,size=64m 0 0
tmpfs /tmp tmpfs defaults,noatime,size=512m 0 0

の行を追加してログフォルダと一時フォルダをメモリ領域に割り付ける。
〜mというのは使用されるメモリの最大サイズ。指定しないとメモリが許す限り領域が使われるみたい。
ファイルに追記して、今のフォルダを削除したらリブートしよう。実際に反映されているかは
#df -h
コマンドで確認。 /tmp などの一番左のFilesystemがtmpfsになっていたらOK!
あと、ログフォルダをキャッシュに移してアプリのインストール時に警告が出る場合は /etc/rc.localを開いて、exit 0 行の前に
mkdir -p /var/log/apt
の行を追加しよう。これでLinux起動時にログフォルダが自動的に作成されて警告がでなくなるっぽい。


参考:
Eee PC 901-16GにUSBメモリベースのeeeUbuntuを導入 http://d.hatena.ne.jp/pasela/20081208/eeeUbuntu
eeeUbuntu – (2) ファイルシステム,キャッシュ http://fumi.me/2008/08/24/eeeubuntu-fs/

Linuxファイルシステムはファイルアクセス時間も保存しているので、
ファイルを読み込むだけでもアクセス時間が保存される=ディスクへの書き込みが発生する。
とはいっても普通の使い方ならそこまでの頻度ではないと思うけど、書き込み頻度を少しでも減らしたい人は設定しよう。
まずはmountコマンドを実行すると、現在のLinuxシステムがマウントしているデバイスが羅列されるので
確認しよう。たとえば
tmpfs on /tmp type tmpfs (rw,relatime)
となっていたらrelatime指定なのでファイルアクセス毎に書き込みが発生している。


Linux起動時にマウントされるデバイスを設定しているのはfstabなので、
#sudo leafpad /etc/fstab とか #sudo gedit /etc/fstab
とかでfstabファイルを開いてrealtimeの部分をnoatimeに変更しよう。
またdefaultsだけが書いてある場合もマウントコマンドで確認したとおりrealtimeに設定されているので
defaults,noatime
とカンマの後にnoatimeを追記しよう。
変更後保存して、リブートしたあとmountで確認すれば、noatimeに設定されているはず。