スラッシング (スラッシング) とは | 意味や読み方など丁寧でわかりやすい用語解説
スラッシング (スラッシング) の読み方
日本語表記
スラッシング (スラッシング)
英語表記
thrashing (スラッシング)
スラッシング (スラッシング) の意味や用語解説
スラッシングとは、コンピュータのオペレーティングシステムにおいて、物理メモリの容量不足が原因で、補助記憶装置との間で頻繁にデータの入れ替えが発生し、システムの処理性能が極端に低下する現象である。この状態に陥ると、コンピュータはほとんどの時間をデータの入れ替え作業に費やしてしまい、アプリケーションの実行といった本来の処理がほとんど進まなくなる。結果として、利用者はシステムの動作が極端に遅くなったり、応答がなくなったりといった事態に直面する。スラッシングは、特に複数のプログラムを同時に実行している環境や、単体で大量のメモリを消費するプログラムを実行している際に発生しやすい。この現象を理解するためには、コンピュータのメモリ管理の仕組み、特に仮想メモリの概念を把握することが不可欠である。 スラッシングのメカニズムを詳細に理解するためには、まず物理メモリと仮想メモリの関係について知る必要がある。物理メモリは、RAM(Random Access Memory)とも呼ばれ、CPUが直接アクセスできる高速な記憶装置である。プログラムやデータは、実行される際にこの物理メモリ上に配置される。しかし、物理メモリは高価であり、搭載できる容量には限りがある。そこで、オペレーティングシステムは、物理メモリの容量を超えるメモリ空間をプログラムに提供するために「仮想メモリ」という仕組みを利用する。仮想メモリは、ハードディスクやSSDといった低速だが大容量の補助記憶装置の一部を、あたかも物理メモリの一部であるかのように見せかける技術である。 この仮想メモリを実現する主要な手法が「ページング」である。ページング方式では、メモリ空間を「ページ」と呼ばれる固定長のブロックに分割して管理する。プログラムが必要とするページが物理メモリ上に存在すれば、CPUは高速にアクセスして処理を続行できる。しかし、必要なページが物理メモリ上にはなく、補助記憶装置上に存在する場合、「ページフォールト」と呼ばれる割り込みが発生する。ページフォールトが発生すると、オペレーティングシステムは処理を中断し、補助記憶装置から目的のページを物理メモリに読み込む「ページイン」という処理を行う。このとき、もし物理メモリに空き容量がなければ、現在使用頻度が低いと判断されたページを物理メモリから補助記憶装置へ書き出す「ページアウト」を行い、空き領域を確保する。この一連のページの入れ替え処理を「ページスワップ」と呼ぶ。 ページスワップは仮想メモリを実現するための正常な動作であるが、スラッシングはこのページスワップが過剰に発生することで引き起こされる。例えば、物理メモリの容量を大幅に超えるメモリを要求する複数のプログラムが同時に実行されている状況を想定する。プログラムAが処理に必要なページXを要求した際にページフォールトが発生し、OSは物理メモリ上のページYをページアウトしてページXをページインしたとする。その後、CPUの処理がプログラムBに切り替わり、今度はプログラムBが先ほどページアウトされたばかりのページYを要求すると、再びページフォールトが発生する。OSは別のページをページアウトしてページYをページインしなければならない。このように、実行中のプログラム群が必要とするページの集合(ワーキングセット)が物理メモリの容量を完全に超えてしまうと、あるプログラムのために読み込んだページが、すぐに別のプログラムによって追い出され、その追い出されたページがまたすぐに必要になる、という悪循環に陥る。この状態では、CPUはプログラム本来の処理を実行する時間よりも、低速な補助記憶装置との間でページスワップを行う時間に大半を費やすことになる。補助記憶装置へのアクセスは物理メモリへのアクセスに比べて桁違いに遅いため、システム全体の性能が著しく低下する。これがスラッシングの正体である。 スラッシングへの対策は、その原因であるメモリ不足を解消することが基本となる。最も直接的で効果的な解決策は、物理メモリを増設することである。物理的な容量を増やすことで、より多くのページをメモリ上に保持できるようになり、ページスワップの頻度を劇的に減らすことができる。物理的な増設が難しい場合には、ソフトウェア的な対策を講じる。例えば、不要なアプリケーションやバックグラウンドで動作しているサービスを停止し、同時に実行するプログラムの数を減らすことで、システム全体のメモリ使用量を抑制する。また、メモリを大量に消費するプログラム自体に問題がある場合、例えばメモリリーク(確保したメモリを解放し忘れるバグ)などが存在しないか調査し、プログラムを修正することも重要である。さらに、オペレーティングシステムのチューニングも有効な手段となり得る。同時に実行できるプロセス数を制限したり、スワップ領域のサイズや配置を最適化したりすることで、スラッシングの発生を抑制することが可能な場合がある。システムエンジニアは、システムのパフォーマンスを監視し、スラッシングの兆候を検知した際には、これらの原因を切り分け、適切な対策を講じる能力が求められる。