JP2012242877A - メモリ管理装置、メモリ管理方法、および、制御プログラム - Google Patents
メモリ管理装置、メモリ管理方法、および、制御プログラム Download PDFInfo
- Publication number
- JP2012242877A JP2012242877A JP2011109045A JP2011109045A JP2012242877A JP 2012242877 A JP2012242877 A JP 2012242877A JP 2011109045 A JP2011109045 A JP 2011109045A JP 2011109045 A JP2011109045 A JP 2011109045A JP 2012242877 A JP2012242877 A JP 2012242877A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- storage device
- program
- instruction
- main storage
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
【課題】システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑える。
【解決手段】ステップS51において、命令部分の割り当てが要求されたと判定され、ステップS52において、割当対象プログラムの命令部分のメモリ使用量が上限を超えると判定された場合、ステップS53において、割当対象プログラムの命令部分が使用しているメモリ領域が解放され、ステップS54において、命令部分のメモリの割り当てが行われる。ステップS52において、割当対象プログラムの命令部分のメモリ使用量が上限を超えないと判定された場合、ステップS53の処理はスキップされる。ステップS51において、データ部分の割り当てが要求されたと判定された場合、ステップS55において、通常のメモリ割り当て処理が行われる。本技術は、例えば、組み込み機器に適用できる。
【選択図】図5
【解決手段】ステップS51において、命令部分の割り当てが要求されたと判定され、ステップS52において、割当対象プログラムの命令部分のメモリ使用量が上限を超えると判定された場合、ステップS53において、割当対象プログラムの命令部分が使用しているメモリ領域が解放され、ステップS54において、命令部分のメモリの割り当てが行われる。ステップS52において、割当対象プログラムの命令部分のメモリ使用量が上限を超えないと判定された場合、ステップS53の処理はスキップされる。ステップS51において、データ部分の割り当てが要求されたと判定された場合、ステップS55において、通常のメモリ割り当て処理が行われる。本技術は、例えば、組み込み機器に適用できる。
【選択図】図5
Description
本技術は、メモリ管理装置、メモリ管理方法、および、制御プログラムに関し、特に、メモリ解放処理の実行頻度を抑えるようにしたメモリ管理装置、メモリ管理方法、および、制御プログラムに関する。
従来、プログラム単位でメモリ(主記憶装置)の使用量を制限する技術として、例えば、Linuxのcgroupが知られている(例えば、非特許文献1参照)。
cgroupを用いると、システムで実行されるプログラム(プロセス)を複数のグループに分け、グループ毎にメモリの使用量の上限を設定することができる。
図1は、cgroupを用いてグループ毎にメモリの使用量を制限するようにしたシステムにおいて、1つのプログラムからなるグループのメモリ使用量の推移の例を示すグラフである。横軸は時間を示し、縦軸はメモリ使用量を示している。また、図内のL1は、このグループのメモリ使用量の上限値を示している。
なお、この例は、補助記憶装置が書き込み不可であり、メモリ上のデータを補助記憶装置に退避できない場合の例を示している。
図1に示されるように、システムの稼働時間が長くなるにつれて、当該グループのメモリ使用量は増加する。そして、時刻t1においてメモリ使用量が上限値L1に達すると、システム全体としてはメモリの空き領域が存在しても、例えば、当該グループ内のプログラムの命令部分など破棄可能なメモリ領域を解放するなどにより、必要なメモリ領域を確保するメモリ解放処理が実行される。なお、グループ内に複数のプログラムが含まれる場合には、メモリ解放処理として、例えば、重要度の低いプログラムを強制終了する場合もある。そして、以降、メモリ使用量が上限値L1に達する度に、メモリ解放処理の実行が繰り返される。
図2は、図1のメモリ使用量の推移を、プログラムの命令部分とそれ以外のデータ部分とに分けて示したグラフである。
図2に示されるように、メモリ解放処理が実行される度に、データ部分のメモリ使用量はほぼ変わらずに、命令部分のメモリ使用量が削減される。これは、データ部分は、値が書き換えられると破棄することができず、メモリに保持しておく必要があるため、破棄することが可能な命令部分のメモリ領域が解放されることによる。
また、cgroupを用いたシステムでは、システム全体のメモリ使用量が所定の上限値に達した場合にも、必要なメモリ領域を確保するために、メモリ解放処理が実行される。
Balbir Singh, 他1名, "Containers: Challenges with the memory resource controller and its performance", Proceedings of the Linux Symposium Volume Two, Canada, June 27th-30th, 2007, p.209-222
メモリ解放処理の実行時には、システム全体がその処理に費やされるため、例えば、システムのレスポンスが低下したり、動作が不安定(例えば、画像や音声の乱れ等)になったりする。特に、組み込み機器など搭載するメモリの容量が小さい場合には、メモリ解放処理の実行頻度が高くなり、システムの能力が大きく低下する。
本技術は、システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑えることができるようにするものである。
本技術の一側面のメモリ管理装置は、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を備える。
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限させることができる。
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部をさらに設けることができる。
前記メモリ管理部には、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定させることができる。
前記メモリ管理部には、将来実行される前記命令部分を予測させ、当該命令部分が必要になる前に前記主記憶装置に配置させることができる。
本技術の一側面のメモリ管理方法は、メモリ管理装置が、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するステップを含む。
本技術の一側面のプログラムは、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するステップを含む処理をコンピュータに実行させる。
本技術の一側面においては、補助記憶装置に格納されているプログラムの主記憶装置への配置が制御されるとともに、プログラムの命令部分が前記主記憶装置に配置する容量を制限される。
本技術の一側面によれば、システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑えることができる。
以下、本技術を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.実施の形態
2.変形例
1.実施の形態
2.変形例
<1.実施の形態>
[情報処理システムの構成例]
図3は、本技術を適用した情報処理システム101の一実施の形態を示すブロック図である。
[情報処理システムの構成例]
図3は、本技術を適用した情報処理システム101の一実施の形態を示すブロック図である。
情報処理システム101は、例えば、テレビジョン受像機、携帯電話機等の各種の組み込み機器や、コンピュータ等に適用可能なシステムである。
なお、以下、情報処理システム101が適用される装置やシステム等を、単にシステムと称する。
情報処理システム101は、メモリマネージャ111、補助記憶装置112、および、主記憶装置113を含むように構成される。
メモリマネージャ111は、情報処理システム101のメモリ管理を行う。例えば、メモリマネージャ111は、補助記憶装置112に格納されているプログラムやデータの主記憶装置113への配置を制御する。
なお、メモリマネージャ111は、ソフトウエアまたはハードウエアのいずれで実現してもよいし、あるいは、その両方の組み合わせにより実現してもよい。ソフトウエアにより実現される場合、例えば、メモリマネージャ111は、図示せぬCPU(Central Processing Unit)等のプロセッサにより実行されるOS(オペレーティングシステム)の機能の一部として実現される。一方、ハードウエアにより実現される場合、メモリマネージャ111は、例えば、メモリ管理ユニット(MMU)等により実現される。
補助記憶装置112は、例えば、ROM(Read Only Memory)、ハードディスクドライブ、フラッシュメモリ等、主記憶装置113より容量が大きく、一般にアクセス速度が遅い記憶装置により構成される。
なお、補助記憶装置112は、データの書き込みが可能なものであってもよいし、データの書き込みができないものであってもよい。
主記憶装置113は、例えば、RAM(Random Access Memory)等、データの書き込みが可能な記憶装置により構成される。
なお、以下、主記憶装置113を単にメモリとも称する。また、以下、主記憶装置113の領域をメモリ領域、使用量をメモリ使用量とも称する。
ここで、メモリマネージャ111の機能の構成例について説明する。メモリマネージャ111は、設定部121およびメモリ管理部122を含むように構成される。
設定部121は、外部から入力される情報等に基づいて、補助記憶装置112に格納されている各プログラムの命令部分を主記憶装置113に配置することができる容量の上限値(以下、最大命令メモリ割当量と称する)をプログラム毎に設定する。設定部121は、設定した最大命令メモリ割当量をメモリ管理部122に通知したり、主記憶装置113に記憶させたりする。
メモリ管理部122は、図示せぬCPU等のプロセッサにより実行されるプログラムからの要求や、主記憶装置113の使用状況等に応じて、補助記憶装置112に格納されているプログラムやデータの主記憶装置113への配置を制御する。例えば、メモリ管理部122は、必要に応じて、補助記憶装置112に格納されているプログラムやデータを主記憶装置113に配置したり、主記憶装置113に格納されているプログラムやデータを破棄したりする。また、例えば、メモリ管理部122は、補助記憶装置112が書き込み可能な場合、必要に応じて、主記憶装置113に格納されているプログラムやデータを補助記憶装置112に退避させる。
さらに、メモリ管理部122は、補助記憶装置112に格納されている各プログラムの命令部分について、主記憶装置113に配置する容量が最大命令メモリ割当量以下になるように制限する。
[最大命令メモリ割当量設定処理]
次に、図4のフローチャートを参照して、情報処理システム101により実行される最大命令メモリ割当量設定処理について説明する。
次に、図4のフローチャートを参照して、情報処理システム101により実行される最大命令メモリ割当量設定処理について説明する。
なお、この処理は、例えば、情報処理システム101の起動時などの所定のタイミング、あるいは、最大命令メモリ割当量の設定値がメモリマネージャ111に入力されたとき等に開始される。
ステップS1において、設定部121は、設定条件等を取得する。
ステップS2において、設定部121は、取得した設定条件等に基づいて、プログラム毎に最大命令メモリ割当量を設定する。そして、設定部121は、設定した最大命令メモリ割当量をメモリ管理部122に通知したり、主記憶装置113に記憶させたりする。
その後、最大命令メモリ割当量設定処理は終了する。
ここで、最大命令メモリ割当量の設定方法の具体例について説明する。
例えば、設定部121は、情報処理システム101の起動時に、各プログラムの最大命令メモリ割当量の初期値を補助記憶装置112から読み込む。そして、設定部121は、各プログラムの最大命令メモリ割当量を初期値に設定する。
各プログラムの最大命令メモリ割当量の初期値は、例えば、各プログラムの優先度や規模などに基づいて設定される。例えば、優先して実行する必要があるプログラムについては、初期値が大きい値に設定され、実行を遅らせることが可能なプログラムについては、初期値が小さい値に設定される。また、例えば、規模が大きいプログラムについては、初期値が大きい値に設定され、規模が小さいプログラムについては、初期値が小さい値に設定される。
また、例えば、設定部121は、実行中のプログラムからの要求により、当該プログラムの最大命令メモリ割当量を変更する。例えば、各プログラムは、実行される頻度が高くなると予測される場合に、最大命令メモリ割当量を増やすように要求し、実行される頻度が低くなると予測される場合に、最大命令メモリ割当量を減らすように要求する。
さらに、例えば、設定部121は、情報処理システム101の状態や動作環境等に基づいて、各プログラムの最大命令メモリ割当量を変更する。例えば、設定部121は、所定の機能が実行される場合に、その機能を実現するのに必要なプログラムの最大命令メモリ割当量を増やし、必要のないプログラムの最大命令メモリ割当量を減らす。あるいは、例えば、設定部121は、所定の時刻になったときに、その時刻付近に実行されることが想定される機能を実現するのに必要なプログラムの最大命令メモリ割当量を増やし、必要のないプログラムの最大命令メモリ割当量を減らす。
なお、以上に述べた最大命令メモリ割当量を変更する条件は、その一例であり、他の条件に基づいて変更するようにしてもよい。
また、最大命令メモリ割当量を動的に設定せずに、固定値とすることも可能である。
[メモリ割り当て処理]
次に、図5のフローチャートを参照して、情報処理システム101により実行されるメモリ割り当て処理について説明する。なお、この処理は、例えば、メモリ管理部122に対してメモリの割り当てが要求されたとき開始される。このメモリ割り当ての要求は、例えば、実行中のプログラムが明示的に行ったり、あるいは、OSなどがプログラムを介さずに行ったりする場合がある。
次に、図5のフローチャートを参照して、情報処理システム101により実行されるメモリ割り当て処理について説明する。なお、この処理は、例えば、メモリ管理部122に対してメモリの割り当てが要求されたとき開始される。このメモリ割り当ての要求は、例えば、実行中のプログラムが明示的に行ったり、あるいは、OSなどがプログラムを介さずに行ったりする場合がある。
また、以下、メモリの割り当てを行う対象となるプログラムを割当対象プログラムと称する。
ステップS51において、メモリ管理部122は、命令部分の割り当てが要求されたか否かを判定する。命令部分の割り当てが要求されたと判定された場合、処理はステップS52に進む。
ステップS52において、メモリ管理部122は、割当対象プログラムの命令部分のメモリ使用量が上限を超えるか否かを判定する。具体的には、メモリ管理部122は、割り当てが要求された命令部分の容量と、現在の割当対象プログラムの命令部分のメモリ使用量(割当対象プログラムの命令部分が主記憶装置113に配置されている容量)の合計値を求める。メモリ管理部122は、求めた合計値が割当対象プログラムの最大命令メモリ割当量を超える場合、割当対象プログラムの命令部分のメモリ使用量が上限を超えると判定し、処理はステップS53に進む。
ステップS53において、メモリ管理部122は、割当対象プログラムの命令部分が使用しているメモリ領域を解放する。具体的には、メモリ管理部122は、割当対象プログラムのメモリ割当量の残量が、割り当てが要求された命令部分の容量以上となるように、割当対象プログラムの命令部分が使用しているメモリ領域の少なくとも一部を解放する。ここで、メモリ割当量の残量とは、割当対象プログラムの最大命令メモリ割当量からメモリ使用量を引いた値である。
なお、このとき解放するメモリ領域を決定するためのアルゴリズムには、例えば、LRU(Least Recently Used)やリングバッファ等、任意のものを採用することができる。
その後、処理はステップS54に進む。
一方、ステップS52において、割当対象プログラムの命令部分のメモリ使用量が上限を超えないと判定された場合、ステップS53の処理はスキップされ、処理はステップS54に進む。
ステップS54において、メモリ管理部122は、命令部分のメモリの割り当てを行う。すなわち、メモリ管理部122は、割当対象プログラムの割り当てが要求された命令部分を補助記憶装置112から読み出し、主記憶装置113の空き領域に配置する。
その後、処理はステップS56に進む。
一方、ステップS51において、データ部分の割り当てが要求されていると判定された場合、処理はステップS55に進む。
ステップS55において、メモリ管理部122は、通常のメモリ割り当て処理を行う。例えば、割当対象プログラムの割り当てが要求されたデータ部分の容量が、主記憶装置113の空き容量以下である場合、メモリ管理部122は、そのデータ部分を補助記憶装置112から読み出し、主記憶装置113の空き領域に配置する。
一方、割り当てが要求されたデータ部分の容量が、主記憶装置113の空き容量を超える場合、メモリ管理部122は、主記憶装置113の空き容量が、そのデータ部分の容量以上になるように、主記憶装置113の使用領域の解放を行う。
なお、このときメモリ領域を解放するアルゴリズムには、例えば、LRU(Least Recently Used)、FIFO(First In First Out)等、任意のものを採用することができる。
そして、メモリ管理部122は、割り当てが要求されたデータ部分を補助記憶装置112から読み出し、主記憶装置113の空き領域に配置する。
その後、処理はステップS56に進む。
ステップS56において、メモリ管理部122は、メモリの使用状態を示す情報を更新する。例えば、メモリ管理部122は、主記憶装置113の使用領域および空き領域を示す情報を更新したり、各プログラムの命令部分のメモリ使用量を示す情報を更新したりする。
その後、メモリ割り当て処理は終了する。
ここで、図5のメモリ割り当て処理の具体例として、図6および図7を参照して、補助記憶装置112に格納されているプログラムPの命令部分に対してメモリの割り当てを行う場合について説明する。
なお、プログラムPの命令部分は、命令ブロック1乃至6の6つのブロックに分割されるものとする。この命令ブロックは、例えば、仮想記憶システムにおけるページに相当し、全て同じサイズであり、プログラムPの複数の命令を含むものとする。
さらに、以下、命令ブロック1から昇順に逐次実行されるものとする。また、プログラムPの最大命令メモリ割当量が3ブロックに設定されているものとする。
例えば、図7の左端に示されるように、命令ブロック1乃至3が主記憶装置113に配置されるまでは最大命令メモリ割当量を超えないため、命令ブロック1、命令ブロック2、命令ブロック3が、順に主記憶装置113に配置される。
そして、命令ブロック4を主記憶装置113に配置する場合、そのまま配置すれば、プログラムPの命令部分のメモリ使用量が最大命令メモリ割当量を超えてしまう。そこで、例えば、最初に主記憶装置113に配置された命令ブロック1の領域が解放され、解放された領域が命令ブロック4に割り当てられる。その結果、図7の中央に示されるように、命令ブロック2乃至4が主記憶装置113に配置された状態となる。
同様にして、命令ブロック2の領域が解放され、解放された領域が命令ブロック5に割り当てられ、命令ブロック3の領域が解放され、解放された領域が命令ブロック6に割り当てられる。そして、最終的に、図7の右端に示されるように、命令ブロック4乃至6が主記憶装置113に配置された状態となる。
以上のようにして、プログラム毎に命令部分のメモリ使用量が制限され、命令部分以外のデータ部分については、従来のようにシステム全体でメモリ使用量が制限される。その結果、システム全体のメモリ使用量を抑制することができ、メモリ解放処理の実行頻度を抑えることができる。
これについて、図8乃至図10を参照して説明する。
図8は、上述した図1でメモリ使用量の推移を示したグループに含まれるプログラム(以下、比較対象プログラムと称する)を、情報処理システム101を適用したシステムで実行させた場合のメモリ使用量の推移の例を示している。図9は、上述した図2と同様のグラフであり、図8のメモリ使用量の推移を、命令部分とそれ以外のデータ部分とに分けて示している。図10は、図1のグラフと図8のグラフとを比較するものであり、cgroupを用いたシステムと情報処理システム101を用いたシステムにおける比較対象プログラムのメモリ使用量の推移を比較したグラフである。
なお、図8乃至図10のL1は、図1および図2のL1と同じ値である。また、図9のL2は、比較対象プログラムの命令部分のメモリ使用量の上限値を示している。さらに、図10の実線のグラフは、情報処理システム101を用いたシステムにおける比較対象プログラムのメモリ使用量の推移を示し、点線のグラフは、cgroupを用いたシステムにおける比較対象プログラムからなるグループのメモリ使用量の推移を示している。
なお、この例は、補助記憶装置112が書き込み不可であり、主記憶装置113上のデータを補助記憶装置112に退避できない場合の例を示している。
図8乃至図10に示されるように、システムの稼働時間が長くなるにつれて、比較対象プログラムのメモリ使用量は増加する。ただし、時刻t11において、命令部分のメモリ使用量が上限値L2に達すると、命令部分のメモリ使用量がそれ以上増加しなくなる。そのため、cgroupを用いたシステムと比較して、比較対象プログラムのメモリ使用量の増加が抑制される。
このように、情報処理システム101を用いたシステムでは、プログラム毎にメモリ使用量の増加を抑制することにより、システム全体のメモリ使用量を抑制し、メモリ解放処理の実行頻度を抑制することができる。従って、メモリ解放処理の実行によるシステムの能力の低下を抑制することができる。
その結果、例えば、一時的にシステムが高負荷になり、システムのレスポンスが低下したり、動作が不安定(例えば、画像や音声の乱れ等)になったりすることを防止することができる。
また、例えば、システムの起動時のプログラムの起動順が決まっている場合、先に起動する必要があるが、優先度の低いプログラムの最大命令メモリ割当量を小さく設定することにより、システムの起動時に当該プログラムがメモリを占有し、メモリ解放処理が実行され、起動が遅くなることを回避することができる。
さらに、主記憶装置113に命令部分の以外のデータをより多く配置することができ、システムの動作を高速化したり、安定化したりすることができる。
また、cgroupを用いたシステムでは、上述したように、グループのメモリ使用量が制限値を越えた場合、たとえシステム全体としてはメモリの空き領域が存在しても、当該グループ内のプログラムの強制終了などのエラー処理が実行されてしまう。
一方、情報処理システム101では、プログラムの命令部分のメモリ使用量が制限値を超えても、主記憶装置113に空き領域があれば、当該プログラムのデータ部分については、主記憶装置113に配置することができ、上述したようなエラー処理は実行されない。その結果、システムの動作を安定化することができる。
さらに、情報処理システム101では、最大命令メモリ割当量をプログラム毎に適切な値に設定することができ、命令部分の再配置の実行頻度を抑え、システムの能力の低下を抑制することができる。また、上述したように最大命令メモリ割当量を動的に変更することにより、さらに命令部分の再配置の実行頻度を抑え、システムの能力の低下を抑制することができる。
<2.変形例>
以下、本技術の実施の形態の変形例について説明する。
以下、本技術の実施の形態の変形例について説明する。
[変形例1]
以上の説明では、プログラム毎にそれぞれ最大命令メモリ割当量を設定する例を示したが、例えば、各プログラムを複数のグループに分類し、グループ毎に最大命令メモリ割当量を設定するようにしてもよい。すなわち、グループ毎に、グループに属するプログラム全体の命令部分のメモリ使用量が、最大命令メモリ割当量を超えないように制限するようにしてもよい。
以上の説明では、プログラム毎にそれぞれ最大命令メモリ割当量を設定する例を示したが、例えば、各プログラムを複数のグループに分類し、グループ毎に最大命令メモリ割当量を設定するようにしてもよい。すなわち、グループ毎に、グループに属するプログラム全体の命令部分のメモリ使用量が、最大命令メモリ割当量を超えないように制限するようにしてもよい。
また、例えば、システム全体で1つの最大命令メモリ割当量を設定するようにしてもよい。すなわち、システムで実行されるプログラム全体の命令部分のメモリ使用量が、最大命令メモリ割当量を超えないように制限するようにしてもよい。
[変形例2]
また、プログラム毎または上述したグループ毎に、命令部分を主記憶装置113に配置するアルゴリズム(命令部分のメモリ割り当てのアルゴリズム)を設定するようにしてもよい。
また、プログラム毎または上述したグループ毎に、命令部分を主記憶装置113に配置するアルゴリズム(命令部分のメモリ割り当てのアルゴリズム)を設定するようにしてもよい。
例えば、プログラム毎またはグループ毎にアルゴリズムを使い分けて、命令部分の再配置を行う頻度を調整するようにしてもよい。
また、例えば、プログラム毎またはグループ毎にアルゴリズムを使い分けて、命令部分のメモリ領域を解放する基準(例えば、メモリ領域の使用頻度、メモリ領域が確保されている時間等)を変えるようにしてもよい。
さらに、プログラム全体が実行バイナリと共有ライブラリから構成される場合、実行バイナリの命令部分と共有ライブラリの命令部分とで、アルゴリズムを使い分けて、共有ライブラリの命令部分の再利用性を高めるようにしてもよい。
[変形例3]
また、例えば、実行速度をより速くするために、命令部分の先読みを行うようにしてもよい。すなわち、将来実行される命令部分を予測して、当該命令部分が必要になる前に補助記憶装置112から読み出し、主記憶装置113に配置するようにしてもよい。
また、例えば、実行速度をより速くするために、命令部分の先読みを行うようにしてもよい。すなわち、将来実行される命令部分を予測して、当該命令部分が必要になる前に補助記憶装置112から読み出し、主記憶装置113に配置するようにしてもよい。
なお、将来実行される命令部分の予測は、例えは、事前にシステムを動作させたときの各プログラムの命令部分の実行順を示すプロファイルを取得しておき、そのプロファイルに基づいて行うようにすることが考えられる。
[変形例4]
また、図6および図7の例では、プログラムの命令部分を、一定のサイズのブロック単位で主記憶装置113に配置する例を示したが、本技術は、主記憶装置113に配置する命令部分のブロックのサイズが一定でない場合にも適用できる。また、本技術は、例えば、命令単位、あるいは、セグメント単位など、ブロックとは異なる単位で命令部分を主記憶装置113に配置する場合にも適用できる。
また、図6および図7の例では、プログラムの命令部分を、一定のサイズのブロック単位で主記憶装置113に配置する例を示したが、本技術は、主記憶装置113に配置する命令部分のブロックのサイズが一定でない場合にも適用できる。また、本技術は、例えば、命令単位、あるいは、セグメント単位など、ブロックとは異なる単位で命令部分を主記憶装置113に配置する場合にも適用できる。
[変形例5]
さらに、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。
さらに、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。
なお、一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。その他、プログラムは、装置に組み込まれている記憶装置(例えば、補助記憶装置112)に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
また、例えば、本技術は以下のような構成も取ることができる。
(1)
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を
備えるメモリ管理装置。
(2)
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限する
前記(1)に記載のメモリ管理装置。
(3)
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部を
さらに備える前記(2)に記載のメモリ管理装置。
(4)
前記メモリ管理部は、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定する
前記(1)乃至(3)のいずれかに記載のメモリ管理装置。
(5)
前記メモリ管理部は、将来必要になる前記命令部分を予測し、当該命令部分が必要になる前に前記主記憶装置に配置する
前記(1)乃至(4)のいずれかに記載のメモリ管理装置。
(6)
メモリ管理装置が、
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含むメモリ管理方法。
(7)
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含む処理をプログラムに実行させるためのプログラム。
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を
備えるメモリ管理装置。
(2)
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限する
前記(1)に記載のメモリ管理装置。
(3)
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部を
さらに備える前記(2)に記載のメモリ管理装置。
(4)
前記メモリ管理部は、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定する
前記(1)乃至(3)のいずれかに記載のメモリ管理装置。
(5)
前記メモリ管理部は、将来必要になる前記命令部分を予測し、当該命令部分が必要になる前に前記主記憶装置に配置する
前記(1)乃至(4)のいずれかに記載のメモリ管理装置。
(6)
メモリ管理装置が、
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含むメモリ管理方法。
(7)
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含む処理をプログラムに実行させるためのプログラム。
101 情報処理システム, 111 メモリマネージャ, 112 補助記憶装置, 113 主記憶装置, 121 設定部, 122 メモリ管理部
Claims (7)
- 補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を
備えるメモリ管理装置。 - 前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限する
請求項1に記載のメモリ管理装置。 - 所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部を
さらに備える請求項2に記載のメモリ管理装置。 - 前記メモリ管理部は、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定する
請求項1に記載のメモリ管理装置。 - 前記メモリ管理部は、将来実行される前記命令部分を予測し、当該命令部分が必要になる前に前記主記憶装置に配置する
請求項1に記載のメモリ管理装置。 - メモリ管理装置が、
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含むメモリ管理方法。 - 補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含む処理をプログラムに実行させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011109045A JP2012242877A (ja) | 2011-05-16 | 2011-05-16 | メモリ管理装置、メモリ管理方法、および、制御プログラム |
US13/465,448 US20120297151A1 (en) | 2011-05-16 | 2012-05-07 | Memory management apparatus, memory management method and control program |
CN2012101426977A CN102789433A (zh) | 2011-05-16 | 2012-05-09 | 存储器管理设备、存储器管理方法以及控制程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011109045A JP2012242877A (ja) | 2011-05-16 | 2011-05-16 | メモリ管理装置、メモリ管理方法、および、制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012242877A true JP2012242877A (ja) | 2012-12-10 |
Family
ID=47154837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011109045A Withdrawn JP2012242877A (ja) | 2011-05-16 | 2011-05-16 | メモリ管理装置、メモリ管理方法、および、制御プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120297151A1 (ja) |
JP (1) | JP2012242877A (ja) |
CN (1) | CN102789433A (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9524119B2 (en) * | 2014-07-01 | 2016-12-20 | Naver Corporation | Method, system and recording medium for optimizing of mobile device |
US9678868B2 (en) | 2014-10-31 | 2017-06-13 | Xiaomi Inc. | Method and device for optimizing memory |
CN104407924B (zh) * | 2014-10-31 | 2017-11-21 | 小米科技有限责任公司 | 内存优化方法及装置 |
JP6760116B2 (ja) * | 2017-02-01 | 2020-09-23 | セイコーエプソン株式会社 | 印刷装置および印刷装置のメモリー管理方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3905023A (en) * | 1973-08-15 | 1975-09-09 | Burroughs Corp | Large scale multi-level information processing system employing improved failsaft techniques |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7143399B2 (en) * | 2003-01-29 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for prefetching memory pages during execution of a computer program |
US7206890B2 (en) * | 2004-05-19 | 2007-04-17 | Sun Microsystems, Inc. | System and method for reducing accounting overhead during memory allocation |
JP5671050B2 (ja) * | 2009-11-04 | 2015-02-18 | エスティー‐エリクソン(フランス)エスエーエスSt−Ericsson (France) Sas | ランダムアクセスメモリの動的管理 |
-
2011
- 2011-05-16 JP JP2011109045A patent/JP2012242877A/ja not_active Withdrawn
-
2012
- 2012-05-07 US US13/465,448 patent/US20120297151A1/en not_active Abandoned
- 2012-05-09 CN CN2012101426977A patent/CN102789433A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20120297151A1 (en) | 2012-11-22 |
CN102789433A (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10901802B2 (en) | Method and apparatus for implementing virtual GPU and system | |
JP5322038B2 (ja) | 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム | |
US10101910B1 (en) | Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager | |
KR101378390B1 (ko) | 공유 스택의 부분들을 할당하기 위한 시스템 및 방법 | |
US9189293B2 (en) | Computer, virtualization mechanism, and scheduling method | |
US20140075144A1 (en) | Dynamically resizable circular buffers | |
US20070118838A1 (en) | Task execution controller, task execution control method, and program | |
JP5385347B2 (ja) | メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ | |
JP5681527B2 (ja) | 電力制御装置及び電力制御方法 | |
US20120239952A1 (en) | Information processing apparatus, power control method, and recording medium | |
US10289446B1 (en) | Preserving web browser child processes by substituting a parent process with a stub process | |
CN111104208B (zh) | 进程调度管理方法、装置、计算机设备及存储介质 | |
JP2012242877A (ja) | メモリ管理装置、メモリ管理方法、および、制御プログラム | |
US10877790B2 (en) | Information processing apparatus, control method and storage medium | |
JP2012221217A (ja) | メモリ管理装置、メモリ管理方法、および、制御プログラム | |
US20120265953A1 (en) | Memory management device, memory management method, and control program | |
US20100042754A1 (en) | Data transmitting device and data transmitting method | |
US9170839B2 (en) | Method for job scheduling with prediction of upcoming job combinations | |
JP6601066B2 (ja) | 通信方法、通信装置及び通信プログラム | |
KR101513505B1 (ko) | 프로세서 및 인터럽트 처리 방법 | |
JP2008158687A (ja) | 帯域制御プログラム及びマルチプロセッサシステム | |
US20100242046A1 (en) | Multicore processor system, scheduling method, and computer program product | |
JP2011018281A (ja) | ジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラム | |
JP2015127869A (ja) | 電子機器、制御方法、及び、プログラム | |
WO2021262054A1 (en) | Method for controlling deployment of cached dependencies on one or more selected nodes in a distributed computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140805 |