ワーキングセット
ワーキングセットとは、物理メモリー領域の中でも、アプリケーションが現在使用している状態の領域のことである。言い換えれば、アプリケーションが使用しているメモリーでもあまり使用されていないデータをOSがハードディスクに退避(スワップ)させる際に、退避の対象とならずに物理メモリー内に留められる部分のこと。
ワーキングセットが事実上、処理の主要な対象となるので、ワーキングセットのために確保されるメモリー領域の大きさによって処理速度が左右されることにもなる。例えばメモリーがあまりに少ない環境では、各アプリケーションに割り当てることのできるワーキングセットも小さくなるので、極端な速度の低下を招くことになる。それゆえ、アプリケーションが充分な速度で処理されるためには、物理メモリーにある程度の余裕が必要になる。
ワーキングセットのサイズは、アプリケーションが扱うデータ量のほか、アクセスの集中度にも大きく左右される。一般に、特定のデータに集中的にアクセスする処理方法に比べると、データベースのサーバーなどのように多量のデータに全般的にアクセスするようなアプリケーションの方が大きいワーキングセットを必要とする。
ワーキングセット
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/05 16:17 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2023年1月) |
ワーキングセット (Working set) とは、プロセスがある時点で使用中の仮想メモリページの集合である。
ワーキングセットは大きすぎても小さすぎても問題を生じるので、そのサイズの及ぼす効果は重要である。ワーキングセットが大きすぎると同時に実行可能なプロセス数が少なくなる。小さすぎるとページフォールトが発生しやすくなる。
ページ置換アルゴリズムとワーキングセット
ページ置換アルゴリズムは従来、システムの全物理ページを対象としていた。しかし、メモリ容量の増大に伴ってそのようなアルゴリズムは効率が悪くなってきた。例えば、NRU(Not Recently Used)アルゴリズムをシステム全体で行う場合、二針時計アルゴリズムなどが使われていた。これはページの参照フラグをクリアする針と参照があったかどうかを確認する針が円形に並んだ物理ページを順次チェックしていくアルゴリズムである。二つの針を進める実装方法としては、一定間隔(例えば1秒に1回)で所定のページ数だけクリア/チェックを行うのが一般的である。しかし、メモリ容量が大きくなるにつれて、全物理ページをチェックするのに非常に長い時間がかかるようになってきた。針を進める速度を速めるとカーネルが長時間連続動作することになるため、システムの応答性が悪くなる。また、二つの針の間隔を広げると参照フラグがクリアされたままの物理ページが少なくなってしまい、これも効率が悪い。
以上のような経緯で、システム全体ではなく何らかの分割をした形でページ置換を行う必要が生じたのである。このためにワーキングセットに基づいたプロセス単位のページ置換が一般化するようになった。ワーキングセットを確定する手法としてはページ置換アルゴリズムにある各種アルゴリズムが使われている。いずれにしてもワーキングセットに基づいたページ置換は参照の局所性を根拠とするものである。
ワーキングセットモデル
ワーキングセットモデルとは、ワーキングセットを物理メモリ上に維持できているプロセスのみを実行する方式である。全プロセスのワーキングセットの合計が物理メモリ量を超えるとスラッシングが発生し、性能が低下する。これを回避するため、一部のプロセスを優先してワーキングセットを維持しつつ実行する。ワーキングセットを維持できないプロセスは、その使用中物理メモリを全て解放し、他のプロセスが利用できるようにする。ワーキングセットモデルを採用する場合、優先度の高いプロセスのワーキングセットを維持するように設定するのが一般的である。
ワーキングセット
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2016/03/08 15:27 UTC 版)
「ページ置換アルゴリズム」の記事における「ワーキングセット」の解説
詳細は「ワーキングセット」を参照 プロセスのワーキングセットは、ある期間中にそのプロセスが使うと予想されるページの集合である。 「ワーキングセットモデル」は厳密にはページ置換アルゴリズムではなく、一種の中期スケジューラである。
※この「ワーキングセット」の解説は、「ページ置換アルゴリズム」の解説の一部です。
「ワーキングセット」を含む「ページ置換アルゴリズム」の記事については、「ページ置換アルゴリズム」の概要を参照ください。
- ワーキングセットのページへのリンク