Linuxシステムはスワップ空間がなくても動作し、十分なメモリがあれば問題は起こらない。しかし、物理メモリを使い果たしてしまうと何もできなくなってクラッシュしてしまう。よって、スワップ空間は用意しておくことが望ましい。なんといっても、ディスク領域はメモリよりも安価だ。
ここで問題になるのが、そのサイズである。以前のUNIX系OS(Sun OSやUltrix)では、物理メモリの2〜3倍のスワップ領域が必要だった。最近実装されたもの(Linuxなど)ではそこまでスワップを必要としないが、それくらいのサイズに設定することは可能だ。だいたいの目安は次のようになる。
Linuxカーネル2.6ではswappinessという新たなカーネルパラメータが追加され、管理者によるLinuxのスワップ処理の調整が可能になっている。このパラメータには0〜100の値を設定するが要するに値が大きいほどページのスワップ処理が増え、値が小さいほど多くのメモリ領域がアプリケーションによって(たとえアイドル状態であっても)確保されるということだ。カーネルメンテナのアンドリュー・モートン氏は、swappinessを100にして自らのデスクトップマシンを動作させた上でこう述べている。「肝心なのは、カーネルによるスワップ処理を減らすのはよくないという点だ。負荷の大きなアプリによって何百Mバイトものメモリが確保されたまま、マシン上で有効に活用されない状態は何としても避けたいと思うだろう。そんな領域はディスク上に追い出し、空いたメモリを有効に使うべきだ」
だが、モートン氏の考え方には、メモリ領域のスワップアウトが早すぎるとアプリケーションの応答が悪くなるというマイナス面もある。これは、(それまで使っていた)アプリケーションの画面をクリックしてもそのアプリケーションのデータが(すでにスワップアウトされて)メモリ内になければ、システムはそのデータを再びメモリに呼び戻さなければならず、その時間分の遅延が生じるからだ。
swappinessのデフォルト値は60だが、rootとして次のコマンドを実行することで、この設定を一時的に(次回リブートまで)変えることができる。
echo 50 > /proc/sys/vm/swappiness
また、変更を持続させるには「/etc/sysctl.conf」ファイル内のvm.swappinessパラメータを変更する必要がある。
スワップ空間の管理は、システム管理において欠かせない部分だ。十分に検討してうまく利用すれば、スワップ処理によって多くのメリットが得られる。とにかく、怖がらずにスワップを設定してシステムのパフォーマンスを計測し、望みどおりの結果が得られるかどうかを確認してみることだ。
Gary Simsは英国の大学でビジネス情報システムの学位を取得。10年におよぶソフトウェアエンジニアとしての活動を経て、現在はフリーランスのLinuxコンサルタント兼ライター。
Copyright © 2010 OSDN Corporation, All Rights Reserved.