Raspberry Pi Raspbian でメモリを圧縮(zram)して快適にしよう
私のの自宅ではRaspberry Piがいろいろな用途に使われているので、Raspberry Piの最適化は死活問題になっている
基本、自宅ファイルサーバーだったり、マインクラフトサーバだったりするわけだが、いかんせんメモリがType B+でも512MBしかないので
何とかできないものかと、あれこれやってみたのがコレ
[ zram compression ]、いわゆるメモリを圧縮して、ディスクスワップよりは早い圧縮RAMスワップを生成するもの
スクリプトは
https://github.com/mystilleef/FedoraZram
を参考にさせてもらった、Raspbianで動かない箇所とか、ステータス表示がないとかあったので
まず、起動スクリプトを書く
# vim /etc/init.d/zram
中身はこんなかんじ
#!/bin/bash ### BEGIN INIT INFO #Provides: zram #Required-Start: #Required-Stop: #Default-Start: 2 3 4 5 #Default-Stop: 0 1 6 ### END INIT INFO start() { mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching ':digit:+') modprobe zram sleep 1 #only using 50% of system memory, comment the line below to use 100% of system memory mem_total_kb=$((mem_total_kb/2)) echo $((mem_total_kb * 1024)) > /sys/block/zram0/disksize mkswap /dev/zram0 swapon -p 100 /dev/zram0 } stop() { swapoff /dev/zram0 sleep 1 rmmod zram } status() { cat /proc/swaps|grep "Filename\|zram" } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|status}" RETVAL=1 esac
書いたら、実行権限つけて
# chmod +x /etc/init.d/zram
起動してみる
# /etc/init.d/zram start
Setting up swapspace version 1, size = 224384 KiB
no label, UUID=adf1274c-4e42-4033-941d-36833483357d
こんな感じに、表示が出ればOK
一応ステータス表示で
# /etc/init.d/zram status
Filename Type Size Used Priority
/dev/zram0 partition 224384 0 100
こんな感じに見えればOK、確保されたメモリ自体は本来のサイズが使い切られるまでは使われない
メモリからあふれ始めると、メモリを圧縮し始めるという挙動
常用できそうな感じだったら
# update-rc.d zram defaults
とやって、システム起動時に動くようにしておくといいかも
ちなみに
Ubuntu 12以降だと
apt-get install zram-config
でインストールできる
Redhat系だとepelレポジトリを有効にしておけば
yum install zram
でインストールできる
なお、Androidもrootがとれれば、4.0以降でスクリプトを書けば動くので、メモリ足らない中華タブとかでは案外有効に使えるかもね