SourceForge.JP: Open Source Software

Login Create Account Help
Search

[RSS]OpenSource Downloads

(10,577) Cabos
(1,870) 7-Zip
(1,597) Tera Term
(1,020) CrystalDiskInfo
(1,019) HandBrake Japanese Language Version
(867) ギコナビ
(738) Amateras
(653) VirtualDubMod-jp
(590) Tween - client software of Twitter
10  (476) ffdshow
11  (473) MergeDoc
12  (466) CrystalDiskMark
13  (333) WordPress Plugins/JSeries
14  (316) Gutenberg Labo
15  (305) BathyScaphe
More >>

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

Magazine 最新特集記事

大幅なスペックアップで生まれ変わった超小型Linuxサーバー「OpenBlockS 600」徹底活用

 超小型のLinuxサーバーとして有名な「OpenBlockS」に、大幅なスペックアップが施された新モデル「OpenBlockS 600」が登場した。そこでOpenBlockS 600の仕様を紹介するとともに、ルータ・ブリッジとしての利用やネットワークの管理・監視への利用など、実運用に向けての利用例やセットアップ例を解説する。

新しくなったインテル コンパイラー 11.1日本語版を使って最新環境向けビルドにチャレンジ

 ンテル コンパイラー 11.1を利用し、より高速なプログラムを作成するためのテクニックや、インテル コンパイラーで採用されているC++0xやOpenMP 3.0といった新機能を紹介する。また、インテル コンパイラーでオープンソースソフトウェアをコンパイルする試みについても紹介しよう。

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

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

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

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

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

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

Gary-Sims(2007年12月3日(月))
2008年02月04日 05:07PM 更新