(57)【要約】【課題】並列に実行可能な複数のプロセスによるメモリ使用を効率化する。【解決手段】処理部１１は、プロセッサ１１ａ，１１ｂ，１１ｃを含む。メモリ１２は、並列に実行可能なプロセス１４ａ，１４ｂ，１４ｃに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶する。ストレージ装置１３は、メモリ１２に記憶されていないページのデータを退避する。処理部１１は、プロセス１４ａ，１４ｂ，１４ｃについて単位時間に使用されたページの量を示すワーキングセットサイズ１５ａ，１５ｂ，１５ｃを取得する。処理部１１は、ワーキングセットサイズ１５ａ，１５ｂ，１５ｃの合計が閾値を超える場合、一部のプロセス１４ｃを選択して選択したプロセス１４ｃを所定時間停止させる。処理部１１は、停止中のプロセス１４ｃに対応するページのデータがメモリ１２からストレージ装置１３に退避されるよう制御する。【選択図】図１
2019040343.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを含む処理部と、
前記複数のプロセッサを用いて並列に実行可能な複数のプロセスに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶するメモリと、
前記メモリに記憶されていないページのデータを退避するストレージ装置とを有し、
前記処理部は、前記複数のプロセスそれぞれについて単位時間に使用されたページの量を示すワーキングセットサイズを取得し、前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、停止中のプロセスに対応するページのデータが前記メモリから前記ストレージ装置に退避されるよう制御する、
情報処理装置。
【請求項２】
前記処理部は、前記所定時間毎に停止するプロセスの選択を繰り返し行い、
前記停止するプロセスの選択では、前記複数のプロセスそれぞれの連続停止時間を取得し、前記連続停止時間が基準値を超えるプロセスの選択の優先度を下げる、
請求項１記載の情報処理装置。
【請求項３】
前記処理部は、停止するプロセスの候補それぞれについて、当該停止するプロセス以外のプロセスのワーキングセットサイズを合計した使用サイズを算出し、
前記一部のプロセスの選択では、前記停止するプロセスの候補のうち前記使用サイズが前記閾値を超えない範囲で前記使用サイズが大きい候補の選択の優先度を上げる、
請求項１記載の情報処理装置。
【請求項４】
前記一部のプロセスの選択では、前記複数のプロセスのうち実行中のプロセスであってワーキングセットサイズが大きいプロセスの選択の優先度を下げる、
請求項１記載の情報処理装置。
【請求項５】
前記処理部は、前記複数のプロセスのワーキングセットサイズの変化を監視し、
前記一部のプロセスの選択では、前記複数のプロセスのうちワーキングセットサイズの減少量が大きいプロセスの選択の優先度を上げる、
請求項１記載の情報処理装置。
【請求項６】
前記閾値は、前記メモリの記憶容量または前記記憶容量に応じて決定される値である、
請求項１記載の情報処理装置。
【請求項７】
コンピュータが実行するプロセス管理方法であって、
前記コンピュータが有する複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれについて、当該プロセスに割り当てられたアドレス空間に含まれるページのうち単位時間に使用されたページの量を示すワーキングセットサイズを取得し、
前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、
停止中のプロセスに対応するページのデータが、前記コンピュータが有するメモリから前記コンピュータが有するストレージ装置に退避されるよう制御する、
プロセス管理方法。
【請求項８】
コンピュータに、
前記コンピュータが有する複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれについて、当該プロセスに割り当てられたアドレス空間に含まれるページのうち単位時間に使用されたページの量を示すワーキングセットサイズを取得し、
前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、
停止中のプロセスに対応するページのデータが、前記コンピュータが有するメモリから前記コンピュータが有するストレージ装置に退避されるよう制御する、
処理を実行させるプロセス管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、プロセス管理方法およびプロセス管理プログラムに関する。
【背景技術】
【０００２】
ＲＡＭ（Random Access Memory）などの主記憶としてのメモリとＨＤＤ（Hard Disk Drive）などの補助記憶としてのストレージ装置とを有する情報処理装置では、メモリの限られた記憶領域を活用する方法として仮想記憶を使用することが多い。仮想記憶では、ＣＰＵ（Central Processing Unit）などのプロセッサが実行するプロセスに対して、物理的な記憶領域よりも大きな仮想的なアドレス空間を割り当てる。仮想記憶では、アドレス空間を固定長のページに分割して管理するページング方式が用いられることが多い。
【０００３】
実行中のプロセスについては、アドレス空間に含まれる複数のページのうちの一部のページがメモリに配置され、残りのページがストレージ装置に配置されることがある。プロセスが使用しようとする所望のページがメモリに配置されていない場合にはページフォールトが発生する。ページフォールトが発生すると、メモリに配置された一部のページをストレージ装置に退避するページアウトが行われ、ページアウトによって生じたメモリの空き領域に所望のページをストレージ装置から復元するページインが行われる。
【０００４】
ページアウトさせるページを選択するページ置換アルゴリズムでは、各プロセスのワーキングセットを考慮することがある。ワーキングセットは、あるプロセスに割り当てられたアドレス空間の中で当該プロセスによって単位時間に使用されたページの集合であり、最近使用されたページの集合や使用中のページの集合などと言うことができる。プロセスが広範囲のデータを使用するときはワーキングセットサイズが大きくなり、プロセスが狭い範囲のデータを繰り返し使用するときはワーキングセットサイズが小さくなる。ページ置換アルゴリズムは、短期的には同じページが反復使用されやすいという局所性から、ワーキングセットに属さないページを優先的にページアウトさせることがある。
【０００５】
なお、各プロセスのワーキングセットを判定する周期であるウィンドウサイズを、メモリの空き領域が多いときは長くし、メモリの空き領域が少ないときは短くする主記憶制御システムが提案されている。また、ページサイズを変更した場合に各プロセスのメモリ割当量がどの様に変化するかを調査するメモリ割当量調査システムが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭５９−２０７４７９号公報
【特許文献２】特開平２−５３１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、情報処理装置は複数のＣＰＵや複数のＣＰＵコアなどの複数のプロセッサを有することが多くなり、複数のプロセスを同時に実行することが可能となっている。同時に実行可能な複数のプロセスが存在する場合、情報処理装置が有する複数のプロセッサを活用して、できる限り並列度を上げるようスケジューリングを行うことが多い。
【０００８】
しかし、プロセッサの数に合わせて並列に実行するプロセスを増やすと、複数のプロセッサから共有されるメモリの記憶領域が不足し、ページアウトとページインが頻繁に繰り返されるスラッシングが発生することがある。よって、メモリアクセスがボトルネックとなって、かえってプロセスの実行効率が低下するおそれがある。
【０００９】
１つの側面では、本発明は、並列に実行可能な複数のプロセスによるメモリ使用を効率化する情報処理装置、プロセス管理方法およびプロセス管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、複数のプロセッサを含む処理部と、複数のプロセッサを用いて並列に実行可能な複数のプロセスに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶するメモリと、メモリに記憶されていないページのデータを退避するストレージ装置とを有する情報処理装置が提供される。処理部は、複数のプロセスそれぞれについて単位時間に使用されたページの量を示すワーキングセットサイズを取得し、複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、複数のプロセスのうち一部のプロセスを選択して選択したプロセスを所定時間停止させ、停止中のプロセスに対応するページのデータがメモリからストレージ装置に退避されるよう制御する。
【００１１】
また、１つの態様では、コンピュータが実行するプロセス管理方法が提供される。また、１つの態様では、コンピュータに実行させるプロセス管理プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、並列に実行可能な複数のプロセスによるメモリ使用が効率化される。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理装置を説明する図である。
【図２】第２の実施の形態の情報処理装置のハードウェア例を示す図である。
【図３】情報処理装置の機能例を示すブロック図である。
【図４】第２の実施の形態のプロセス情報テーブルの例を示す図である。
【図５】各プロセスのワーキングセットサイズの変化例を示す図である。
【図６】第１の並列実行のＲＡＭ使用例を示す図である。
【図７】第２の並列実行のＲＡＭ使用例を示す図である。
【図８】スケジューリングの手順例を示すフローチャートである。
【図９】第２の実施の形態のプロセス選択の手順例を示すフローチャートである。
【図１０】第３の並列実行のＲＡＭ使用例を示す図である。
【図１１】科学技術計算におけるＲＡＭ使用量の変化例を示す図である。
【図１２】第３の実施の形態のプロセス情報テーブルの例を示す図である。
【図１３】第３の実施の形態のプロセス選択の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１５】
図１は、第１の実施の形態の情報処理装置を説明する図である。
第１の実施の形態の情報処理装置１０は、複数のプロセッサを用いて複数のプロセスを同時に実行することができるコンピュータである。情報処理装置１０は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
【００１６】
情報処理装置１０は、処理部１１、メモリ１２およびストレージ装置１３を有する。処理部１１は、プロセッサ１１ａ，１１ｂ，１１ｃを含む複数のプロセッサを有する。複数のプロセッサは、例えば、複数のＣＰＵまたは複数のＣＰＵコアである。ただし、処理部１１は、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などの他の電子回路を含んでもよい。メモリ１２は、処理部１１が有する複数のプロセッサから使用される共有メモリであり、主記憶装置として使用され得る。メモリ１２は、例えば、ＲＡＭなどの揮発性の半導体メモリである。ストレージ装置１３は、メモリ１２とは異なる記憶装置であり、補助記憶装置として使用され得る。ストレージ装置１３は、例えば、ＨＤＤやＳＳＤ（Solid State Drive）などの不揮発性のストレージ装置である。
【００１７】
情報処理装置１０では、プロセス１４ａ，１４ｂ，１４ｃを含む複数のプロセスが起動されている。複数のプロセスは、処理部１１が有する複数のプロセッサを用いて並列に実行することが可能である。例えば、プロセスの並列度を優先させる場合、プロセッサ１１ａがプロセス１４ａを実行し、プロセッサ１１ｂがプロセス１４ｂを実行し、プロセッサ１１ｃがプロセス１４ｃを実行することで、プロセス１４ａ，１４ｂ，１４ｃを同時実行することができる。プロセス１４ａ，１４ｂ，１４ｃそれぞれには、仮想的なアドレス空間が割り当てられる。アドレス空間は固定長のページに分割されている。すなわち、メモリ管理について仮想記憶およびページング方式が採用されている。
【００１８】
メモリ１２は、プロセス１４ａ，１４ｂ，１４ｃに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶する。ストレージ装置１３は、メモリ１２に記憶されていないページのデータを記憶する。メモリ１２とストレージ装置１３との間ではページの入れ替えが行われ得る。あるプロセスが実行中であり当該プロセスが使用しようとするページがメモリ１２に存在しない場合、ページフォールトが発生する。すると、メモリ１２上の何れかのページのデータをストレージ装置１３に退避するページアウトと、所望のページのデータをメモリ１２に読み込むページインが行われる。
【００１９】
ただし、停止中のプロセスのページはメモリ１２に配置されていなくてもよく、停止中のプロセスの全ページをストレージ装置１３に退避しておくことも可能である。あるプロセスを実行状態から停止状態に切り替えた場合、その時点でメモリ１２に配置されている当該プロセスのページ全てをストレージ装置１３に退避させるスワップアウトを行ってもよい。また、あるプロセスを停止状態から実行状態に切り替えた場合、スワップアウトされた当該プロセスのページをメモリ１２に復元するスワップインを行ってもよい。
【００２０】
処理部１１は、メモリ１２を効率的に使用できるように以下のようなプロセス管理を行う。以下のプロセス管理は、処理部１１が有する何れかのプロセッサを用いて実行されてもよく、ＯＳに含まれるプロセススケジューラにより実行されてもよい。
【００２１】
処理部１１は、並列に実行可能な複数のプロセスそれぞれについてワーキングセットサイズを取得する。ワーキングセットサイズは、直近の単位時間に使用されたページの量を示す。例えば、処理部１１は、プロセス１４ａに対応するワーキングセットサイズ１５ａと、プロセス１４ｂに対応するワーキングセットサイズ１５ｂと、プロセス１４ｃに対応するワーキングセットサイズ１５ｃを取得する。複数のプロセスそれぞれのワーキングセットサイズは、例えば、ＯＳに含まれるプロセス管理部から取得できる。
【００２２】
処理部１１は、複数のプロセスのワーキングセットサイズを合計した合計ワーキングセットサイズを算出する。例えば、処理部１１は、プロセス１４ａ，１４ｂ，１４ｃに対応するワーキングセットサイズ１５ａ，１５ｂ，１５ｃを合計する。処理部１１は、合計ワーキングセットサイズが閾値を超えない場合、全てのプロセスを同時に実行することを許容する。一方、処理部１１は、合計ワーキングセットサイズが閾値を超える場合、一部のプロセスを選択して当該選択したプロセスを所定時間停止させる。閾値は、メモリ１２の記憶容量に基づいて決定されてもよい。例えば、閾値をメモリ１２の記憶容量とすることや、閾値をメモリ１２の記憶容量の１１０％とすることなどが考えられる。
【００２３】
上記のように、停止中のプロセスのページは再実行されるまでストレージ装置１３に退避しておくことができる。例えば、停止するプロセスとしてプロセス１４ｃが選択され、メモリ１２に存在するプロセス１４ｃのページがストレージ装置１３に退避される。並列に実行されるプロセスの数は、処理部１１が有するプロセッサの数より少なくてもよい。
【００２４】
処理部１１は、停止するプロセスの選択を所定時間毎に繰り返し行ってもよい。また、処理部１１は、実行するプロセスの合計ワーキングセットサイズが閾値を超えないように、停止するプロセスを選択してもよい。また、処理部１１は、実行するプロセスの合計ワーキングセットサイズが閾値に近くなるように、停止するプロセスを選択してもよい。また、処理部１１は、スワップアウトするプロセスのワーキングセットサイズが小さくなるように、停止するプロセスを選択してもよい。また、処理部１１は、各プロセスのワーキングセットサイズの変化を監視し、ワーキングセットサイズが減少したプロセスを優先的に停止させてもよい。また、処理部１１は、特定のプロセスの連続停止時間が過大にならないように、停止するプロセスを選択してもよい。
【００２５】
第１の実施の形態の情報処理装置１０によれば、複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれのワーキングセットサイズが取得され、合計ワーキングセットサイズが算出される。合計ワーキングセットサイズが閾値を超える場合、一部のプロセスが選択されて当該選択されたプロセスが所定時間停止される。
【００２６】
情報処理装置１０が有するプロセッサの数に応じてプロセスの同時実行数を最大まで上げてしまうと、メモリ１２の記憶領域が不足してメモリアクセスが非効率になることがある。特に、実行中のプロセスのワーキングセットサイズの合計が一定水準を超えると、ページアウトとページインが頻繁に繰り返されるスラッシングの発生が急激に増える。これに対し、第１の実施の形態の情報処理装置１０では、メモリ１２の記憶領域が不足しているときは、プロセスの同時実行数を減らすことでスラッシングの発生が抑制され、メモリアクセスが効率化される。これにより、並列に実行可能な複数のプロセスが全て終了するまでのトータルの実行時間を短縮できる。また、メモリ１２の記憶領域が不足していないときは、全てのプロセッサを活用してプロセスの同時実行数を増やすことができ、ワーキングセットサイズの変化に応じて並列度を柔軟に変更することができる。
【００２７】
なお、第１の実施の形態の情報処理装置１０は、科学技術計算のようなバッチ処理に特に有用である。バッチ処理では、ユーザとリアルタイムで対話することは求められておらず、最終結果が出力される前の途中状態は問題とならない。バッチ処理では、起動から終了までの経過時間を短縮できればよいため、実行途中での一時停止や実行順序の入れ替えなどによってプロセスの実行効率を改善することが可能となる。
【００２８】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理装置のハードウェア例を示す図である。
【００２９】
第２の実施の形態の情報処理装置１００は、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄ、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。なお、ＣＰＵ１０１ａ，１０ｂ，１０１ｃは、第１の実施の形態のプロセッサ１１ａ，１１ｂ，１１ｃに対応する。ＲＡＭ１０２は、第１の実施の形態のメモリ１２に対応する。ＨＤＤ１０３は、第１の実施の形態のストレージ装置１３に対応する。
【００３０】
ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄは、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄは、同一または異なるプログラムから起動される複数のプロセスを並列に実行することができる。複数のプロセスを並列に実行するにあたり、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄはＲＡＭ１０２を共有する。なお、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄは、同一パッケージ内のＣＰＵコアであってもよい。
【００３１】
ＲＡＭ１０２は、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄが実行するプログラムやＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄが演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３２】
ＨＤＤ１０３は、ＯＳやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性のストレージ装置である。なお、情報処理装置１００は、フラッシュメモリやＳＳＤなどの他の種類のストレージ装置を備えてもよく、複数の不揮発性のストレージ装置を備えてもよい。
【００３３】
画像信号処理部１０４は、情報処理装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００３４】
入力信号処理部１０５は、情報処理装置１００に接続された入力デバイス１１２から入力信号を受け付ける。入力デバイス１１２としては、マウス、タッチパネル、タッチパッド、トラックボール、キーボード、リモートコントローラなどを用いることができる。また、情報処理装置１００に複数の種類の入力デバイスが接続されてもよい。
【００３５】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体に格納する。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００３６】
通信インタフェース１０７は、ネットワーク１１４を介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース１０７は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【００３７】
ところで、情報処理装置１００は、ＲＡＭ１０２の記憶領域の管理に仮想記憶およびページング方式を用いる。ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄが実行可能なプロセスそれぞれに対して仮想的なアドレス空間が割り当てられ、各プロセスのアドレス空間が固定長のページに分割される。複数のプロセスのアドレス空間の合計は、ＲＡＭ１０２の記憶容量を超えてもよい。主記憶装置であるＲＡＭ１０２に配置することができないページについては、補助記憶装置であるＨＤＤ１０３に退避される。
【００３８】
ＲＡＭ１０２とＨＤＤ１０３との間では、ページの入れ替えが適宜行われる。何れかのＣＰＵで実行中のプロセスについては少なくとも一部のページがＲＡＭ１０２に配置される。実行中のプロセスが使用しようとするページがＲＡＭ１０２に存在しないページフォールトが発生すると、ＲＡＭ１０２に配置された何れかのページをＨＤＤ１０３に退避するページアウトが行われる。そして、ページアウトによって生じた空き領域を用いて、ＨＤＤ１０３からＲＡＭ１０２に所望のページを復元するページインが行われる。
【００３９】
また、停止中のプロセスについては全てのページをＨＤＤ１０３に退避しておくことができる。実行状態から停止状態に切り替えるプロセスについては、その時点でＲＡＭ１０２に配置されている全てのページをＨＤＤ１０３に退避するスワップアウトが行われる。その後に停止状態から実行状態に切り替えるプロセスについては、スワップアウトしたページをＨＤＤ１０３からＲＡＭ１０２に復元するスワップインが行われる。
【００４０】
また、ページの入れ替えでは、各プロセスのワーキングセットが考慮される。ワーキングセットは、直近の所定時間に当該プロセスによって使用されたページの集合である。以下では、ワーキングセットの大きさをワーキングセットサイズと言うことがあり、複数のプロセスのワーキングセットサイズの合計を合計ワーキングセットサイズと言うことがある。ワーキングセットサイズは、プロセスによって異なることがあり、同じプロセスであっても時間の経過に伴って変化することがある。実行中のプロセスについては、短期的には同じページが反復して使用されやすいという局所性から、ワーキングセットに属するページがページアウトされずにＲＡＭ１０２に残っていることが好ましい。
【００４１】
情報処理装置１００は、ＲＡＭ１０２とＨＤＤ１０３との間のページの入れ替えを抑制してＲＡＭ１０２を効率的に使用できるように、実行すべきプロセス（実行対象プロセス）と停止すべきプロセス（スワップ対象プロセス）を継続的に判定する。
【００４２】
図３は、情報処理装置の機能例を示すブロック図である。
情報処理装置１００は、スケジューリング制御部１２１、プロセス制御部１２２、スワップ制御部１２３、プロセス管理部１２４、メモリ使用効率最適化部１２５および制御情報記憶部１２６を有する。スケジューリング制御部１２１、プロセス制御部１２２、スワップ制御部１２３、プロセス管理部１２４およびメモリ使用効率最適化部１２５は、例えば、プログラムモジュールを用いて実装される。制御情報記憶部１２６は、例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域を用いて実装される。
【００４３】
なお、スケジューリング制御部１２１、プロセス制御部１２２、スワップ制御部１２３、プロセス管理部１２４およびメモリ使用効率最適化部１２５は、ＯＳ内のスケジューラとして実装してもよい。ＯＳ内のスケジューラは、例えば、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄの何れかのＣＰＵを用いて実行される。
【００４４】
スケジューリング制御部１２１は、所定時間毎にメモリ使用効率最適化部１２５に、次のスワップ対象プロセスを問い合わせる。スケジューリング制御部１２１は、現在実行中のプロセスと現在停止中のプロセスを特定し、メモリ使用効率最適化部１２５からの回答に基づいて、次の実行対象プロセスと次のスワップ対象プロセスを特定する。
【００４５】
そして、スケジューリング制御部１２１は、実行状態から停止状態に移行するプロセスを特定し、プロセス制御部１２２に当該プロセスの停止を指示し、スワップ制御部１２３に当該プロセスのスワップアウトを指示する。また、スケジューリング制御部１２１は、停止状態から実行状態に移行するプロセスを特定し、スワップ制御部１２３に当該プロセスのスワップインを指示し、プロセス制御部１２２に当該プロセスの再開を指示する。
【００４６】
プロセス制御部１２２は、スケジューリング制御部１２１からの指示に応じて、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃ，１０１ｄが実行するプロセスを切り替える。プロセス制御部１２２は、あるプロセスの停止が指示されると、当該プロセスの実行情報をＲＡＭ１０２上で退避する。実行情報の退避は、当該プロセスを実行するＣＰＵ内のプログラムカウンタなどのレジスタ情報をＲＡＭ１０２に退避することを含み得る。また、プロセス制御部１２２は、あるプロセスの再開が指示されると、当該プロセスの実行情報をＲＡＭ１０２上で復元して何れかのＣＰＵに当該プロセスを実行させる。実行情報の復元は、当該プロセスを実行すべきＣＰＵにレジスタ情報をロードすることを含み得る。
【００４７】
スワップ制御部１２３は、スケジューリング制御部１２１からの指示に応じて、ＲＡＭ１０２とＨＤＤ１０３との間のスワップ処理を行う。スワップ制御部１２３は、あるプロセスのスワップアウトが指示されると、ＲＡＭ１０２に配置されたページのうち当該プロセスに対応する全てのページのデータをＨＤＤ１０３に移動する。また、スワップ制御部１２３は、あるプロセスのスワップインが指示されると、スワップアウトで退避された当該プロセスのデータをＨＤＤ１０３からＲＡＭ１０２に読み出して復元する。
【００４８】
プロセス管理部１２４は、情報処理装置１００で起動されてまだ終了していないプロセスの状態を管理する。プロセス管理部１２４は、プロセスを識別するプロセスＩＤ、プロセスの状態（実行状態または停止状態）、連続停止時間を示すスワップ時間、ワーキングセットなどを管理する。プロセス管理部１２４は、メモリ使用効率最適化部１２５からの問い合わせに応じて、プロセスＩＤ、状態、スワップ時間、ワーキングセットサイズなどのプロセス情報をメモリ使用効率最適化部１２５に回答する。
【００４９】
メモリ使用効率最適化部１２５は、スケジューリング制御部１２１から問い合わせを受けると、プロセス管理部１２４からプロセス情報を取得する。そして、メモリ使用効率最適化部１２５は、取得したプロセス情報に基づいて、次の所定時間に停止状態にしておくべきプロセスであるスワップ対象プロセスを決定し、決定したスワップ対象プロセスをスケジューリング制御部１２１に回答する。なお、第２の実施の形態ではメモリ使用効率最適化部１２５は、スワップ対象プロセスをスケジューリング制御部１２１に通知しているが、実行対象プロセスをスケジューリング制御部１２１に通知するようにしてもよい。
【００５０】
制御情報記憶部１２６は、メモリ使用効率最適化部１２５がスワップ対象プロセスを決定する過程で使用する制御情報を記憶する。
図４は、第２の実施の形態のプロセス情報テーブルの例を示す図である。
【００５１】
プロセス情報テーブル１２７は、上記の制御情報記憶部１２６に記憶される。プロセス情報テーブル１２７は、プロセス管理部１２４からメモリ使用効率最適化部１２５に提供されたプロセス情報を記憶する。プロセス情報テーブル１２７は、プロセスＩＤ、状態、スワップ時間およびワーキングセットの項目を有する。
【００５２】
プロセスＩＤの項目には、プロセスの識別子が登録される。状態の項目には、実行状態を示す「ＲＵＮ」または停止状態を示す「ＳＷＡＰ」が登録される。スワップ時間の項目には、プロセスが連続で停止状態（ＳＷＡＰ状態）にある時間が登録される。ワーキングセットの項目には、プロセスのワーキングセットサイズが登録される。
【００５３】
次に、プロセススケジューリングの問題点について説明する。
図５は、各プロセスのワーキングセットサイズの変化例を示す図である。
ここでは、プロセスＡ，Ｂ，Ｃの３つのプロセスが同時に起動された場合を考える。ＣＰＵ１０１ａ，１０１ｂ，１０１ｃを活用すれば、これら３つのプロセスを並列に実行することも可能である。例えば、ＣＰＵ１０１ａがプロセスＡを実行し、ＣＰＵ１０１ｂがプロセスＢを実行し、ＣＰＵ１０１ｃがプロセスＣを実行することも可能である。ただし、ＲＡＭ１０２は３つのプロセスで共有されることになる。
【００５４】
プロセスＡ，Ｂ，Ｃをそれぞれ単独で実行した場合、プロセスＡ，Ｂ，Ｃは何れも所定の時間幅Δｔをもつ期間Ｔ１〜Ｔ１０を通じて終了する。期間Ｔｉは、時刻（ｉ−１）×Δｔから時刻ｉ×Δｔまでの期間を表す。以下では、プロセスＡのｉ番目の期間のワーキングセットサイズをＡｉと表記し、プロセスＢのｉ番目の期間のワーキングセットサイズをＢｉと表記し、プロセスＣのｉ番目の期間のワーキングセットサイズをＣｉと表記する。なお、ワーキングセットを特定する単位時間であるウィンドウサイズと期間Ｔ１〜Ｔ１０の時間幅Δｔとは同じでもよいし異なってもよい。
【００５５】
グラフ１３１は、プロセスＡのワーキングセットサイズの変化を表す。Ａ１＝６ＧｉＢ、Ａ２＝６ＧｉＢ、Ａ３＝５ＧｉＢ、Ａ４＝５ＧｉＢ、Ａ５＝２ＧｉＢ、Ａ６＝２ＧｉＢ、Ａ７＝２ＧｉＢ、Ａ８＝３ＧｉＢ、Ａ９＝４ＧｉＢ、Ａ１０＝１ＧｉＢである。
【００５６】
グラフ１３２は、プロセスＢのワーキングセットサイズの変化を表す。Ｂ１＝１ＧｉＢ、Ｂ２＝１ＧｉＢ、Ｂ３＝１ＧｉＢ、Ｂ４＝４ＧｉＢ、Ｂ５＝７ＧｉＢ、Ｂ６＝７ＧｉＢ、Ｂ７＝９ＧｉＢ、Ｂ８＝２ＧｉＢ、Ｂ９＝２ＧｉＢ、Ｂ１０＝２ＧｉＢである。
【００５７】
グラフ１３３は、プロセスＣのワーキングセットサイズの変化を表す。Ｃ１＝３ＧｉＢ、Ｃ２＝５ＧｉＢ、Ｃ３＝５ＧｉＢ、Ｃ４＝５ＧｉＢ、Ｃ５＝９ＧｉＢ、Ｃ６＝８ＧｉＢ、Ｃ７＝１ＧｉＢ、Ｃ８＝１ＧｉＢ、Ｃ９＝１ＧｉＢ、Ｃ１０＝１ＧｉＢである。なお、１ＧｉＢ（ギビバイト）は１×２３０バイトである。
【００５８】
図６は、第１の並列実行のＲＡＭ使用例を示す図である。
ここでは、ＣＰＵ１０１ａ，１０１ｂ，１０１ｃを用いて上記のプロセスＡ，Ｂ，Ｃを同時に実行する場合を考える。また、ＲＡＭ１０２の物理的な記憶容量が１０ＧｉＢであるとする。この場合、プロセスＡ，Ｂ，Ｃのワーキングセットサイズを合計した合計ワーキングセットサイズの変化は、グラフ１３４のようになる。
【００５９】
１番目の期間の合計ワーキングセットサイズはＡ１＋Ｂ１＋Ｃ１＝１０ＧｉＢである。２番目の期間の合計ワーキングセットサイズはＡ２＋Ｂ２＋Ｃ２＝１２ＧｉＢである。３番目の期間の合計ワーキングセットサイズはＡ３＋Ｂ３＋Ｃ３＝１１ＧｉＢである。４番目の期間の合計ワーキングセットサイズはＡ４＋Ｂ４＋Ｃ４＝１４ＧｉＢである。５番目の期間の合計ワーキングセットサイズはＡ５＋Ｂ５＋Ｃ５＝１８ＧｉＢである。
【００６０】
６番目の期間の合計ワーキングセットサイズはＡ６＋Ｂ６＋Ｃ６＝１７ＧｉＢである。７番目の期間の合計ワーキングセットサイズはＡ７＋Ｂ７＋Ｃ７＝１２ＧｉＢである。８番目の期間の合計ワーキングセットサイズはＡ８＋Ｂ８＋Ｃ８＝６ＧｉＢである。９番目の期間の合計ワーキングセットサイズはＡ９＋Ｂ９＋Ｃ９＝７ＧｉＢである。１０番目の期間の合計ワーキングセットサイズはＡ１０＋Ｂ１０＋Ｃ１０＝４ＧｉＢである。
【００６１】
上記のように、２番目の期間から７番目の期間では、合計ワーキングセットサイズがＲＡＭ１０２の物理的な記憶容量を超えている。このため、プロセスＡ，Ｂ，Ｃのワーキングセット全体をＲＡＭ１０２に維持することができず、ページフォールトの発生頻度が増えてしまう。よって、ページアウトとページインを繰り返すスラッシングが発生してＨＤＤ１０３へのアクセスが増加し、実質的なメモリアクセス速度が低下してしまう。
【００６２】
この場合、プロセスＡ，Ｂ，Ｃは３個のＣＰＵを用いて同時に実行されるものの、メモリアクセスの遅延によって、各プロセスを単独で実行した場合の実行時間１０×Δｔよりも顕著に長い実行時間を要することになる。すなわち、ＲＡＭ１０２の記憶容量が少ない場合、同時実行プロセス数を最大まで上げてしまうと実行時間が長くなることがある。
【００６３】
図７は、第２の並列実行のＲＡＭ使用例を示す図である。
ここでは、ラウンドロビン方式によりプロセスＡ，Ｂ，Ｃのうちの１つのプロセスを交代で停止させ、同時実行プロセス数を２個に制限する場合を考える。１番目の期間ではプロセスＡ，Ｂを実行させてプロセスＣを停止させる。２番目の期間ではプロセスＢ，Ｃを実行させてプロセスＡを停止させる。３番目の期間ではプロセスＡ，Ｃを実行させてプロセスＢを停止させる。以降、全てのプロセスが終了するまでこれを繰り返す。この場合、合計ワーキングセットサイズの変化はグラフ１３５のようになる。
【００６４】
１番目の期間の合計ワーキングセットサイズはＡ１＋Ｂ１＝７ＧｉＢである。２番目の期間の合計ワーキングセットサイズはＢ２＋Ｃ１＝４ＧｉＢであり、このときのスワップアウト量はＡ１＝６ＧｉＢである。３番目の期間の合計ワーキングセットサイズはＡ２＋Ｃ２＝１１ＧｉＢ、スワップアウト量はＢ２＝１ＧｉＢである。４番目の期間の合計ワーキングセットサイズはＡ３＋Ｂ３＝６ＧｉＢ、スワップアウト量はＣ２＝５ＧｉＢである。５番目の期間の合計ワーキングセットサイズはＢ４＋Ｃ３＝９ＧｉＢ、スワップアウト量はＡ３＝５ＧｉＢである。
【００６５】
６番目の期間の合計ワーキングセットサイズはＡ４＋Ｃ４＝１０ＧｉＢ、スワップアウト量はＢ４＝４ＧｉＢである。７番目の期間の合計ワーキングセットサイズはＡ５＋Ｂ５＝９ＧｉＢ、スワップアウト量はＣ４＝５ＧｉＢである。８番目の期間の合計ワーキングセットサイズはＢ６＋Ｃ５＝１６ＧｉＢ、スワップアウト量はＡ５＝２ＧｉＢである。９番目の期間の合計ワーキングセットサイズはＡ６＋Ｃ６＝１０ＧｉＢ、スワップアウト量はＢ６＝７ＧｉＢである。１０番目の期間の合計ワーキングセットサイズはＡ７＋Ｂ７＝１１ＧｉＢ、スワップアウト量はＣ６＝８ＧｉＢである。
【００６６】
１１番目の期間の合計ワーキングセットサイズはＢ８＋Ｃ７＝３ＧｉＢ、スワップアウト量はＡ７＝２ＧｉＢである。１２番目の期間の合計ワーキングセットサイズはＡ８＋Ｃ８＝４ＧｉＢ、スワップアウト量はＢ８＝２ＧｉＢである。１３番目の期間の合計ワーキングセットサイズはＡ９＋Ｂ９＝６ＧｉＢ、スワップアウト量はＣ８＝１ＧｉＢである。１４番目の期間の合計ワーキングセットサイズはＢ１０＋Ｃ９＝３ＧｉＢ、スワップアウト量はＡ９＝４ＧｉＢである。１５番目の期間の合計ワーキングセットサイズはＡ１０＋Ｃ１０＝２ＧｉＢである。
【００６７】
このように、ラウンドロビン方式により同時実行プロセス数を機械的に２個に制限しても、合計ワーキングセットサイズがＲＡＭ１０２の記憶容量を大きく超えてしまうことがあり、依然としてスラッシングが発生し得る。一方で、合計ワーキングセットサイズがＲＡＭ１０２の記憶容量を大きく下回っても、同時実行プロセス数が２個のままであり、ＲＡＭ１０２の空き領域が大きくなってしまうことがある。また、各プロセスは機械的に３回に１回スワップ対象プロセスになるため、スワップアウト量が大きくなってＨＤＤ１０３へのアクセスが増加し、スワップ処理の負荷が高くなる。
【００６８】
そこで、第２の実施の形態の情報処理装置１００は、各プロセスの直近のワーキングセットサイズに基づいて、一部のプロセスを停止させるか否かを動的に判定する。また、情報処理装置１００は、一部のプロセスを停止させる場合、メモリを効率的に使用できるように適切なプロセスをスワップ対象プロセスとして選択する。スワップ対象プロセスの選択にあたっては、ＲＡＭ１０２の空き領域が少なくなること、スワップアウト量が少なくなること、連続停止時間が極端に長いプロセスを生じさせないことなどが考慮される。
【００６９】
次に、情報処理装置１００の処理手順について説明する。
図８は、スケジューリングの手順例を示すフローチャートである。
以下の処理は所定の時間幅Δｔ周期で繰り返し実行される。
【００７０】
（Ｓ１０）スケジューリング制御部１２１は、メモリ使用効率最適化部１２５に対して、スワップ対象プロセスの選択を要求する。
（Ｓ１１）メモリ使用効率最適化部１２５は、情報処理装置１００で起動されてまだ終了していないプロセスそれぞれのワーキングセットサイズと状態（ＲＵＮ状態またはＳＷＡＰ状態）を、プロセス管理部１２４から取得する。また、メモリ使用効率最適化部１２５は、各プロセスのスワップ時間をプロセス管理部１２４から取得する。ただし、スワップ時間は、後でスワップ時間を参照するときに取得してもよい。
【００７１】
（Ｓ１２）メモリ使用効率最適化部１２５は、ステップＳ１１で取得した情報に基づいてスワップ対象プロセスを選択する。プロセス選択の手順は後述する。
（Ｓ１３）メモリ使用効率最適化部１２５は、ステップＳ１２で選択したスワップ対象プロセスをスケジューリング制御部１２１に通知する。ただし、メモリ使用効率最適化部１２５は、実行対象プロセスをスケジューリング制御部１２１に通知してもよい。
【００７２】
（Ｓ１４）スケジューリング制御部１２１は、ステップＳ１３の通知に基づいて、スワップアウトするプロセス、すなわち、ＲＵＮ状態からＳＷＡＰ状態に変更すべきプロセスを判定する。また、スケジューリング制御部１２１は、スワップインするプロセス、すなわち、ＳＷＡＰ状態からＲＵＮ状態に変更すべきプロセスを判定する。
【００７３】
（Ｓ１５）スケジューリング制御部１２１は、スワップアウトするプロセスをプロセス制御部１２２に通知する。プロセス制御部１２２は、スワップアウトするプロセスを中断させ、当該プロセスの中断時の状況を示す実行情報をＲＡＭ１０２に保存する。例えば、プロセス制御部１２２は、当該プロセスを実行するＣＰＵ内のプログラムカウンタなどのレジスタ情報をＲＡＭ１０２に保存する。
【００７４】
（Ｓ１６）スケジューリング制御部１２１は、スワップアウトするプロセスをスワップ制御部１２３に通知する。スワップ制御部１２３は、ＲＡＭ１０２に配置されているページの中からスワップアウトするプロセスに対応するページを検索する。スワップ制御部１２３は、検索されたページのデータ全てをＨＤＤ１０３に退避させ、検索されたページが配置されていたＲＡＭ１０２の記憶領域を解放する。
【００７５】
（Ｓ１７）スケジューリング制御部１２１は、スワップインするプロセスをスワップ制御部１２３に通知する。スワップ制御部１２３は、スワップインするプロセスに対応するページであって当該プロセスのスワップアウト時に退避されたページをＨＤＤ１０３から検索する。スワップ制御部１２３は、検索されたページのデータをＨＤＤ１０３からＲＡＭ１０２の空き領域に読み出し、検索されたページをＲＡＭ１０２に復元する。
【００７６】
（Ｓ１８）スケジューリング制御部１２１は、スワップインするプロセスをプロセス制御部１２２に通知する。プロセス制御部１２２は、スワップインするプロセスを実行させるＣＰＵを選択する。プロセス制御部１２２は、当該プロセスの中断時の状況を示す実行情報をＲＡＭ１０２から抽出し、抽出した実行情報を復元して、選択したＣＰＵに当該プロセスの実行を再開させる。例えば、プロセス制御部１２２は、プログラムカウンタなどのレジスタ情報を、選択したＣＰＵに読み込ませる。
【００７７】
図９は、第２の実施の形態のプロセス選択の手順例を示すフローチャートである。
以下の処理は上記のステップＳ１２で実行される。
（Ｓ２０）メモリ使用効率最適化部１２５は、全プロセスの集合から実行対象プロセスの集合の候補を求める。求める候補は、全プロセスの集合に対するべき集合に相当する。例えば、プロセスＡ，Ｂ，Ｃが存在する場合、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ，Ｂ｝、｛Ａ，Ｃ｝、｛Ｂ，Ｃ｝、｛Ａ，Ｂ，Ｃ｝の７個の候補が算出される。
【００７８】
（Ｓ２１）メモリ使用効率最適化部１２５は、ステップＳ２０で求めた各候補について、実行対象プロセスのワーキングセットサイズを合計した合計ワーキングセットサイズを算出する。そして、メモリ使用効率最適化部１２５は、各候補について、合計ワーキングセットサイズをＲＡＭ１０２の記憶容量で割った「メモリ使用効率」を算出する。
【００７９】
（Ｓ２２）メモリ使用効率最適化部１２５は、全プロセスの中からスワップ時間が３×Δｔ以上である長停止プロセスを検索する。長停止プロセスは、３期間以上連続でスワップ対象プロセスとして選択されているプロセスである。
【００８０】
（Ｓ２３）メモリ使用効率最適化部１２５は、ステップＳ２２で検索された長停止プロセスが次の期間では実行対象プロセスとして選択されるようにする。すなわち、メモリ使用効率最適化部１２５は、ステップＳ２０で求めた候補の中から、長停止プロセスを実行対象プロセスとして含まない候補を除外する。例えば、メモリ使用効率最適化部１２５は、プロセスＡ，Ｂ，ＣのうちプロセスＡが長停止プロセスである場合、候補を｛Ａ｝、｛Ａ，Ｂ｝、｛Ａ，Ｃ｝、｛Ａ，Ｂ，Ｃ｝の４個に絞り込む。
【００８１】
（Ｓ２４）メモリ使用効率最適化部１２５は、ステップＳ２０で求めた各候補について、ＲＵＮ状態からＳＷＡＰ状態に遷移することになるプロセスを特定し、特定したプロセスのワーキングセットサイズの合計をスワップアウト量として算出する。算出するスワップアウト量は、スワップ処理においてＲＡＭ１０２からＨＤＤ１０３に転送されるデータの量の予想値である。なお、第２の実施の形態ではＨＤＤ１０３のアクセス負荷の指標としてスワップアウト量を用いているが、スワップイン量を用いてもよく、スワップアウト量とスワップイン量の合計を用いてもよい。
【００８２】
（Ｓ２５）メモリ使用効率最適化部１２５は、ステップＳ２３で絞り込まれた候補のうち、ステップＳ２１で算出したメモリ使用効率が１１０％を超える候補を除外する。これにより、スラッシングが発生する可能性の高い候補が除外される。なお、メモリ使用効率の閾値として１００％など他の値を用いてもよく、ユーザが指定してもよい。
【００８３】
（Ｓ２６）メモリ使用効率最適化部１２５は、ステップＳ２５で絞り込まれた候補をメモリ使用効率が高い順にソートし、メモリ使用効率が高い方から３つの候補を抽出する。なお、抽出する候補の数は変更することが可能である。また、ステップＳ２５で絞り込まれた候補が少ない場合には全ての候補を抽出してもよい。また、メモリ使用効率が所定の閾値を超える候補を全て抽出するようにしてもよい。
【００８４】
（Ｓ２７）メモリ使用効率最適化部１２５は、ステップＳ２６で抽出した候補のうち、ステップＳ２４で算出したスワップアウト量が最小の候補を選択する。
（Ｓ２８）メモリ使用効率最適化部１２５は、ステップＳ２７で選択した候補から、スワップ対象プロセスの集合を求める。スワップ対象プロセスの集合は、選択した候補が示す実行対象プロセスの集合に対する補集合に相当する。
【００８５】
図１０は、第３の並列実行のＲＡＭ使用例を示す図である。
ここでは、図５のプロセスＡ，Ｂ，Ｃを図９の方法に従ってスケジューリングする場合を考える。この場合、合計ワーキングセットサイズの変化はグラフ１３６のようになる。
【００８６】
１番目の期間の合計ワーキングセットサイズはＡ１＋Ｂ１＋Ｃ１＝１０ＧｉＢである。２番目の期間の合計ワーキングセットサイズはＡ２＋Ｃ２＝１１ＧｉＢであり、スワップアウト量はＢ２＝１ＧｉＢである。３番目の期間の合計ワーキングセットサイズはＡ３＋Ｃ３＝１０ＧｉＢである。４番目の期間の合計ワーキングセットサイズはＡ４＋Ｃ４＝１０ＧｉＢである。５番目の期間の合計ワーキングセットサイズはＢ２＋Ｃ５＝１０ＧｉＢであり、スワップアウト量はＡ５＝２ＧｉＢである。
【００８７】
６番目の期間の合計ワーキングセットサイズはＢ３＋Ｃ６＝９ＧｉＢである。７番目の期間の合計ワーキングセットサイズはＡ５＋Ｂ４＋Ｃ７＝７ＧｉＢである。８番目の期間の合計ワーキングセットサイズはＡ６＋Ｂ５＋Ｃ８＝１０ＧｉＢである。９番目の期間の合計ワーキングセットサイズはＡ７＋Ｂ６＋Ｃ９＝１０ＧｉＢである。１０番目の期間の合計ワーキングセットサイズはＢ７＋Ｃ１０＝１０ＧｉＢであり、スワップアウト量はＡ８＝３ＧｉＢである。１１番目の期間の合計ワーキングセットサイズはＡ８＋Ｂ８＝５ＧｉＢである。１２番目の期間の合計ワーキングセットサイズはＡ９＋Ｂ９＝６ＧｉＢである。１３番目の期間の合計ワーキングセットサイズはＡ１０＋Ｂ１０＝３ＧｉＢである。
【００８８】
このように、各時点のワーキングセットサイズに応じて同時実行プロセス数を可変にすることで、合計ワーキングセットサイズがＲＡＭ１０２の記憶容量を大きく超えることが抑制されると共に、ＲＡＭ１０２の空き領域が削減される。また、できる限り同じプロセスが連続で実行されることでスワップアウト量が小さくなると共に、少数回のスワップ処理によって連続停止時間が極端に長いプロセスが生じないようになっている。
【００８９】
第２の実施の形態の情報処理装置１００によれば、時間幅Δｔ周期で各プロセスの最新のワーキングセットサイズが取得され、ワーキングセットサイズに応じて次のΔｔ時間における実行対象プロセスと停止対象プロセスとが決定される。
【００９０】
このとき、実行対象プロセスの合計ワーキングセットサイズが閾値を超えないようにすることで、スラッシングを抑制しメモリアクセスを効率化できる。また、実行対象プロセスの合計ワーキングセットサイズが閾値を超えない範囲で大きくなるようにすることで、リソース使用率を向上させて実行時間を短縮することができる。また、スワップアウト量が小さくなるようにすることで、ＨＤＤ１０３へのアクセスを抑制しページ置換のオーバヘッドを削減することができる。また、連続停止時間が長いプロセスについてはスワップインを行うことで、複数のプロセスの間の公平を図ることができる。このように、メモリアクセスが効率化され、複数のプロセス全てが終了するまでの実行時間を短縮できる。
【００９１】
なお、第２の実施の形態ではプロセス単位で実行と停止の制御を行ったが、ジョブ単位で実行と停止の制御を行うことも可能である。ジョブは、プロセスよりも大きい処理単位であり、１つのアプリケーションソフトウェアとして機能するために協調して動作する一連のプロセスの集合である。この場合、ＯＳ内またはＯＳ外のジョブスケジューラが、各ジョブに含まれるプロセスのワーキングセットサイズに基づいて、実行対象ジョブとスワップ対象ジョブとを判定することが考えられる。
【００９２】
［第３の実施の形態］
次に、第３の実施の形態を説明する。第２の実施の形態との違いを中心に説明し、第２の実施の形態と同様の内容については説明を省略することがある。
【００９３】
第３の実施の形態は、スワップ対象プロセスの選択方法が第２の実施の形態と異なる。第３の実施の形態のプロセス選択方法は、科学技術計算を行う情報処理装置に特に有用である。第３の実施の形態の情報処理装置は、図２，３に示した第２の実施の形態の情報処理装置１００と同様のモジュール構成によって実現することができる。以下では、図２，３と同様の符号を用いて第３の実施の形態を説明する。
【００９４】
図１１は、科学技術計算におけるＲＡＭ使用量の変化例を示す図である。
複数の情報処理装置を使用する科学技術計算では、図１１に示すような手順で計算が行われることが多い。ステージ１では、データ保持用のメモリ領域が獲得される。ステージ２では、通信用のメモリ領域が獲得される。ステージ３では、情報処理装置の間で通信が行われる。ステージ４では、ステージ２で獲得した通信用のメモリ領域が解放される。ステージ５では、演算用のメモリ領域が獲得される。ステージ６では、ステージ３で受信したデータおよびステージ５で獲得した演算用のメモリ領域を用いて、演算が行われる。なお、ステージ２〜７は２回以上繰り返し実行されることがある。すなわち、ステージ７の次にステージ２に戻って、ステージ２〜７が再度実行されることがある。ステージ７では、ステージ５で獲得した演算用のメモリ領域が解放される。ステージ８では、ステージ１で獲得したデータ用のメモリ領域が解放される。
【００９５】
この場合におけるメモリ使用量の変化はグラフ１３７のようになる。ステージ１ではメモリ使用量が増加する。ステージ２ではメモリ使用量が更に増加する。ステージ３ではメモリ使用量はあまり変化しない。ステージ４ではメモリ使用量が減少する。ステージ５ではメモリ使用量が再度増加する。ステージ６ではメモリ使用量はあまり変化しない。ステージ７ではメモリ使用量が減少する。ステージ８ではメモリ使用量が更に減少する。
【００９６】
グラフ１３７に示すように科学技術計算では、メモリ使用量が大きく減少した後にメモリ使用量が再び大きく増加することがある。すなわち、科学技術計算を行うプロセスでは、ワーキングセットサイズが大きく減少した後にワーキングセットサイズが再び大きく増加することがある。このため、科学技術計算を行うプロセスのスワップアウトは、ワーキングセットサイズの減少量が大きいときに行った方が、スワップアウト量が小さくなるため好ましい。第３の実施の形態は、このような科学技術計算の性質を利用する。
【００９７】
図１２は、第３の実施の形態のプロセス情報テーブルの例を示す図である。
プロセス情報テーブル１２８は、制御情報記憶部１２６に記憶される。プロセス情報テーブル１２８は、プロセス管理部１２４からメモリ使用効率最適化部１２５に提供されたプロセス情報に基づいて、メモリ使用効率最適化部１２５によって更新される。プロセス情報テーブル１２８は、プロセスＩＤ（ａ）、優先度（ｂ）、状態（ｃ）、実行回数（ｄ）、残予定回数（ｅ）、連続実行回数（ｆ）、ワーキングセット現在値（ｇ）、ワーキングセット最大値（ｈ）、ワーキングセット変化量（ｉ）および評価値（ｊ）を有する。
【００９８】
プロセスＩＤの項目には、プロセスの識別子が登録される。優先度の項目には、プロセスの優先度を示す数値が登録される。数値が大きいほど優先度が高いことを示す。状態の項目には、実行状態を示す「ＲＵＮ」または停止状態を示す「ＳＷＡＰ」が登録される。
【００９９】
実行回数の項目には、実行対象プロセスとして選択された回数が登録される。実行回数と時間幅Δｔの積が実行時間を意味する。残予定回数の項目には、プロセスが終了するまでに実行対象プロセスとして選択されるべき回数が登録される。残予定回数と時間幅Δｔの積が残り実行予定時間を意味する。各プロセスの実行予定時間は、ユーザが情報処理装置１００にジョブを投入するときに指定される。メモリ使用効率最適化部１２５は、指定された実行予定時間を時間幅Δｔで割ることで、残予定回数の初期値を算出できる。連続実行回数の項目には、連続で実行対象プロセスとして選択された回数が登録される。連続実行回数と時間幅Δｔの積が連続実行時間を意味する。スワップ対象プロセスとして選択されると、連続実行回数は０に初期化される。
【０１００】
ワーキングセット現在値の項目には、最新のワーキングセットサイズが登録される。ワーキングセット最大値の項目には、実行対象プロセスとして選択されてからのワーキングセットサイズのうち最大のワーキングセットサイズが登録される。スワップ対象プロセスとして選択されると、ワーキングセット最大値は０に初期化される。ワーキングセット変化量の項目には、Δｔ時間前からのワーキングセットサイズの変化量、すなわち、最新のワーキングセットサイズとΔｔ時間前のワーキングセットサイズとの差が登録される。ワーキングセットサイズが増加していればワーキングセット変化量は正の値となり、減少していればワーキングセット変化量は負の値となる。スワップ対象プロセスとして選択されると、ワーキングセット変化量は０に初期化される。
【０１０１】
評価値の項目には、後述する方法によって算出された数値が登録される。評価値が高いほど、スワップ対象プロセスとして好ましいプロセスであることを示している。
図１３は、第３の実施の形態のプロセス選択の手順例を示すフローチャートである。
【０１０２】
以下の処理は前述のステップＳ１２で実行される。
（Ｓ３０）メモリ使用効率最適化部１２５は、プロセス管理部１２４から取得したプロセス情報に基づいて、プロセス情報テーブル１２８の各プロセスの状態ｃを更新する。
【０１０３】
（Ｓ３１）メモリ使用効率最適化部１２５は、プロセス情報テーブル１２８において、状態が「ＲＵＮ」である実行中プロセスそれぞれについて、実行回数ｄを１増加させ、残予定回数ｅを１減少させ、連続実行回数ｆを１増加させる。
【０１０４】
（Ｓ３２）メモリ使用効率最適化部１２５は、プロセス管理部１２４から取得したプロセス情報に基づいて、プロセス情報テーブル１２８の各プロセスのワーキングセット現在値ｇ、ワーキングセット最大値ｈ、ワーキングセット変化量ｉを更新する。ワーキングセット現在値ｇは、最新のワーキングセットサイズとする。ワーキングセット最大値ｈは、最新のワーキングセットサイズが現在の値より大きい場合に、最新のワーキングセットサイズに上書きされる。ワーキングセット変化量ｉは、最新のワーキングセットサイズと更新前のワーキングセット現在値ｇとの差とする。
【０１０５】
（Ｓ３３）メモリ使用効率最適化部１２５は、次のようにしてパラメータＥ，Ｈ，Ｉの値を算出する。残予定回数ｅが５以下である場合はＥ＝１とし、残予定回数ｅが５より大きい場合はＥ＝０とする。Ｈの値はワーキングセット最大値ｈとワーキングセット変化量ｉを用いて、Ｈ＝ｉ−ｈ／ｉと算出する。ワーキングセット変化量ｉが０より小さい場合はＩ＝１とし、ワーキングセット変化量ｉが０以上である場合はＩ＝０とする。
【０１０６】
（Ｓ３４）メモリ使用効率最適化部１２５は、プロセス情報テーブル１２８に登録された各プロセスについて、優先度ｂと実行回数ｄと連続実行回数ｆとワーキングセット現在値ｇとパラメータＥ，Ｈ，Ｉを用いて、評価値ｊを算出する。ｊ＝（ｄ−５０×Ｅ＋１０×ｆ＋１０×ｇ＋２０×Ｈ＋１０×Ｉ）／ｂとする。
【０１０７】
評価値ｊが大きいプロセスが、スワップ対象プロセスとして選択されやすくなる。ここで、優先度ｂが大きいほど評価値ｊは小さくなるため、優先度の高いプロセスが実行対象プロセスになりやすい。また、実行回数ｄが大きいほど評価値ｊは大きくなるため、実行回数の少ないプロセスが実行対象プロセスになりやすい。また、パラメータＥの値が大きいほど評価値ｊは小さくなるため、残り実行予定時間が短いプロセスが実行対象プロセスになりやすい。また、連続実行回数ｆが大きいほど評価値ｊは大きくなるため、連続実行時間が長いプロセスがスワップ対象プロセスになりやすい。また、パラメータＨ，Ｉの値が大きいほど評価値ｊは大きくなるため、ワーキングセットサイズが大きく減少しているプロセスがスワップ対象プロセスになりやすい。
【０１０８】
（Ｓ３５）メモリ使用効率最適化部１２５は、全プロセスの集合から実行対象プロセスの集合の候補を求める。求める候補は、全プロセスの集合に対するべき集合に相当する。例えば、プロセスＡ，Ｂ，Ｃが存在する場合、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ，Ｂ｝、｛Ａ，Ｃ｝、｛Ｂ，Ｃ｝、｛Ａ，Ｂ，Ｃ｝の７個の候補が算出される。
【０１０９】
（Ｓ３６）メモリ使用効率最適化部１２５は、ステップＳ３５で求めた各候補について、ワーキングセット最大値ｈを合計した合計ワーキングセット最大値を算出する。
（Ｓ３７）メモリ使用効率最適化部１２５は、ステップＳ３５で求めた候補のうち、ステップＳ３６で算出した合計ワーキングセット最大値がＲＡＭ１０２の記憶容量を超える候補を除外する。これにより、スラッシングが発生する可能性の高い候補が除外される。
【０１１０】
（Ｓ３８）メモリ使用効率最適化部１２５は、ステップＳ３７で絞り込んだ各候補について、実行対象プロセスの集合に対する補集合であるスワップ対象プロセスを特定する。そして、メモリ使用効率最適化部１２５は、各候補について、スワップ対象プロセスの評価値ｊを合計した合計評価値を算出する。
【０１１１】
（Ｓ３９）メモリ使用効率最適化部１２５は、ステップＳ３７で絞り込んだ候補のうち、ステップＳ３８で算出した合計評価値が最大の候補を選択する。メモリ使用効率最適化部１２５は、選択した候補に対応するスワップ対象プロセスの集合を採用する。
【０１１２】
（Ｓ４０）メモリ使用効率最適化部１２５は、プロセス情報テーブル１２８において、スワップ対象プロセスの連続実行回数ｆ、ワーキングセット最大値ｈ、ワーキングセット変化量ｉおよび評価値ｊを０に初期化する。
【０１１３】
第３の実施の形態の情報処理装置によれば、第２の実施の形態と同様の効果が得られる。更に、第３の実施の形態では、科学技術計算の特性を利用して、各プロセスについて精度の高い評価値を算出することができる。よって、メモリアクセスが効率化されるように、スワップ対象プロセスを適切に選択することができる。
【符号の説明】
【０１１４】
１０  情報処理装置
１１  処理部
１１ａ，１１ｂ，１１ｃ  プロセッサ
１２  メモリ
１３  ストレージ装置
１４ａ，１４ｂ，１４ｃ  プロセス
１５ａ，１５ｂ，１５ｃ  ワーキングセットサイズ
【図１】
2019040343.tif 000003
【図２】
2019040343.tif 000004
【図３】
2019040343.tif 000005
【図４】
2019040343.tif 000006
【図５】
2019040343.tif 000007
【図６】
2019040343.tif 000008
【図７】
2019040343.tif 000009
【図８】
2019040343.tif 000010
【図９】
2019040343.tif 000011
【図１０】
2019040343.tif 000012
【図１１】
2019040343.tif 000013
【図１２】
2019040343.tif 000014
【図１３】
2019040343.tif 000015