Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,014)  
HandBrake Japanese Language Version  (2,964)  
CrystalDiskInfo  (1,714)  
Boookends  (1,269)  
CrystalDiskMark  (874)  
Tera Term  (825)  
CotEditor  (626)  
FFFTP  (593)  
えこでこツール  (532)  
10  ffdshow  (524)  
11  SMPlayer  (503)  
12  Cabos  (492)  
13  ギコナビ  (475)  
14  Rappelz Server  (471)  
15  MergeDoc  (457)  
More >>

最近ブックマークされた記事

Linuxのスワップ処理を最適化するためのヒント

2007年12月05日 11:38 Gary-Sims(2007年12月3日(月)) 1 2 3 4 5
 コンピュータのメモリ容量を超えるサイズのプログラムを実行する必要がある場合、最近のオペレーティングシステム(OS)のほとんどはスワップ処理と呼ばれる手法を用いる。これは、メモリ内データの大部分を一時的にハードディスクに格納しておき、必要なデータだけを物理メモリ空間に持ってくるというものだ。本稿では、Linuxシステムにおけるスワップ処理の効率化とスワップ処理サブシステムのパフォーマンス最適化につながるテクニックを紹介する。

 Linuxは、物理メモリの領域をページという単位に分割して処理する。スワップ処理とは、ハードディスク上にあらかじめ設定した空間(これをスワップ空間と呼ぶ)にページ単位でメモリ上のデータをコピーし、そのページのメモリ領域を解放する処理をいう。物理メモリとスワップ空間を合わせた容量が、仮想メモリとして利用可能になる。

 スワップ処理が必要になる主な理由は2つある。1つは、物理的に使えるメモリ容量以上の領域がシステムで必要になった場合に、あまり使われていないページをメモリからハードディスクに移動(スワップアウト)させ、メモリを直ちに必要とする実行中のアプリケーション(プロセス)にそのメモリ領域を与える、というカーネルでの対処を可能にするためだ。もう1つは、アプリケーションの起動時に初期化のために使用された大量のページがその後まったく使われない場合で、システムはそうしたページをスワップアウトしてメモリを解放し、その領域をほかのアプリケーション、場合によってはディスクキャッシュに割り当てることが可能になる。

 しかし、スワップ処理には1つ弱点がある。メモリに比べ、ディスクの読み書きが非常に遅いことだ。物理メモリのアクセス速度の測定がナノ秒単位で行われるのに対し、ディスクはミリ秒単位なので、ディスクへのアクセスには物理メモリの何万倍もの時間がかかっていることになる。スワップ処理の発生が増えるほど、システムの速度が低下するわけだ。同じページのスワップアウトとスワップイン(ハードディスクに移したデータを再びメモリに戻すこと)が短時間のうちに繰り返されると、過剰なスワップ処理、つまりスラッシングが起こることがある。そうした状況では、システムが空いているメモリ領域を探しつつアプリケーションの実行を続けようとするため、相当な負荷がかかる。この問題を回避するには、物理メモリを増やすしかない。

 Linuxには、スワップパーティションとスワップファイルという2つの形態のスワップ空間がある。スワップパーティションは、スワップ処理のためだけに使用されるハードディスク上の独立したセクションである。よって、それ以外のファイルをそこに置くことはできない。スワップファイルはLinuxファイルシステム上の特別なファイルで、システムファイルおよびデータファイルと同じような形で存在する。

関連トピック

最終更新:2008年02月04日 17:07