FE EXAM

スラッシング(thrashing)

ページフォールトが多発し、処理よりページ入れ替えに時間が取られて性能が急低下する現象。

INTERACTIVE VISUALIZATION
CPU使用率
ページフォールト
多重度
2
CPU使用率
42%
必要量 / 枠
4/8
ページフォールト
5%
シナリオ
ステップ1 / 6
STEP 1/6多重度が低い状態多重度(=同時に実行しているプロセスの数)がまだ少ない状態です。物理メモリ(=実際のメインメモリ)には十分な空きがあり、各プロセスは必要なページ(=メモリを一定サイズに区切った単位)を主記憶に置けています。横軸が多重度、縦軸がCPU使用率(=CPUが本来の処理に使えている割合)を表します。
100%0%CPU使用率多重度 →18スラッシング域42%物理メモリ 8フレーム / 必要量 4フレーム(足りている)
悪循環のしくみ
① 多重度を上げる → ② フレーム不足 → ③ ページフォールト多発
→ ④ ページ入れ替え(補助記憶アクセス)に追われる
→ ⑤ CPU使用率が急落(スラッシング) → ②へ戻り悪化
解説

📌
スラッシングとは

ピーク急落多重度 →CPU

スラッシングとは、ページフォールト(=アクセスしたページが主記憶に無く、補助記憶から読み込み直すこと)が頻発し、本来の処理よりページの入れ替えに時間を取られて、システム全体の性能(スループット)が急激に低下する現象のことです。

身近な例で考えると、小さな机で何冊もの本を同時に広げようとする状態に似ています。机(=主記憶)が狭いので、1冊出すたびに別の本を棚(=補助記憶)にしまわねばならず、本の出し入ればかりで肝心の作業がまったく進まなくなります。

上のツールで▶ボタンを押すと、多重度(同時実行プロセス数)を上げていくと当初CPU使用率は上がるものの、ある点から急落する様子を確認できます。

⚠️
発生条件

物理メモリ(小)必要量(大)≫ 枠<

スラッシングは、必要なメモリの合計が、実際に使える物理メモリを超えてしまうときに発生します。具体的な条件は次の2つです。

同時実行プロセスが多すぎる:多重度を上げすぎると、1つの主記憶を取り合うプロセスが増えすぎます
フレームが必要量に足りない:各プロセスがすぐ使うページの集合(ワーキングセット=そのとき頻繁にアクセスするページのまとまり)に対し、割り当てられるフレーム(=主記憶上のページ1個分の枠)が不足します

どちらも要するに「メモリが足りないのに無理して多くのプロセスを走らせている」状態です。上のツールの「必要量 / 枠」の数値が枠を超えると、ページフォールトが急増します。

🛠️
対策

多重度を下げる性能が回復

スラッシングは「やりすぎ」が原因なので、対策の基本は負荷を下げるか、メモリを増やすかです。代表的な対策は次のとおりです。

多重度を下げる:一部のプロセスをスワップアウト(=まるごと補助記憶へ退避)し、残りに十分なフレームを回す
物理メモリ増設:そもそも使える枠を増やす根本的な対策
ワーキングセットモデル:各プロセスが今必要とするページ集合を見積もり、その分のフレームを確保する
ページ置換アルゴリズムの改善:次に使うページを追い出さないよう、追い出すページの選び方を賢くする

上のツールの最終ステップで、多重度を下げると性能がピーク付近まで戻る様子を確認できます。やみくもにプロセスを増やすのではなく、メモリに見合った多重度に保つことが大切です。

🔁
悪循環を段階で追う

① 多重度を上げる② フレーム不足③ ページフォールト多発④ 入替作業に時間を取られる⑤ CPU使用率が急落(スラッシング)悪化が繰り返される

スラッシングの核心は悪循環(負のスパイラル)です。一度はまると自然には抜け出せません。流れを順番に追ってみましょう。

① 多重度を上げる:もっと多くのプロセス(=処理の実行単位)を同時に動かす
② フレーム不足:各プロセスに割り当てられる主記憶の枠が減り、必要なページを置ききれなくなる
③ ページフォールト多発:枠に収まらないページが頻繁に要求され、補助記憶への読み書きが激増する
④ 入替作業に時間を取られる:補助記憶(SSDやHDDなど)へのアクセスは主記憶より何万倍も遅いため、入替だけで時間が消費される
⑤ CPU使用率が急落:CPUは処理をしたくても、ページの到着待ちで手が空いてしまう

さらに悪いのは、OSが「CPU使用率が低い→もっとプロセスを増やそう」と判断してしまい、①に戻ってさらに悪化する点です。抜け出すには外から手を入れる(多重度を下げるか、メモリを増やす)必要があります。

📦
ワーキングセットとは

時間 →121321454ワーキングセット(直近の窓内のページ集合)

ワーキングセットとは、あるプロセスが「直近の一定時間内」に参照したページのまとまりのことです。「今このプロセスが動くために最低限必要なページの集合」と考えると分かりやすいです。

なぜワーキングセットが重要か。スラッシングは「各プロセスのワーキングセットを全部合わせると、物理メモリ(全フレーム数)を超えてしまう」ときに起きます。逆に言えば、各プロセスのワーキングセット分のフレームを確保できている間は、スラッシングは起きません

ワーキングセットモデル(=ワーキングセットを使った管理方式)では、次のルールでスラッシングを防ぎます。
・各プロセスのワーキングセットの大きさ(必要フレーム数)を常に監視する
・全プロセスの必要フレーム合計が物理フレーム総数を超えそうになったら、一部のプロセスをスワップアウト(補助記憶へ退避)して多重度を下げる
・こうして「残りのプロセスが各自のワーキングセットをフレームに収められる」状態を保つ

練習問題

🎯
基本情報技術者 練習問題

Q1.スラッシングの説明として最も適切なものはどれか。
A.ページフォールトが多発し、処理よりページの入れ替えに時間が取られて性能が急低下する現象
B.プロセス全体を主記憶と補助記憶の間でまるごと入れ替える仕組み
C.CPUの処理速度が世代交代で向上する現象
D.主記憶を連続した領域に区切って割り当てる方式
Q2.スラッシングが発生する条件として正しいものはどれか。
A.物理メモリに十分な空きがあり、プロセス数が少ない
B.同時実行プロセスが多すぎて、各プロセスに必要なフレームが足りない
C.CPUの動作周波数が高すぎる
D.補助記憶の容量が大きすぎる
Q3.スラッシングの対策として適切でないものはどれか。
A.多重度を下げて一部のプロセスをスワップアウトする
B.物理メモリを増設する
C.ワーキングセットモデルで必要なフレームを確保する
D.多重度をさらに上げてプロセスを増やす

関連コンテンツ