JP2019040343A - 情報処理装置、プロセス管理方法およびプロセス管理プログラム - Google Patents

情報処理装置、プロセス管理方法およびプロセス管理プログラム Download PDF

Info

Publication number
JP2019040343A
JP2019040343A JP2017161226A JP2017161226A JP2019040343A JP 2019040343 A JP2019040343 A JP 2019040343A JP 2017161226 A JP2017161226 A JP 2017161226A JP 2017161226 A JP2017161226 A JP 2017161226A JP 2019040343 A JP2019040343 A JP 2019040343A
Authority
JP
Japan
Prior art keywords
processes
working set
memory
set size
swap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017161226A
Other languages
English (en)
Other versions
JP7007557B2 (ja
Inventor
温 二宮
Atsushi Ninomiya
温 二宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017161226A priority Critical patent/JP7007557B2/ja
Priority to US16/107,336 priority patent/US10996977B2/en
Publication of JP2019040343A publication Critical patent/JP2019040343A/ja
Application granted granted Critical
Publication of JP7007557B2 publication Critical patent/JP7007557B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】並列に実行可能な複数のプロセスによるメモリ使用を効率化する。
【解決手段】処理部11は、プロセッサ11a,11b,11cを含む。メモリ12は、並列に実行可能なプロセス14a,14b,14cに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶する。ストレージ装置13は、メモリ12に記憶されていないページのデータを退避する。処理部11は、プロセス14a,14b,14cについて単位時間に使用されたページの量を示すワーキングセットサイズ15a,15b,15cを取得する。処理部11は、ワーキングセットサイズ15a,15b,15cの合計が閾値を超える場合、一部のプロセス14cを選択して選択したプロセス14cを所定時間停止させる。処理部11は、停止中のプロセス14cに対応するページのデータがメモリ12からストレージ装置13に退避されるよう制御する。
【選択図】図1

Description

本発明は情報処理装置、プロセス管理方法およびプロセス管理プログラムに関する。
RAM(Random Access Memory)などの主記憶としてのメモリとHDD(Hard Disk Drive)などの補助記憶としてのストレージ装置とを有する情報処理装置では、メモリの限られた記憶領域を活用する方法として仮想記憶を使用することが多い。仮想記憶では、CPU(Central Processing Unit)などのプロセッサが実行するプロセスに対して、物理的な記憶領域よりも大きな仮想的なアドレス空間を割り当てる。仮想記憶では、アドレス空間を固定長のページに分割して管理するページング方式が用いられることが多い。
実行中のプロセスについては、アドレス空間に含まれる複数のページのうちの一部のページがメモリに配置され、残りのページがストレージ装置に配置されることがある。プロセスが使用しようとする所望のページがメモリに配置されていない場合にはページフォールトが発生する。ページフォールトが発生すると、メモリに配置された一部のページをストレージ装置に退避するページアウトが行われ、ページアウトによって生じたメモリの空き領域に所望のページをストレージ装置から復元するページインが行われる。
ページアウトさせるページを選択するページ置換アルゴリズムでは、各プロセスのワーキングセットを考慮することがある。ワーキングセットは、あるプロセスに割り当てられたアドレス空間の中で当該プロセスによって単位時間に使用されたページの集合であり、最近使用されたページの集合や使用中のページの集合などと言うことができる。プロセスが広範囲のデータを使用するときはワーキングセットサイズが大きくなり、プロセスが狭い範囲のデータを繰り返し使用するときはワーキングセットサイズが小さくなる。ページ置換アルゴリズムは、短期的には同じページが反復使用されやすいという局所性から、ワーキングセットに属さないページを優先的にページアウトさせることがある。
なお、各プロセスのワーキングセットを判定する周期であるウィンドウサイズを、メモリの空き領域が多いときは長くし、メモリの空き領域が少ないときは短くする主記憶制御システムが提案されている。また、ページサイズを変更した場合に各プロセスのメモリ割当量がどの様に変化するかを調査するメモリ割当量調査システムが提案されている。
特開昭59−207479号公報 特開平2−53150号公報
近年、情報処理装置は複数のCPUや複数のCPUコアなどの複数のプロセッサを有することが多くなり、複数のプロセスを同時に実行することが可能となっている。同時に実行可能な複数のプロセスが存在する場合、情報処理装置が有する複数のプロセッサを活用して、できる限り並列度を上げるようスケジューリングを行うことが多い。
しかし、プロセッサの数に合わせて並列に実行するプロセスを増やすと、複数のプロセッサから共有されるメモリの記憶領域が不足し、ページアウトとページインが頻繁に繰り返されるスラッシングが発生することがある。よって、メモリアクセスがボトルネックとなって、かえってプロセスの実行効率が低下するおそれがある。
1つの側面では、本発明は、並列に実行可能な複数のプロセスによるメモリ使用を効率化する情報処理装置、プロセス管理方法およびプロセス管理プログラムを提供することを目的とする。
1つの態様では、複数のプロセッサを含む処理部と、複数のプロセッサを用いて並列に実行可能な複数のプロセスに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶するメモリと、メモリに記憶されていないページのデータを退避するストレージ装置とを有する情報処理装置が提供される。処理部は、複数のプロセスそれぞれについて単位時間に使用されたページの量を示すワーキングセットサイズを取得し、複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、複数のプロセスのうち一部のプロセスを選択して選択したプロセスを所定時間停止させ、停止中のプロセスに対応するページのデータがメモリからストレージ装置に退避されるよう制御する。
また、1つの態様では、コンピュータが実行するプロセス管理方法が提供される。また、1つの態様では、コンピュータに実行させるプロセス管理プログラムが提供される。
1つの側面では、並列に実行可能な複数のプロセスによるメモリ使用が効率化される。
第1の実施の形態の情報処理装置を説明する図である。 第2の実施の形態の情報処理装置のハードウェア例を示す図である。 情報処理装置の機能例を示すブロック図である。 第2の実施の形態のプロセス情報テーブルの例を示す図である。 各プロセスのワーキングセットサイズの変化例を示す図である。 第1の並列実行のRAM使用例を示す図である。 第2の並列実行のRAM使用例を示す図である。 スケジューリングの手順例を示すフローチャートである。 第2の実施の形態のプロセス選択の手順例を示すフローチャートである。 第3の並列実行のRAM使用例を示す図である。 科学技術計算におけるRAM使用量の変化例を示す図である。 第3の実施の形態のプロセス情報テーブルの例を示す図である。 第3の実施の形態のプロセス選択の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明する図である。
第1の実施の形態の情報処理装置10は、複数のプロセッサを用いて複数のプロセスを同時に実行することができるコンピュータである。情報処理装置10は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
情報処理装置10は、処理部11、メモリ12およびストレージ装置13を有する。処理部11は、プロセッサ11a,11b,11cを含む複数のプロセッサを有する。複数のプロセッサは、例えば、複数のCPUまたは複数のCPUコアである。ただし、処理部11は、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などの他の電子回路を含んでもよい。メモリ12は、処理部11が有する複数のプロセッサから使用される共有メモリであり、主記憶装置として使用され得る。メモリ12は、例えば、RAMなどの揮発性の半導体メモリである。ストレージ装置13は、メモリ12とは異なる記憶装置であり、補助記憶装置として使用され得る。ストレージ装置13は、例えば、HDDやSSD(Solid State Drive)などの不揮発性のストレージ装置である。
情報処理装置10では、プロセス14a,14b,14cを含む複数のプロセスが起動されている。複数のプロセスは、処理部11が有する複数のプロセッサを用いて並列に実行することが可能である。例えば、プロセスの並列度を優先させる場合、プロセッサ11aがプロセス14aを実行し、プロセッサ11bがプロセス14bを実行し、プロセッサ11cがプロセス14cを実行することで、プロセス14a,14b,14cを同時実行することができる。プロセス14a,14b,14cそれぞれには、仮想的なアドレス空間が割り当てられる。アドレス空間は固定長のページに分割されている。すなわち、メモリ管理について仮想記憶およびページング方式が採用されている。
メモリ12は、プロセス14a,14b,14cに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶する。ストレージ装置13は、メモリ12に記憶されていないページのデータを記憶する。メモリ12とストレージ装置13との間ではページの入れ替えが行われ得る。あるプロセスが実行中であり当該プロセスが使用しようとするページがメモリ12に存在しない場合、ページフォールトが発生する。すると、メモリ12上の何れかのページのデータをストレージ装置13に退避するページアウトと、所望のページのデータをメモリ12に読み込むページインが行われる。
ただし、停止中のプロセスのページはメモリ12に配置されていなくてもよく、停止中のプロセスの全ページをストレージ装置13に退避しておくことも可能である。あるプロセスを実行状態から停止状態に切り替えた場合、その時点でメモリ12に配置されている当該プロセスのページ全てをストレージ装置13に退避させるスワップアウトを行ってもよい。また、あるプロセスを停止状態から実行状態に切り替えた場合、スワップアウトされた当該プロセスのページをメモリ12に復元するスワップインを行ってもよい。
処理部11は、メモリ12を効率的に使用できるように以下のようなプロセス管理を行う。以下のプロセス管理は、処理部11が有する何れかのプロセッサを用いて実行されてもよく、OSに含まれるプロセススケジューラにより実行されてもよい。
処理部11は、並列に実行可能な複数のプロセスそれぞれについてワーキングセットサイズを取得する。ワーキングセットサイズは、直近の単位時間に使用されたページの量を示す。例えば、処理部11は、プロセス14aに対応するワーキングセットサイズ15aと、プロセス14bに対応するワーキングセットサイズ15bと、プロセス14cに対応するワーキングセットサイズ15cを取得する。複数のプロセスそれぞれのワーキングセットサイズは、例えば、OSに含まれるプロセス管理部から取得できる。
処理部11は、複数のプロセスのワーキングセットサイズを合計した合計ワーキングセットサイズを算出する。例えば、処理部11は、プロセス14a,14b,14cに対応するワーキングセットサイズ15a,15b,15cを合計する。処理部11は、合計ワーキングセットサイズが閾値を超えない場合、全てのプロセスを同時に実行することを許容する。一方、処理部11は、合計ワーキングセットサイズが閾値を超える場合、一部のプロセスを選択して当該選択したプロセスを所定時間停止させる。閾値は、メモリ12の記憶容量に基づいて決定されてもよい。例えば、閾値をメモリ12の記憶容量とすることや、閾値をメモリ12の記憶容量の110%とすることなどが考えられる。
上記のように、停止中のプロセスのページは再実行されるまでストレージ装置13に退避しておくことができる。例えば、停止するプロセスとしてプロセス14cが選択され、メモリ12に存在するプロセス14cのページがストレージ装置13に退避される。並列に実行されるプロセスの数は、処理部11が有するプロセッサの数より少なくてもよい。
処理部11は、停止するプロセスの選択を所定時間毎に繰り返し行ってもよい。また、処理部11は、実行するプロセスの合計ワーキングセットサイズが閾値を超えないように、停止するプロセスを選択してもよい。また、処理部11は、実行するプロセスの合計ワーキングセットサイズが閾値に近くなるように、停止するプロセスを選択してもよい。また、処理部11は、スワップアウトするプロセスのワーキングセットサイズが小さくなるように、停止するプロセスを選択してもよい。また、処理部11は、各プロセスのワーキングセットサイズの変化を監視し、ワーキングセットサイズが減少したプロセスを優先的に停止させてもよい。また、処理部11は、特定のプロセスの連続停止時間が過大にならないように、停止するプロセスを選択してもよい。
第1の実施の形態の情報処理装置10によれば、複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれのワーキングセットサイズが取得され、合計ワーキングセットサイズが算出される。合計ワーキングセットサイズが閾値を超える場合、一部のプロセスが選択されて当該選択されたプロセスが所定時間停止される。
情報処理装置10が有するプロセッサの数に応じてプロセスの同時実行数を最大まで上げてしまうと、メモリ12の記憶領域が不足してメモリアクセスが非効率になることがある。特に、実行中のプロセスのワーキングセットサイズの合計が一定水準を超えると、ページアウトとページインが頻繁に繰り返されるスラッシングの発生が急激に増える。これに対し、第1の実施の形態の情報処理装置10では、メモリ12の記憶領域が不足しているときは、プロセスの同時実行数を減らすことでスラッシングの発生が抑制され、メモリアクセスが効率化される。これにより、並列に実行可能な複数のプロセスが全て終了するまでのトータルの実行時間を短縮できる。また、メモリ12の記憶領域が不足していないときは、全てのプロセッサを活用してプロセスの同時実行数を増やすことができ、ワーキングセットサイズの変化に応じて並列度を柔軟に変更することができる。
なお、第1の実施の形態の情報処理装置10は、科学技術計算のようなバッチ処理に特に有用である。バッチ処理では、ユーザとリアルタイムで対話することは求められておらず、最終結果が出力される前の途中状態は問題とならない。バッチ処理では、起動から終了までの経過時間を短縮できればよいため、実行途中での一時停止や実行順序の入れ替えなどによってプロセスの実行効率を改善することが可能となる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
第2の実施の形態の情報処理装置100は、CPU101a,101b,101c,101d、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。なお、CPU101a,10b,101cは、第1の実施の形態のプロセッサ11a,11b,11cに対応する。RAM102は、第1の実施の形態のメモリ12に対応する。HDD103は、第1の実施の形態のストレージ装置13に対応する。
CPU101a,101b,101c,101dは、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。CPU101a,101b,101c,101dは、同一または異なるプログラムから起動される複数のプロセスを並列に実行することができる。複数のプロセスを並列に実行するにあたり、CPU101a,101b,101c,101dはRAM102を共有する。なお、CPU101a,101b,101c,101dは、同一パッケージ内のCPUコアであってもよい。
RAM102は、CPU101a,101b,101c,101dが実行するプログラムやCPU101a,101b,101c,101dが演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性のストレージ装置である。なお、情報処理装置100は、フラッシュメモリやSSDなどの他の種類のストレージ装置を備えてもよく、複数の不揮発性のストレージ装置を備えてもよい。
画像信号処理部104は、情報処理装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112としては、マウス、タッチパネル、タッチパッド、トラックボール、キーボード、リモートコントローラなどを用いることができる。また、情報処理装置100に複数の種類の入力デバイスが接続されてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102やHDD103などの他の記録媒体に格納する。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク114を介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
ところで、情報処理装置100は、RAM102の記憶領域の管理に仮想記憶およびページング方式を用いる。CPU101a,101b,101c,101dが実行可能なプロセスそれぞれに対して仮想的なアドレス空間が割り当てられ、各プロセスのアドレス空間が固定長のページに分割される。複数のプロセスのアドレス空間の合計は、RAM102の記憶容量を超えてもよい。主記憶装置であるRAM102に配置することができないページについては、補助記憶装置であるHDD103に退避される。
RAM102とHDD103との間では、ページの入れ替えが適宜行われる。何れかのCPUで実行中のプロセスについては少なくとも一部のページがRAM102に配置される。実行中のプロセスが使用しようとするページがRAM102に存在しないページフォールトが発生すると、RAM102に配置された何れかのページをHDD103に退避するページアウトが行われる。そして、ページアウトによって生じた空き領域を用いて、HDD103からRAM102に所望のページを復元するページインが行われる。
また、停止中のプロセスについては全てのページをHDD103に退避しておくことができる。実行状態から停止状態に切り替えるプロセスについては、その時点でRAM102に配置されている全てのページをHDD103に退避するスワップアウトが行われる。その後に停止状態から実行状態に切り替えるプロセスについては、スワップアウトしたページをHDD103からRAM102に復元するスワップインが行われる。
また、ページの入れ替えでは、各プロセスのワーキングセットが考慮される。ワーキングセットは、直近の所定時間に当該プロセスによって使用されたページの集合である。以下では、ワーキングセットの大きさをワーキングセットサイズと言うことがあり、複数のプロセスのワーキングセットサイズの合計を合計ワーキングセットサイズと言うことがある。ワーキングセットサイズは、プロセスによって異なることがあり、同じプロセスであっても時間の経過に伴って変化することがある。実行中のプロセスについては、短期的には同じページが反復して使用されやすいという局所性から、ワーキングセットに属するページがページアウトされずにRAM102に残っていることが好ましい。
情報処理装置100は、RAM102とHDD103との間のページの入れ替えを抑制してRAM102を効率的に使用できるように、実行すべきプロセス(実行対象プロセス)と停止すべきプロセス(スワップ対象プロセス)を継続的に判定する。
図3は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、スケジューリング制御部121、プロセス制御部122、スワップ制御部123、プロセス管理部124、メモリ使用効率最適化部125および制御情報記憶部126を有する。スケジューリング制御部121、プロセス制御部122、スワップ制御部123、プロセス管理部124およびメモリ使用効率最適化部125は、例えば、プログラムモジュールを用いて実装される。制御情報記憶部126は、例えば、RAM102またはHDD103の記憶領域を用いて実装される。
なお、スケジューリング制御部121、プロセス制御部122、スワップ制御部123、プロセス管理部124およびメモリ使用効率最適化部125は、OS内のスケジューラとして実装してもよい。OS内のスケジューラは、例えば、CPU101a,101b,101c,101dの何れかのCPUを用いて実行される。
スケジューリング制御部121は、所定時間毎にメモリ使用効率最適化部125に、次のスワップ対象プロセスを問い合わせる。スケジューリング制御部121は、現在実行中のプロセスと現在停止中のプロセスを特定し、メモリ使用効率最適化部125からの回答に基づいて、次の実行対象プロセスと次のスワップ対象プロセスを特定する。
そして、スケジューリング制御部121は、実行状態から停止状態に移行するプロセスを特定し、プロセス制御部122に当該プロセスの停止を指示し、スワップ制御部123に当該プロセスのスワップアウトを指示する。また、スケジューリング制御部121は、停止状態から実行状態に移行するプロセスを特定し、スワップ制御部123に当該プロセスのスワップインを指示し、プロセス制御部122に当該プロセスの再開を指示する。
プロセス制御部122は、スケジューリング制御部121からの指示に応じて、CPU101a,101b,101c,101dが実行するプロセスを切り替える。プロセス制御部122は、あるプロセスの停止が指示されると、当該プロセスの実行情報をRAM102上で退避する。実行情報の退避は、当該プロセスを実行するCPU内のプログラムカウンタなどのレジスタ情報をRAM102に退避することを含み得る。また、プロセス制御部122は、あるプロセスの再開が指示されると、当該プロセスの実行情報をRAM102上で復元して何れかのCPUに当該プロセスを実行させる。実行情報の復元は、当該プロセスを実行すべきCPUにレジスタ情報をロードすることを含み得る。
スワップ制御部123は、スケジューリング制御部121からの指示に応じて、RAM102とHDD103との間のスワップ処理を行う。スワップ制御部123は、あるプロセスのスワップアウトが指示されると、RAM102に配置されたページのうち当該プロセスに対応する全てのページのデータをHDD103に移動する。また、スワップ制御部123は、あるプロセスのスワップインが指示されると、スワップアウトで退避された当該プロセスのデータをHDD103からRAM102に読み出して復元する。
プロセス管理部124は、情報処理装置100で起動されてまだ終了していないプロセスの状態を管理する。プロセス管理部124は、プロセスを識別するプロセスID、プロセスの状態(実行状態または停止状態)、連続停止時間を示すスワップ時間、ワーキングセットなどを管理する。プロセス管理部124は、メモリ使用効率最適化部125からの問い合わせに応じて、プロセスID、状態、スワップ時間、ワーキングセットサイズなどのプロセス情報をメモリ使用効率最適化部125に回答する。
メモリ使用効率最適化部125は、スケジューリング制御部121から問い合わせを受けると、プロセス管理部124からプロセス情報を取得する。そして、メモリ使用効率最適化部125は、取得したプロセス情報に基づいて、次の所定時間に停止状態にしておくべきプロセスであるスワップ対象プロセスを決定し、決定したスワップ対象プロセスをスケジューリング制御部121に回答する。なお、第2の実施の形態ではメモリ使用効率最適化部125は、スワップ対象プロセスをスケジューリング制御部121に通知しているが、実行対象プロセスをスケジューリング制御部121に通知するようにしてもよい。
制御情報記憶部126は、メモリ使用効率最適化部125がスワップ対象プロセスを決定する過程で使用する制御情報を記憶する。
図4は、第2の実施の形態のプロセス情報テーブルの例を示す図である。
プロセス情報テーブル127は、上記の制御情報記憶部126に記憶される。プロセス情報テーブル127は、プロセス管理部124からメモリ使用効率最適化部125に提供されたプロセス情報を記憶する。プロセス情報テーブル127は、プロセスID、状態、スワップ時間およびワーキングセットの項目を有する。
プロセスIDの項目には、プロセスの識別子が登録される。状態の項目には、実行状態を示す「RUN」または停止状態を示す「SWAP」が登録される。スワップ時間の項目には、プロセスが連続で停止状態(SWAP状態)にある時間が登録される。ワーキングセットの項目には、プロセスのワーキングセットサイズが登録される。
次に、プロセススケジューリングの問題点について説明する。
図5は、各プロセスのワーキングセットサイズの変化例を示す図である。
ここでは、プロセスA,B,Cの3つのプロセスが同時に起動された場合を考える。CPU101a,101b,101cを活用すれば、これら3つのプロセスを並列に実行することも可能である。例えば、CPU101aがプロセスAを実行し、CPU101bがプロセスBを実行し、CPU101cがプロセスCを実行することも可能である。ただし、RAM102は3つのプロセスで共有されることになる。
プロセスA,B,Cをそれぞれ単独で実行した場合、プロセスA,B,Cは何れも所定の時間幅Δtをもつ期間T1〜T10を通じて終了する。期間Tiは、時刻(i−1)×Δtから時刻i×Δtまでの期間を表す。以下では、プロセスAのi番目の期間のワーキングセットサイズをAiと表記し、プロセスBのi番目の期間のワーキングセットサイズをBiと表記し、プロセスCのi番目の期間のワーキングセットサイズをCiと表記する。なお、ワーキングセットを特定する単位時間であるウィンドウサイズと期間T1〜T10の時間幅Δtとは同じでもよいし異なってもよい。
グラフ131は、プロセスAのワーキングセットサイズの変化を表す。A1=6GiB、A2=6GiB、A3=5GiB、A4=5GiB、A5=2GiB、A6=2GiB、A7=2GiB、A8=3GiB、A9=4GiB、A10=1GiBである。
グラフ132は、プロセスBのワーキングセットサイズの変化を表す。B1=1GiB、B2=1GiB、B3=1GiB、B4=4GiB、B5=7GiB、B6=7GiB、B7=9GiB、B8=2GiB、B9=2GiB、B10=2GiBである。
グラフ133は、プロセスCのワーキングセットサイズの変化を表す。C1=3GiB、C2=5GiB、C3=5GiB、C4=5GiB、C5=9GiB、C6=8GiB、C7=1GiB、C8=1GiB、C9=1GiB、C10=1GiBである。なお、1GiB(ギビバイト)は1×230バイトである。
図6は、第1の並列実行のRAM使用例を示す図である。
ここでは、CPU101a,101b,101cを用いて上記のプロセスA,B,Cを同時に実行する場合を考える。また、RAM102の物理的な記憶容量が10GiBであるとする。この場合、プロセスA,B,Cのワーキングセットサイズを合計した合計ワーキングセットサイズの変化は、グラフ134のようになる。
1番目の期間の合計ワーキングセットサイズはA1+B1+C1=10GiBである。2番目の期間の合計ワーキングセットサイズはA2+B2+C2=12GiBである。3番目の期間の合計ワーキングセットサイズはA3+B3+C3=11GiBである。4番目の期間の合計ワーキングセットサイズはA4+B4+C4=14GiBである。5番目の期間の合計ワーキングセットサイズはA5+B5+C5=18GiBである。
6番目の期間の合計ワーキングセットサイズはA6+B6+C6=17GiBである。7番目の期間の合計ワーキングセットサイズはA7+B7+C7=12GiBである。8番目の期間の合計ワーキングセットサイズはA8+B8+C8=6GiBである。9番目の期間の合計ワーキングセットサイズはA9+B9+C9=7GiBである。10番目の期間の合計ワーキングセットサイズはA10+B10+C10=4GiBである。
上記のように、2番目の期間から7番目の期間では、合計ワーキングセットサイズがRAM102の物理的な記憶容量を超えている。このため、プロセスA,B,Cのワーキングセット全体をRAM102に維持することができず、ページフォールトの発生頻度が増えてしまう。よって、ページアウトとページインを繰り返すスラッシングが発生してHDD103へのアクセスが増加し、実質的なメモリアクセス速度が低下してしまう。
この場合、プロセスA,B,Cは3個のCPUを用いて同時に実行されるものの、メモリアクセスの遅延によって、各プロセスを単独で実行した場合の実行時間10×Δtよりも顕著に長い実行時間を要することになる。すなわち、RAM102の記憶容量が少ない場合、同時実行プロセス数を最大まで上げてしまうと実行時間が長くなることがある。
図7は、第2の並列実行のRAM使用例を示す図である。
ここでは、ラウンドロビン方式によりプロセスA,B,Cのうちの1つのプロセスを交代で停止させ、同時実行プロセス数を2個に制限する場合を考える。1番目の期間ではプロセスA,Bを実行させてプロセスCを停止させる。2番目の期間ではプロセスB,Cを実行させてプロセスAを停止させる。3番目の期間ではプロセスA,Cを実行させてプロセスBを停止させる。以降、全てのプロセスが終了するまでこれを繰り返す。この場合、合計ワーキングセットサイズの変化はグラフ135のようになる。
1番目の期間の合計ワーキングセットサイズはA1+B1=7GiBである。2番目の期間の合計ワーキングセットサイズはB2+C1=4GiBであり、このときのスワップアウト量はA1=6GiBである。3番目の期間の合計ワーキングセットサイズはA2+C2=11GiB、スワップアウト量はB2=1GiBである。4番目の期間の合計ワーキングセットサイズはA3+B3=6GiB、スワップアウト量はC2=5GiBである。5番目の期間の合計ワーキングセットサイズはB4+C3=9GiB、スワップアウト量はA3=5GiBである。
6番目の期間の合計ワーキングセットサイズはA4+C4=10GiB、スワップアウト量はB4=4GiBである。7番目の期間の合計ワーキングセットサイズはA5+B5=9GiB、スワップアウト量はC4=5GiBである。8番目の期間の合計ワーキングセットサイズはB6+C5=16GiB、スワップアウト量はA5=2GiBである。9番目の期間の合計ワーキングセットサイズはA6+C6=10GiB、スワップアウト量はB6=7GiBである。10番目の期間の合計ワーキングセットサイズはA7+B7=11GiB、スワップアウト量はC6=8GiBである。
11番目の期間の合計ワーキングセットサイズはB8+C7=3GiB、スワップアウト量はA7=2GiBである。12番目の期間の合計ワーキングセットサイズはA8+C8=4GiB、スワップアウト量はB8=2GiBである。13番目の期間の合計ワーキングセットサイズはA9+B9=6GiB、スワップアウト量はC8=1GiBである。14番目の期間の合計ワーキングセットサイズはB10+C9=3GiB、スワップアウト量はA9=4GiBである。15番目の期間の合計ワーキングセットサイズはA10+C10=2GiBである。
このように、ラウンドロビン方式により同時実行プロセス数を機械的に2個に制限しても、合計ワーキングセットサイズがRAM102の記憶容量を大きく超えてしまうことがあり、依然としてスラッシングが発生し得る。一方で、合計ワーキングセットサイズがRAM102の記憶容量を大きく下回っても、同時実行プロセス数が2個のままであり、RAM102の空き領域が大きくなってしまうことがある。また、各プロセスは機械的に3回に1回スワップ対象プロセスになるため、スワップアウト量が大きくなってHDD103へのアクセスが増加し、スワップ処理の負荷が高くなる。
そこで、第2の実施の形態の情報処理装置100は、各プロセスの直近のワーキングセットサイズに基づいて、一部のプロセスを停止させるか否かを動的に判定する。また、情報処理装置100は、一部のプロセスを停止させる場合、メモリを効率的に使用できるように適切なプロセスをスワップ対象プロセスとして選択する。スワップ対象プロセスの選択にあたっては、RAM102の空き領域が少なくなること、スワップアウト量が少なくなること、連続停止時間が極端に長いプロセスを生じさせないことなどが考慮される。
次に、情報処理装置100の処理手順について説明する。
図8は、スケジューリングの手順例を示すフローチャートである。
以下の処理は所定の時間幅Δt周期で繰り返し実行される。
(S10)スケジューリング制御部121は、メモリ使用効率最適化部125に対して、スワップ対象プロセスの選択を要求する。
(S11)メモリ使用効率最適化部125は、情報処理装置100で起動されてまだ終了していないプロセスそれぞれのワーキングセットサイズと状態(RUN状態またはSWAP状態)を、プロセス管理部124から取得する。また、メモリ使用効率最適化部125は、各プロセスのスワップ時間をプロセス管理部124から取得する。ただし、スワップ時間は、後でスワップ時間を参照するときに取得してもよい。
(S12)メモリ使用効率最適化部125は、ステップS11で取得した情報に基づいてスワップ対象プロセスを選択する。プロセス選択の手順は後述する。
(S13)メモリ使用効率最適化部125は、ステップS12で選択したスワップ対象プロセスをスケジューリング制御部121に通知する。ただし、メモリ使用効率最適化部125は、実行対象プロセスをスケジューリング制御部121に通知してもよい。
(S14)スケジューリング制御部121は、ステップS13の通知に基づいて、スワップアウトするプロセス、すなわち、RUN状態からSWAP状態に変更すべきプロセスを判定する。また、スケジューリング制御部121は、スワップインするプロセス、すなわち、SWAP状態からRUN状態に変更すべきプロセスを判定する。
(S15)スケジューリング制御部121は、スワップアウトするプロセスをプロセス制御部122に通知する。プロセス制御部122は、スワップアウトするプロセスを中断させ、当該プロセスの中断時の状況を示す実行情報をRAM102に保存する。例えば、プロセス制御部122は、当該プロセスを実行するCPU内のプログラムカウンタなどのレジスタ情報をRAM102に保存する。
(S16)スケジューリング制御部121は、スワップアウトするプロセスをスワップ制御部123に通知する。スワップ制御部123は、RAM102に配置されているページの中からスワップアウトするプロセスに対応するページを検索する。スワップ制御部123は、検索されたページのデータ全てをHDD103に退避させ、検索されたページが配置されていたRAM102の記憶領域を解放する。
(S17)スケジューリング制御部121は、スワップインするプロセスをスワップ制御部123に通知する。スワップ制御部123は、スワップインするプロセスに対応するページであって当該プロセスのスワップアウト時に退避されたページをHDD103から検索する。スワップ制御部123は、検索されたページのデータをHDD103からRAM102の空き領域に読み出し、検索されたページをRAM102に復元する。
(S18)スケジューリング制御部121は、スワップインするプロセスをプロセス制御部122に通知する。プロセス制御部122は、スワップインするプロセスを実行させるCPUを選択する。プロセス制御部122は、当該プロセスの中断時の状況を示す実行情報をRAM102から抽出し、抽出した実行情報を復元して、選択したCPUに当該プロセスの実行を再開させる。例えば、プロセス制御部122は、プログラムカウンタなどのレジスタ情報を、選択したCPUに読み込ませる。
図9は、第2の実施の形態のプロセス選択の手順例を示すフローチャートである。
以下の処理は上記のステップS12で実行される。
(S20)メモリ使用効率最適化部125は、全プロセスの集合から実行対象プロセスの集合の候補を求める。求める候補は、全プロセスの集合に対するべき集合に相当する。例えば、プロセスA,B,Cが存在する場合、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}の7個の候補が算出される。
(S21)メモリ使用効率最適化部125は、ステップS20で求めた各候補について、実行対象プロセスのワーキングセットサイズを合計した合計ワーキングセットサイズを算出する。そして、メモリ使用効率最適化部125は、各候補について、合計ワーキングセットサイズをRAM102の記憶容量で割った「メモリ使用効率」を算出する。
(S22)メモリ使用効率最適化部125は、全プロセスの中からスワップ時間が3×Δt以上である長停止プロセスを検索する。長停止プロセスは、3期間以上連続でスワップ対象プロセスとして選択されているプロセスである。
(S23)メモリ使用効率最適化部125は、ステップS22で検索された長停止プロセスが次の期間では実行対象プロセスとして選択されるようにする。すなわち、メモリ使用効率最適化部125は、ステップS20で求めた候補の中から、長停止プロセスを実行対象プロセスとして含まない候補を除外する。例えば、メモリ使用効率最適化部125は、プロセスA,B,CのうちプロセスAが長停止プロセスである場合、候補を{A}、{A,B}、{A,C}、{A,B,C}の4個に絞り込む。
(S24)メモリ使用効率最適化部125は、ステップS20で求めた各候補について、RUN状態からSWAP状態に遷移することになるプロセスを特定し、特定したプロセスのワーキングセットサイズの合計をスワップアウト量として算出する。算出するスワップアウト量は、スワップ処理においてRAM102からHDD103に転送されるデータの量の予想値である。なお、第2の実施の形態ではHDD103のアクセス負荷の指標としてスワップアウト量を用いているが、スワップイン量を用いてもよく、スワップアウト量とスワップイン量の合計を用いてもよい。
(S25)メモリ使用効率最適化部125は、ステップS23で絞り込まれた候補のうち、ステップS21で算出したメモリ使用効率が110%を超える候補を除外する。これにより、スラッシングが発生する可能性の高い候補が除外される。なお、メモリ使用効率の閾値として100%など他の値を用いてもよく、ユーザが指定してもよい。
(S26)メモリ使用効率最適化部125は、ステップS25で絞り込まれた候補をメモリ使用効率が高い順にソートし、メモリ使用効率が高い方から3つの候補を抽出する。なお、抽出する候補の数は変更することが可能である。また、ステップS25で絞り込まれた候補が少ない場合には全ての候補を抽出してもよい。また、メモリ使用効率が所定の閾値を超える候補を全て抽出するようにしてもよい。
(S27)メモリ使用効率最適化部125は、ステップS26で抽出した候補のうち、ステップS24で算出したスワップアウト量が最小の候補を選択する。
(S28)メモリ使用効率最適化部125は、ステップS27で選択した候補から、スワップ対象プロセスの集合を求める。スワップ対象プロセスの集合は、選択した候補が示す実行対象プロセスの集合に対する補集合に相当する。
図10は、第3の並列実行のRAM使用例を示す図である。
ここでは、図5のプロセスA,B,Cを図9の方法に従ってスケジューリングする場合を考える。この場合、合計ワーキングセットサイズの変化はグラフ136のようになる。
1番目の期間の合計ワーキングセットサイズはA1+B1+C1=10GiBである。2番目の期間の合計ワーキングセットサイズはA2+C2=11GiBであり、スワップアウト量はB2=1GiBである。3番目の期間の合計ワーキングセットサイズはA3+C3=10GiBである。4番目の期間の合計ワーキングセットサイズはA4+C4=10GiBである。5番目の期間の合計ワーキングセットサイズはB2+C5=10GiBであり、スワップアウト量はA5=2GiBである。
6番目の期間の合計ワーキングセットサイズはB3+C6=9GiBである。7番目の期間の合計ワーキングセットサイズはA5+B4+C7=7GiBである。8番目の期間の合計ワーキングセットサイズはA6+B5+C8=10GiBである。9番目の期間の合計ワーキングセットサイズはA7+B6+C9=10GiBである。10番目の期間の合計ワーキングセットサイズはB7+C10=10GiBであり、スワップアウト量はA8=3GiBである。11番目の期間の合計ワーキングセットサイズはA8+B8=5GiBである。12番目の期間の合計ワーキングセットサイズはA9+B9=6GiBである。13番目の期間の合計ワーキングセットサイズはA10+B10=3GiBである。
このように、各時点のワーキングセットサイズに応じて同時実行プロセス数を可変にすることで、合計ワーキングセットサイズがRAM102の記憶容量を大きく超えることが抑制されると共に、RAM102の空き領域が削減される。また、できる限り同じプロセスが連続で実行されることでスワップアウト量が小さくなると共に、少数回のスワップ処理によって連続停止時間が極端に長いプロセスが生じないようになっている。
第2の実施の形態の情報処理装置100によれば、時間幅Δt周期で各プロセスの最新のワーキングセットサイズが取得され、ワーキングセットサイズに応じて次のΔt時間における実行対象プロセスと停止対象プロセスとが決定される。
このとき、実行対象プロセスの合計ワーキングセットサイズが閾値を超えないようにすることで、スラッシングを抑制しメモリアクセスを効率化できる。また、実行対象プロセスの合計ワーキングセットサイズが閾値を超えない範囲で大きくなるようにすることで、リソース使用率を向上させて実行時間を短縮することができる。また、スワップアウト量が小さくなるようにすることで、HDD103へのアクセスを抑制しページ置換のオーバヘッドを削減することができる。また、連続停止時間が長いプロセスについてはスワップインを行うことで、複数のプロセスの間の公平を図ることができる。このように、メモリアクセスが効率化され、複数のプロセス全てが終了するまでの実行時間を短縮できる。
なお、第2の実施の形態ではプロセス単位で実行と停止の制御を行ったが、ジョブ単位で実行と停止の制御を行うことも可能である。ジョブは、プロセスよりも大きい処理単位であり、1つのアプリケーションソフトウェアとして機能するために協調して動作する一連のプロセスの集合である。この場合、OS内またはOS外のジョブスケジューラが、各ジョブに含まれるプロセスのワーキングセットサイズに基づいて、実行対象ジョブとスワップ対象ジョブとを判定することが考えられる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の内容については説明を省略することがある。
第3の実施の形態は、スワップ対象プロセスの選択方法が第2の実施の形態と異なる。第3の実施の形態のプロセス選択方法は、科学技術計算を行う情報処理装置に特に有用である。第3の実施の形態の情報処理装置は、図2,3に示した第2の実施の形態の情報処理装置100と同様のモジュール構成によって実現することができる。以下では、図2,3と同様の符号を用いて第3の実施の形態を説明する。
図11は、科学技術計算におけるRAM使用量の変化例を示す図である。
複数の情報処理装置を使用する科学技術計算では、図11に示すような手順で計算が行われることが多い。ステージ1では、データ保持用のメモリ領域が獲得される。ステージ2では、通信用のメモリ領域が獲得される。ステージ3では、情報処理装置の間で通信が行われる。ステージ4では、ステージ2で獲得した通信用のメモリ領域が解放される。ステージ5では、演算用のメモリ領域が獲得される。ステージ6では、ステージ3で受信したデータおよびステージ5で獲得した演算用のメモリ領域を用いて、演算が行われる。なお、ステージ2〜7は2回以上繰り返し実行されることがある。すなわち、ステージ7の次にステージ2に戻って、ステージ2〜7が再度実行されることがある。ステージ7では、ステージ5で獲得した演算用のメモリ領域が解放される。ステージ8では、ステージ1で獲得したデータ用のメモリ領域が解放される。
この場合におけるメモリ使用量の変化はグラフ137のようになる。ステージ1ではメモリ使用量が増加する。ステージ2ではメモリ使用量が更に増加する。ステージ3ではメモリ使用量はあまり変化しない。ステージ4ではメモリ使用量が減少する。ステージ5ではメモリ使用量が再度増加する。ステージ6ではメモリ使用量はあまり変化しない。ステージ7ではメモリ使用量が減少する。ステージ8ではメモリ使用量が更に減少する。
グラフ137に示すように科学技術計算では、メモリ使用量が大きく減少した後にメモリ使用量が再び大きく増加することがある。すなわち、科学技術計算を行うプロセスでは、ワーキングセットサイズが大きく減少した後にワーキングセットサイズが再び大きく増加することがある。このため、科学技術計算を行うプロセスのスワップアウトは、ワーキングセットサイズの減少量が大きいときに行った方が、スワップアウト量が小さくなるため好ましい。第3の実施の形態は、このような科学技術計算の性質を利用する。
図12は、第3の実施の形態のプロセス情報テーブルの例を示す図である。
プロセス情報テーブル128は、制御情報記憶部126に記憶される。プロセス情報テーブル128は、プロセス管理部124からメモリ使用効率最適化部125に提供されたプロセス情報に基づいて、メモリ使用効率最適化部125によって更新される。プロセス情報テーブル128は、プロセスID(a)、優先度(b)、状態(c)、実行回数(d)、残予定回数(e)、連続実行回数(f)、ワーキングセット現在値(g)、ワーキングセット最大値(h)、ワーキングセット変化量(i)および評価値(j)を有する。
プロセスIDの項目には、プロセスの識別子が登録される。優先度の項目には、プロセスの優先度を示す数値が登録される。数値が大きいほど優先度が高いことを示す。状態の項目には、実行状態を示す「RUN」または停止状態を示す「SWAP」が登録される。
実行回数の項目には、実行対象プロセスとして選択された回数が登録される。実行回数と時間幅Δtの積が実行時間を意味する。残予定回数の項目には、プロセスが終了するまでに実行対象プロセスとして選択されるべき回数が登録される。残予定回数と時間幅Δtの積が残り実行予定時間を意味する。各プロセスの実行予定時間は、ユーザが情報処理装置100にジョブを投入するときに指定される。メモリ使用効率最適化部125は、指定された実行予定時間を時間幅Δtで割ることで、残予定回数の初期値を算出できる。連続実行回数の項目には、連続で実行対象プロセスとして選択された回数が登録される。連続実行回数と時間幅Δtの積が連続実行時間を意味する。スワップ対象プロセスとして選択されると、連続実行回数は0に初期化される。
ワーキングセット現在値の項目には、最新のワーキングセットサイズが登録される。ワーキングセット最大値の項目には、実行対象プロセスとして選択されてからのワーキングセットサイズのうち最大のワーキングセットサイズが登録される。スワップ対象プロセスとして選択されると、ワーキングセット最大値は0に初期化される。ワーキングセット変化量の項目には、Δt時間前からのワーキングセットサイズの変化量、すなわち、最新のワーキングセットサイズとΔt時間前のワーキングセットサイズとの差が登録される。ワーキングセットサイズが増加していればワーキングセット変化量は正の値となり、減少していればワーキングセット変化量は負の値となる。スワップ対象プロセスとして選択されると、ワーキングセット変化量は0に初期化される。
評価値の項目には、後述する方法によって算出された数値が登録される。評価値が高いほど、スワップ対象プロセスとして好ましいプロセスであることを示している。
図13は、第3の実施の形態のプロセス選択の手順例を示すフローチャートである。
以下の処理は前述のステップS12で実行される。
(S30)メモリ使用効率最適化部125は、プロセス管理部124から取得したプロセス情報に基づいて、プロセス情報テーブル128の各プロセスの状態cを更新する。
(S31)メモリ使用効率最適化部125は、プロセス情報テーブル128において、状態が「RUN」である実行中プロセスそれぞれについて、実行回数dを1増加させ、残予定回数eを1減少させ、連続実行回数fを1増加させる。
(S32)メモリ使用効率最適化部125は、プロセス管理部124から取得したプロセス情報に基づいて、プロセス情報テーブル128の各プロセスのワーキングセット現在値g、ワーキングセット最大値h、ワーキングセット変化量iを更新する。ワーキングセット現在値gは、最新のワーキングセットサイズとする。ワーキングセット最大値hは、最新のワーキングセットサイズが現在の値より大きい場合に、最新のワーキングセットサイズに上書きされる。ワーキングセット変化量iは、最新のワーキングセットサイズと更新前のワーキングセット現在値gとの差とする。
(S33)メモリ使用効率最適化部125は、次のようにしてパラメータE,H,Iの値を算出する。残予定回数eが5以下である場合はE=1とし、残予定回数eが5より大きい場合はE=0とする。Hの値はワーキングセット最大値hとワーキングセット変化量iを用いて、H=i−h/iと算出する。ワーキングセット変化量iが0より小さい場合はI=1とし、ワーキングセット変化量iが0以上である場合はI=0とする。
(S34)メモリ使用効率最適化部125は、プロセス情報テーブル128に登録された各プロセスについて、優先度bと実行回数dと連続実行回数fとワーキングセット現在値gとパラメータE,H,Iを用いて、評価値jを算出する。j=(d−50×E+10×f+10×g+20×H+10×I)/bとする。
評価値jが大きいプロセスが、スワップ対象プロセスとして選択されやすくなる。ここで、優先度bが大きいほど評価値jは小さくなるため、優先度の高いプロセスが実行対象プロセスになりやすい。また、実行回数dが大きいほど評価値jは大きくなるため、実行回数の少ないプロセスが実行対象プロセスになりやすい。また、パラメータEの値が大きいほど評価値jは小さくなるため、残り実行予定時間が短いプロセスが実行対象プロセスになりやすい。また、連続実行回数fが大きいほど評価値jは大きくなるため、連続実行時間が長いプロセスがスワップ対象プロセスになりやすい。また、パラメータH,Iの値が大きいほど評価値jは大きくなるため、ワーキングセットサイズが大きく減少しているプロセスがスワップ対象プロセスになりやすい。
(S35)メモリ使用効率最適化部125は、全プロセスの集合から実行対象プロセスの集合の候補を求める。求める候補は、全プロセスの集合に対するべき集合に相当する。例えば、プロセスA,B,Cが存在する場合、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}の7個の候補が算出される。
(S36)メモリ使用効率最適化部125は、ステップS35で求めた各候補について、ワーキングセット最大値hを合計した合計ワーキングセット最大値を算出する。
(S37)メモリ使用効率最適化部125は、ステップS35で求めた候補のうち、ステップS36で算出した合計ワーキングセット最大値がRAM102の記憶容量を超える候補を除外する。これにより、スラッシングが発生する可能性の高い候補が除外される。
(S38)メモリ使用効率最適化部125は、ステップS37で絞り込んだ各候補について、実行対象プロセスの集合に対する補集合であるスワップ対象プロセスを特定する。そして、メモリ使用効率最適化部125は、各候補について、スワップ対象プロセスの評価値jを合計した合計評価値を算出する。
(S39)メモリ使用効率最適化部125は、ステップS37で絞り込んだ候補のうち、ステップS38で算出した合計評価値が最大の候補を選択する。メモリ使用効率最適化部125は、選択した候補に対応するスワップ対象プロセスの集合を採用する。
(S40)メモリ使用効率最適化部125は、プロセス情報テーブル128において、スワップ対象プロセスの連続実行回数f、ワーキングセット最大値h、ワーキングセット変化量iおよび評価値jを0に初期化する。
第3の実施の形態の情報処理装置によれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、科学技術計算の特性を利用して、各プロセスについて精度の高い評価値を算出することができる。よって、メモリアクセスが効率化されるように、スワップ対象プロセスを適切に選択することができる。
10 情報処理装置
11 処理部
11a,11b,11c プロセッサ
12 メモリ
13 ストレージ装置
14a,14b,14c プロセス
15a,15b,15c ワーキングセットサイズ

Claims (8)

  1. 複数のプロセッサを含む処理部と、
    前記複数のプロセッサを用いて並列に実行可能な複数のプロセスに割り当てられたアドレス空間に含まれるページのうち一部のページのデータを記憶するメモリと、
    前記メモリに記憶されていないページのデータを退避するストレージ装置とを有し、
    前記処理部は、前記複数のプロセスそれぞれについて単位時間に使用されたページの量を示すワーキングセットサイズを取得し、前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、停止中のプロセスに対応するページのデータが前記メモリから前記ストレージ装置に退避されるよう制御する、
    情報処理装置。
  2. 前記処理部は、前記所定時間毎に停止するプロセスの選択を繰り返し行い、
    前記停止するプロセスの選択では、前記複数のプロセスそれぞれの連続停止時間を取得し、前記連続停止時間が基準値を超えるプロセスの選択の優先度を下げる、
    請求項1記載の情報処理装置。
  3. 前記処理部は、停止するプロセスの候補それぞれについて、当該停止するプロセス以外のプロセスのワーキングセットサイズを合計した使用サイズを算出し、
    前記一部のプロセスの選択では、前記停止するプロセスの候補のうち前記使用サイズが前記閾値を超えない範囲で前記使用サイズが大きい候補の選択の優先度を上げる、
    請求項1記載の情報処理装置。
  4. 前記一部のプロセスの選択では、前記複数のプロセスのうち実行中のプロセスであってワーキングセットサイズが大きいプロセスの選択の優先度を下げる、
    請求項1記載の情報処理装置。
  5. 前記処理部は、前記複数のプロセスのワーキングセットサイズの変化を監視し、
    前記一部のプロセスの選択では、前記複数のプロセスのうちワーキングセットサイズの減少量が大きいプロセスの選択の優先度を上げる、
    請求項1記載の情報処理装置。
  6. 前記閾値は、前記メモリの記憶容量または前記記憶容量に応じて決定される値である、
    請求項1記載の情報処理装置。
  7. コンピュータが実行するプロセス管理方法であって、
    前記コンピュータが有する複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれについて、当該プロセスに割り当てられたアドレス空間に含まれるページのうち単位時間に使用されたページの量を示すワーキングセットサイズを取得し、
    前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、
    停止中のプロセスに対応するページのデータが、前記コンピュータが有するメモリから前記コンピュータが有するストレージ装置に退避されるよう制御する、
    プロセス管理方法。
  8. コンピュータに、
    前記コンピュータが有する複数のプロセッサを用いて並列に実行可能な複数のプロセスそれぞれについて、当該プロセスに割り当てられたアドレス空間に含まれるページのうち単位時間に使用されたページの量を示すワーキングセットサイズを取得し、
    前記複数のプロセスのワーキングセットサイズの合計が閾値を超える場合、前記複数のプロセスのうち一部のプロセスを選択して前記選択したプロセスを所定時間停止させ、
    停止中のプロセスに対応するページのデータが、前記コンピュータが有するメモリから前記コンピュータが有するストレージ装置に退避されるよう制御する、
    処理を実行させるプロセス管理プログラム。
JP2017161226A 2017-08-24 2017-08-24 情報処理装置、プロセス管理方法およびプロセス管理プログラム Active JP7007557B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017161226A JP7007557B2 (ja) 2017-08-24 2017-08-24 情報処理装置、プロセス管理方法およびプロセス管理プログラム
US16/107,336 US10996977B2 (en) 2017-08-24 2018-08-21 Information processing apparatus and process management method that control a number of processes executed in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017161226A JP7007557B2 (ja) 2017-08-24 2017-08-24 情報処理装置、プロセス管理方法およびプロセス管理プログラム

Publications (2)

Publication Number Publication Date
JP2019040343A true JP2019040343A (ja) 2019-03-14
JP7007557B2 JP7007557B2 (ja) 2022-01-24

Family

ID=65435195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017161226A Active JP7007557B2 (ja) 2017-08-24 2017-08-24 情報処理装置、プロセス管理方法およびプロセス管理プログラム

Country Status (2)

Country Link
US (1) US10996977B2 (ja)
JP (1) JP7007557B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110780996B (zh) * 2019-09-27 2022-07-08 广州视源电子科技股份有限公司 进程优化方法、装置、存储介质和计算机设备
US11200091B2 (en) * 2020-02-03 2021-12-14 Dell Products L.P. Adaptive memory optimization for thin clients

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02193248A (ja) * 1989-01-23 1990-07-30 Hitachi Ltd 実記憶管理方法
JP2000137692A (ja) * 1998-10-30 2000-05-16 Toshiba Corp 分散ノード間負荷分散方式
JP2003233532A (ja) * 2002-02-06 2003-08-22 Nec Corp メモリ管理方法及び計算機システム並びにプログラム
US20060004977A1 (en) * 2004-06-30 2006-01-05 Joefon Jann Autonomically tuning the virtual memory subsystem of a computer operating system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59207479A (ja) 1983-05-11 1984-11-24 Hitachi Ltd 主記憶制御方式
JPH0253150A (ja) 1988-08-17 1990-02-22 Nec Corp メモリ割り当て量調査方式
CA1329432C (en) * 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
US9128843B2 (en) * 2012-10-11 2015-09-08 Industrial Technology Research Institute Method and computer system for memory management on virtual machine system
KR102011135B1 (ko) * 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
JP2015114750A (ja) * 2013-12-10 2015-06-22 富士通株式会社 調査用プログラム,情報処理装置及び情報処理方法
JP6244949B2 (ja) * 2014-01-31 2017-12-13 富士通株式会社 情報処理装置、制御方法、および制御プログラム
JP2016038907A (ja) * 2014-08-07 2016-03-22 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US10310893B2 (en) * 2016-04-05 2019-06-04 Microsoft Technology Licensing, Llc Managing container pause and resume

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02193248A (ja) * 1989-01-23 1990-07-30 Hitachi Ltd 実記憶管理方法
JP2000137692A (ja) * 1998-10-30 2000-05-16 Toshiba Corp 分散ノード間負荷分散方式
JP2003233532A (ja) * 2002-02-06 2003-08-22 Nec Corp メモリ管理方法及び計算機システム並びにプログラム
US20060004977A1 (en) * 2004-06-30 2006-01-05 Joefon Jann Autonomically tuning the virtual memory subsystem of a computer operating system

Also Published As

Publication number Publication date
US20190065239A1 (en) 2019-02-28
US10996977B2 (en) 2021-05-04
JP7007557B2 (ja) 2022-01-24

Similar Documents

Publication Publication Date Title
US9760300B2 (en) Dynamic memory allocation and relocation to create low power regions
US9852008B2 (en) Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system
JP5363646B2 (ja) 最適化仮想マシンマイグレーション機構
US9311228B2 (en) Power reduction in server memory system
JP6075226B2 (ja) プログラム、仮想マシン管理方法および情報処理装置
US9823875B2 (en) Transparent hybrid data storage
CN108228482B (zh) 用于管理存储系统中的缓存设备的方法和系统
KR102469927B1 (ko) 분할 메모리 관리장치 및 방법
JP6300632B2 (ja) 情報処理装置、負荷制御方法および負荷制御プログラム
JP4711269B2 (ja) メモリ電力制御方法及びメモリ電力制御プログラム
JP7007557B2 (ja) 情報処理装置、プロセス管理方法およびプロセス管理プログラム
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
US10754547B2 (en) Apparatus for managing disaggregated memory and method thereof
US20160170474A1 (en) Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
JP2019021185A (ja) 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム
JP6259388B2 (ja) 電源制御装置、サーバ仮想化システム、および、電源制御方法
JP6217008B2 (ja) 電子機器、制御方法、及び、プログラム
CN112654965A (zh) 动态模块的外部分页和交换
JP2019164659A (ja) 情報処理装置、情報処理方法およびプログラム
JP2019164630A (ja) 推定装置、推定方法およびプログラム
JP7104327B2 (ja) 情報処理装置、仮想マシン管理プログラムおよび仮想マシン管理方法
JP2009282664A (ja) ストレージデータ管理システム及びストレージデータ管理プログラム
US11822408B2 (en) Computer-readable recording medium storing program and management method
JP5412902B2 (ja) ストレージシステム
JP2012043249A (ja) メモリの制御装置、及び制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200514

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200529

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210716

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R150 Certificate of patent or registration of utility model

Ref document number: 7007557

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150