2015年5月6日水曜日

HP Stream 11 d012TU その後

しばらくSD Card上のLinuxをメインに使ってますが、ディスク周りで少し設定をいじりました。やっぱりスワップが始まると耐え難い重さになるので。

まずは何はともあれzram。
$ apt-get install zram-config
でインストールしてますが、そのままだとメモリの半分をCPUの数で分割したzramが作られるので、/etc/init/zram-config.conf を直接編集してメモリの1/4だけ使うように変更してます。普通に使ってる分にはデフォルトの設定が良いような気がしますが、kvmで1GBとか持ってく時には標準設定はイマイチかな、と思って。結果256MBのzramが2つ。加えて内蔵ディスクから1GB工面して低優先度の2次スワップに当ててます。けど、やっぱりディスクまでいくと重いので、潔くOOM Killerのお世話になるのが良いのかもしれません。

あと、preloadとprelinkも。
$ apt-get install preload prelink
でインストール。prelinkはChromeに使ってます。あまり知られてない気がしますが、$HOME/.local/share/applications/chrome-app-list.desktop を使うとUbuntuのUnityでもChromeのLauncherが使えます。が、そのままだとメニュー開くのに時間かかっちゃう。
$ prelink /opt/google/chrome/chrome
みたいな感じでprelinkしとくと起動がかなり早くなる。他にも頻繁につかう共有ライブラリ使いまくりな大きめのアプリならprelinkしておくと結構幸せ。

カーネル周りの設定は/etc/sysctl.confにて。
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
vm.swappiness = 20
あたりの設定を入れてます。ともかくディスク(SD Card)が遅いので、なるべくdirtyなページはこまめに吐き出すように、と。でないとメモリ足りなくてディスクキャッシュを追い出すときに固まりがち。あとswapinessは低め。zram入れてからはzramが緩衝材になってくれてるんで不要かもしれませんが、zramない状態だとディスクが常にスワップ関連のI/Oでフルフル。たぶん閾値付近で同じページが出たり入ったりな状態。

ファイルシステム周りはtmpfsを適宜導入してvm.dirty_*設定の副作用をキャンセル。
tmpfs           /var/log        tmpfs   defaults,noatime,size=16m 0      0
tmpfs           /var/tmp        tmpfs   defaults,noatime,size=16m 0      0
tmpfs           /tmp            tmpfs   defaults,noatime,size=64m 0      0
あと/なんかにもnoatimeのマウントフラグを指定しちゃってます。ファイル読むときに、あしあと付けないモードですね。ディスク不可軽減の足しに、ということで。

ベストな設定ってほどにはチューニングしてないんだけど、標準設定よりは顕著に快適になりました。

(補足)/tmpはアップデート時に大きなファイル持ってくる子が多いので、やっぱりtmpfsはやめました。あとbluetoothが動いてないことに気づいて、こいつを試してみたけどNG。最新のkernel branchでも該当チップのsubverが未対応っぽい?無理やり別ファーム読ませたりするとデバイススキャンが動くくらいにはなったけど、同時にWifiが不安定になるので無理せず諦めました。