Linuxクライアントを軽くする7つの方法
こんにちは。門脇です。
私の開発用PCですが、ここ最近までメモリが512MBで、
X + opera + icedove + xchat + emacs + urxvt何枚か開くだけでスワップします。
まさに、毎日がメモリの残量との戦い。
少しでも使用量を減らそうと工夫した結果をまとめてみまし た。(以下、シェルはzshを使用します。適時読み替えてください)
1・urxvtdの使用
urxvtと言えばrxvtのunicode対応版ですが、これには urxvtd と言うデーモンも付属しています。これを使えばurxvtを複数開くより効率的にメモリを使用できるので、開けば開くほどお得感が増します。
使い方はいたって簡単。
.xsessionなどでurxvtdを起動するようにするなどしてurxvtdを起動すれば準備完了。
ターミナルを開く場合には urxvtc を実行すれば、urxvtの窓が開きます。
設定はこんな感じ
.xsessionなどで
urxvtd -q -f -o
2・sshやスクリーンは軽量シェルに実行させる
私は zsh を愛用しています(使いこなしているかは別w)
補完機能や、複数行編集時などかゆい所に手が届くシェルですが、若干重い。
ssh実行中はzshで ある必要は無いので、別の軽量シェルを使います。
ここでは軽量な ash を使用してみます。
hoge 27287 0.0 0.3 7512 2780 pts/13 Rs 22:35 0:00 zsh
hoge 28164 0.0 0.0 1768 144 pts/0 Ss+ Jul29 0:00 /bin/ash -c ssh hoge@hogehoge; exec /bin/zsh
(ちなみに、これだけ消費量が違う)
# apt-get install ash
でインストールして、
.zshrcに、
alias ssh_exvample="exec /bin/ash -c 'ssh hoge@example.com; exec /bin/zsh' "
とすれば、ssh_exampleを実行した瞬間、ashに切り替わってzshは終了し、sshが終了するとzshに切り替わります。
つまり、ssh実行中は若干の節約。
さらにashの分を節約するには、
exec ssh hoge@example.com
でOKですが、こうするとsshが終了した瞬間ターミナルも終了してしまうため、突然セッションが切れた場合などにめんどくさい思いをするかもしれませんので、わざわざashを使っていたりします。
さらに節約するには、/etc/inittab の gettyをコメントアウトして、仮想コンソールの数を減らします。
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
これらで数十MBの削減になります。
3・余計なデーモンを止める
私の場合は、 lprng を止めている位です。apacheなどは別の開発サーバーに置いてあるので、あまり削減の余地はありませんでした。
その他要らなさそうなものを片っ端から切る。
4・軽量なウィンドウマネージャを使用する
KDEとかgnomeのような重量級ではなく、
fluxboxやratpoisonなどの軽い物を使う。
派手な機能はなくても、軽いものを使用。
hoge 27151 0.0 0.1 6876 1316 tty1 S Jul29 0:23 ratpoison
ratpoisonはこの程度しか使用しないので、かなり軽量。
5・ブラウザの軽量化
Firefoxは、初期状態だけならそこそこ軽いが、アドオンを追加するごとに重くなっていく。下手すると300MB越える。
その点operaならデフォルトで大抵の機能は揃っている上に軽い。さらに、できるだけメモリにキャッシュしない設定にすればなおよし。
極論を言えば、w3m・・・(ry
6・emacsなどは別のサーバーで
別に開発サーバーが用意されていれば極力そっちを使う。emacsはかなりメモリを食うので、全部開発サーバーで動かしています。
クライアントの負担はsshのセッションのみ。
7・urxvtで壁紙を使用しない
せっかく透過や画像が使えるからとか言って無駄にリソースを消費するような処理をさせない。
私の場合は・・・思いっきり表示してますけどね。
これだけ実行してみたところ、とりあえずスワップはしにくくなりました。ただ、時間が経つにつれてoperaが重くなっていくので、
たまにoperaを再起動する必要があったりします。
以上、私が実行した軽量化の方法でした。