Hatena::ブログ(Diary)

ウィモバの日々 Twitter

2014-10-21

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

Windowsではデフォルトでメモリのスワップ領域やTEMP(一時)キャッシュ領域がHDDSSDに設定されているけど、

Linuxでも同じようにOSインストールした際に自動的にswap領域やキャッシュがどこかに割り当てられることがある。

物理デバイスに書き込む場合はその分だけ処理が遅くなってしまうし

SSDの場合だとWindowsと同じように、SSDへの書き換えが発生して寿命が縮まるということになってしまうので、

スワップ領域や一時キャッシュ領域をメモリに移したり、メモリに余裕があるならスワップを無効してしまおう。

これはUbuntu系ならディストリビューション関係なく定番っぽい。


まずfreeコマンドでswap領域が割り当てられているか確認する。

SwapTotalメモリが0でない場合は、どこかに割り当てられているので

cat /proc/swaps とか cat /proc/partitions でswap領域のデバイス名を確認しよう。

f:id:rideonshooting:20141021193954p:image:w360

ちなみに、今回は割り当てられているのは /dev/zram0 だった。

調べてみると、このzramというのはメインメモリの中に高速な圧縮RAM領域を作る機能らしい。

http://linux.ikoinoba.net/index.php?UID=1330607779

物理的なディスクのパーティションに割り当てはなかったので問題なし、かな。よかった。

もし物理パーティションHDDSSD)に割り当てられていたら、

上記のサイトを参考に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に設定されているはず。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rideonshooting/20141021/1413881187
リンク元