JP6203937B2 - 計算機およびメモリ制御方法 - Google Patents

計算機およびメモリ制御方法 Download PDF

Info

Publication number
JP6203937B2
JP6203937B2 JP2016505979A JP2016505979A JP6203937B2 JP 6203937 B2 JP6203937 B2 JP 6203937B2 JP 2016505979 A JP2016505979 A JP 2016505979A JP 2016505979 A JP2016505979 A JP 2016505979A JP 6203937 B2 JP6203937 B2 JP 6203937B2
Authority
JP
Japan
Prior art keywords
area
swap
memory
cache
amount
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.)
Expired - Fee Related
Application number
JP2016505979A
Other languages
English (en)
Other versions
JPWO2015132877A1 (ja
Inventor
有時 高田
有時 高田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2015132877A1 publication Critical patent/JPWO2015132877A1/ja
Application granted granted Critical
Publication of JP6203937B2 publication Critical patent/JP6203937B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、概して、メモリの制御に関する。
メモリとしてDRAM(Dynamic Random Access Memory)を、記憶デバイスとしてHDD(Hard Disk Drive)を備える計算機において、HDDのI/O(Input/Output)速度は、DRAMと比較して遅い。そこで、HDD内の一部のデータをDRAMのキャッシュ領域に格納しておき、リード対象のデータがDRAMのキャッシュ領域に存在する場合、HDDからではなく、そのキャッシュ領域からデータをリードするキャッシュ技術が知られている(特許文献1)。これにより、キャッシュがヒットした場合、HDDからリードする場合と比較して、高速にデータをリードすることができる。
また、DRAMは、キャッシュ領域の他に、アプリケーションプログラムなどのデータが格納されるワーク領域を有する。DRAMの記憶領域は有限であるため、ワーク領域が不足する場合に備えて、HDDに、ワーク領域内のデータの退避先となるスワップ領域を設ける技術が知られている。
US5420998
一般的に、メモリでは、キャッシュ領域よりもワーク領域の方が優先的に確保される。スワップ領域の設けられているHDDは、上記の通りDRAMと比べてI/O速度が遅いため、スワップが発生すると、アプリケーションプログラムをHDDからワーク領域にロードする必要が生じる等の原因で、計算機の性能が低下してしまうからである。よって、できるだけスワップが発生しないようにすることが、計算機全体のパフォーマンスの低下を抑制する上で適切であると考えられる。
しかし、SSD(Solid State Drive)などの半導体記憶デバイスは、HDDと比べてI/O速度が速い。したがって、SSDなどの半導体記憶デバイス上にスワップ領域を設けた場合、できるだけスワップが発生しないようにするという考え方は、計算機全体の性能の低下を抑制する上で必ずしも適切とは限らない。
そこで本発明の目的は、メモリ上のワーク領域のサイズとキャッシュ領域のサイズとを適切に調整することにより、計算機全体の性能の低下を抑制することにある。
一実施形態に係る計算機は、第1メモリと、第1メモリよりもI/O速度が遅い第2メモリと、記第1メモリ、第2メモリ及び記憶デバイスに接続されたプロセッサとを備える。第1メモリは、ワーク領域と、記憶デバイスに対して入出力されるデータが一時格納される第1キャッシュ領域とを有する。第2メモリは、記憶デバイスに対して入出力されるデータが一時格納される第2キャッシュ領域と、ワーク領域に格納されるデータの退避先であるスワップ領域とを有する。プロセッサは、記憶デバイスに対して入出力されたデータ量である入出力量が所定の入出力量よりも大きい場合に、ワーク領域を縮小し、第1キャッシュ領域を拡大する。
本発明によれば、メモリ上のワーク領域のサイズとキャッシュ領域のサイズとを適切に調整することができ、計算機全体の性能の低下を抑制することができる。
第1の実施形態に関する計算機の動作概要を説明する模式図である。 第1の実施形態に関する計算機の構成例を示すブロック図である。 第1の実施形態に関する割当調整部の構成例を示すブロック図である。 第1の実施形態に関するポリシ情報の一例を示す。 第1の実施形態に関する稼働情報の一例を示す。 第1の実施形態に関するメモリ調整処理の一例を示すフローチャートである。 第1の実施形態に関する第1キャッシュ領域調整処理の一例を示すフローチャートである。 第1の実施形態に関するスワップ領域調整処理の一例を示すフローチャートである。 第2の実施形態に関する計算機の構成例を示すブロック図である。 第2の実施形態に係る割当調整部の構成例を示すブロック図である。 第2の実施形態に関する稼働情報の一例を示す。 第2の実施形態に関するメモリ調整処理の一例を示すフローチャートである。 第2の実施形態に関する第1キャッシュ領域調整処理の一例を示すフローチャートである。 第2の実施形態に関するスワップ領域調整処理の一例を示すフローチャートである。
以下、幾つかの実施形態について、図面を参照しながら説明する。以下において、プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
第1の実施形態
第1の実施形態は、計算機において、メモリ上のワーク領域及びキャッシュ領域、並びに、スワップ用記憶デバイス上のスワップ領域及びキャッシュ領域を調整する方法を説明する。
図1は、第1の実施形態に関する計算機1の動作概要を説明する模式図である。
計算機1は、プロセッサ3と、第1メモリ810と、第2メモリ820とを有する。第1メモリ810は、例えば、DRAMなどで構成されるメインメモリである。第2メモリ820は、例えば、SSDなどで構成される記憶デバイスである。つまり、第1メモリ810のI/O速度は、第2メモリ820よりも速い。
第1メモリ810の記憶領域は、例えば所定の大きさであり、システム領域811と、ワーク領域812と、第1キャッシュ領域814と、空き領域813とを含む。システム領域811は、OS(Operating System)に関するプログラムが格納される領域である。ワーク領域812は、OS上で実行される実行プログラム(例えば、アプリケーションプログラム)、並びに、OS及び実行プログラムの少なくとも一方が使用するデータが一時的に格納される領域である。以下の説明では、ワーク領域812に格納されるデータは、プログラムであってもプログラムに使用されるデータであっても「データ」と総称することがある。第1キャッシュ領域814は、外部記憶デバイス830に対して入出力されるデータが一時的に格納される領域である。空き領域813は、第1記憶領域においてシステム領域811、ワーク領域812及び第1キャッシュ領域814以外の領域である。プロセッサ3は、第1メモリ810のうち少なくともワーク領域812及び第1キャッシュ領域814のそれぞれのサイズを変更することができる。
第2メモリ820の記憶領域は、例えば所定の大きさであり、スワップ領域821と、第2キャッシュ領域822とを含む。スワップ領域821は、ワーク領域812内のデータのスワップ用の領域(すなわち、ワーク領域812内のデータの退避先の領域)である。第2キャッシュ領域822は、外部記憶デバイス830に対して入出力されるデータが一時的に格納される領域である。第2キャッシュ領域822に格納されるデータは、第1キャッシュ領域814に格納されず、逆に、第1キャッシュ領域814に格納されるデータは、第2キャッシュ領域822に格納されないが、同じデータが第1キャッシュ領域814と第2キャッシュ領域822の両方に格納されてよい。プロセッサ3は、スワップ領域821及び第2キャッシュ領域822のそれぞれのサイズを変更することができる。
ワーク領域812及びスワップ領域821には、プロセッサ3によって実行される実行プログラムに係るデータが格納される。実行プログラムとは、例えば、ユーザによって実行されるアプリケーションプログラムなどである。
一般的に、プロセッサ3は、ワーク領域812が不足傾向を示すと、ワーク領域812を拡大する。しかし、それでもワーク領域812が不足する場合、プロセッサ3は、ワーク領域812内の一部のデータ(例えば実行プログラム)をスワップ領域821に退避させることで、ワーク領域812の不足を解消する。
一方で、プロセッサ3は、外部記憶デバイス830に対するI/O量を削減するため、外部記憶デバイス830に格納されている一部のデータを、第1キャッシュ領域814又は第2キャッシュ領域822にキャッシュデータとして格納する。プロセッサ3は、外部記憶デバイス830からデータをリードする際、第1キャッシュ領域814又は第2キャッシュ領域822内のキャッシュデータがヒットしたならば、そのキャッシュデータをリードする。これにより、外部記憶デバイス830に対するI/O量は削減される。すなわち、第1キャッシュ領域814及び第2キャッシュ領域822の少なくとも1つを拡大することにより、キャッシュヒット率が高まり、外部記憶デバイス830に対するI/O量が削減される。
一般的に、第1メモリ810(例えばDRAM)と比較してI/O速度の遅い外部記憶デバイス830(例えばHDD)にスワップ領域が設けられるので、ワーク領域812のサイズをできるだけ大きくし、外部記憶デバイス830のスワップ領域をできるだけ使用しないことが適切である。しかし、本実施形態では、図1に示すように、第1メモリ810よりI/O速度が遅いが外部記憶デバイス830よりI/O速度の速い第2メモリ820(例えばSSD)にスワップ領域821が設けられる。この場合、必ずしもワーク領域812のサイズをできるだけ大きくするという考え方が適切であるとは限らない。例えば、外部記憶デバイス830に対するI/O量が大きい場合、第1メモリ810の第1キャッシュ領域814のサイズを大きくすることでキャッシュヒット率が上がり、それにより外部記憶デバイス830に対するI/O量を削減することができる。第1メモリ810の第1キャッシュ領域814のサイズを大きくすることにより、ワーク領域812のサイズが小さくなり、スワップ領域821にスワップが発生する可能性は高くなるが、上記のとおり、第2メモリ820のI/O速度は比較的速いため、必ずしもそれが性能の低下につながるとは限らない。
以下、プロセッサ3が状況に応じて、第1メモリ810のワーク領域812及び第1キャッシュ領域814、並びに、第2メモリ820のスワップ領域821及び第2キャッシュ領域822を適切にサイズ変更することにより、計算機1における性能の低下を抑制する方法について詳細に説明する。
図2は、第1の実施形態に関する計算機1の構成例を示すブロック図である。
計算機1は、ハードウェアとして、メモリ2と、プロセッサ3と、デバイスコントローラ4と、デバイスコントローラ4に接続されるSSD6及びHDD5と、を備える。SSD6及びHDD5は、計算機1の内部及び外部の何れに備えられてもよい。
プロセッサ3は、演算回路又はコンピュータプログラムに従って様々な演算を実行し、他の要素2、4、5、6を制御することにより、計算機1の有する様々な機能を実現する。
メモリ2と、プロセッサ3と、デバイスコントローラ4とは、双方向にデータを伝送可能な内部バス11で接続されている。内部バス11は、例えば、メモリバス及びPCI−Expressバスなどで構成される。
外部記憶デバイスの一例であるHDD5は、プロセッサ3からのI/O要求に従って、データをリード及びライトする。HDD5は、例えばSSD6など、他の不揮発性記憶デバイスであってもよい。
第2メモリの一例であるSSD6は、データのスワップ領域及びキャッシュ領域として利用される。SSD6は、例えば、PRAM(Phase Change RAM)、MRAM(Magnetoresistive random access memory)、ReRAM(resistance random access memory)、又はFeRAM(Ferroelectric random access memory)など、他の不揮発性記憶バイスであってもよい。
デバイスコントローラ4は、そのデバイスコントローラ4に接続されているSSD6及びHDD5を制御する。デバイスコントローラ4は、例えば、SATA(Serial ATA)、SCSI、iSCSI、又はFC(Fibre Channel)など、接続方式に準拠する制御機能を有する。
HDD5とSSD6とが、別々のデバイスコントローラ4に接続されてもよい。例えば、デバイスコントローラ4をPCI−Expressインタフェースとし、SSD6をフラッシュメモリチップとしてもよい。HDD5及びSSD6は、複数の計算機1から共有されてもよい。
第1メモリの一例であるメモリ2は、プロセッサ3が使用するコンピュータプログラム及びデータなどを記憶する。メモリ2は、例えば、DDR3−DRAM、MRAM又はFeRAMなどで構成される。メモリ2における記憶領域は、所定の大きさの複数のページによって構成されてもよい。
メモリ2は、システム領域10と、ワーク領域30と、キャッシュ領域20と、空き領域40とを有する。システム領域10には、OSに関するプログラムが保持される。OSは、割当調整部100、メモリ制御部210、SSD制御部230、およびI/O制御部220を有する(或いは、OSが提供する機能とOS上で実行されるコンピュータプログラムにより、割当調整部100、メモリ制御部210、SSD制御部230、およびI/O制御部220が実現される)。これらの機能の詳細については後述する。
第1キャッシュ領域20には、HDD5に対して入出力される一部のデータがキャッシュデータとして格納される。ワーク領域30には、アプリケーションプログラム31などが格納される。空き領域40は、まだ使用されていない領域である。
I/O制御部220は、HDD5へのI/Oを制御する。I/O制御部220は、アプリケーションプログラム31から発行されたI/O要求に基づき、HDD5にI/O要求を発行する。I/O制御部220は、HDD5に対するリードデータ及びライトデータを、第1キャッシュ領域20又は第2キャッシュ領域8に格納してもよい。そして、I/O制御部220は、リード要求されたデータが第1キャッシュ領域20又は第2キャッシュ領域8に存在する場合(つまり、キャッシュがヒットした場合)、そのキャッシュ領域20、8からデータをリードしてもよい。これにより、HDD5に対するI/O量が削減される。
I/O制御部220は、HDD5に対するI/O量を計測してもよい。I/O量とは、例えば、単位時間当たりにおけるI/O要求の発行数又は転送データ量などである。I/O制御部220は、計測したI/O量を割当調整部100に提供してもよい。I/O制御部220は、割当調整部100から指定された上限値を超えないように、単位時間当たりのI/O量を調整してもよい。
メモリ制御部210は、メモリ2を制御する。メモリ制御部210は、メモリ2の記憶領域に対してデータのライト、リード及び消去などを行う。メモリ制御部210は、ワーク領域30に格納されているデータと、スワップ領域7に格納されているデータとをスワップさせる。メモリ制御部210は、割当調整部100からの指示に基づいて、メモリ2の記憶領域に占めるワーク領域30及び第1キャッシュ領域20の大きさを変更する。すなわち、メモリ制御部210は、ワーク領域30及び第1キャッシュ領域20に割り当てるページ数を変更する。
SSD制御部230は、SSD6を制御する。SSD制御部230は、SSD6の記憶領域に対してデータのライト、リード及び消去などを行う。SSD制御部230は、SSD6の記憶領域に、スワップ領域7及び第2キャッシュ領域8を確保したり、割当調整部100からの指示に基づいて、SSD6の記憶領域に占めるスワップ領域7及び第2キャッシュ領域8の大きさを変更する。SSD制御部230は、SSD6のデバイスドライバの一種であっても良いし、I/O制御部220とSSD6のデバイスドライバとの間に介在する所定のプログラムであっても良い。
例えば、OSがLinux(登録商標)である場合、SSD制御部130は、LVM(logical volume manager)を用いて、lvresizeコマンド又はlvcreateコマンドなどを実行し、スワップ領域7及び第2キャッシュ領域8を確保又は変更してもよい。例えば、SSD制御部130は、GNU Partedを用いて、fdiskコマンドなどを実行し、スワップ領域7及び第2キャッシュ領域8を確保又は変更してもよい。例えば、SSD制御部130は、swapponコマンド及びswappoffコマンドなどを実行し、スワップ領域7に係るページの有効及び無効を変更してもよい。
割当調整部100は、メモリ2の記憶領域に占めるワーク領域30及び第1キャッシュ領域20、並びに、SSD6の記憶領域に占めるスワップ領域7及び第2キャッシュ領域8を調整する。以下、割当調整部100の詳細について説明する。
図3は、割当調整部100の構成例を示すブロック図である。割当調整部100は、ポリシ設定部110と、稼働状況観測部120と、メモリ調整部130と、スワップデバイス調整部140と、ポリシ情報111と、稼働情報150とを有する。
図4は、ポリシ情報111の一例を示す。ポリシ情報111は、ワーク領域30及び第1キャッシュ領域20、並びに、スワップ領域7及び第2キャッシュ領域8を変更するにあたっての基準となる情報を有する。ポリシ情報111は、例えば、計算機1の利用者によって設定されても良いし、外部のサーバなどから通信ネットワークを介して取得されてもよい。
ポリシ情報111は、HDDのI/O基準量112と、スワップ頻度基準量113と、スワップ確保基準値114と、スワップ使用上限値115と、スワップ使用下限値116と、を属性として有する。
HDDのI/O基準量112は、HDD5のI/O量が大きすぎるか否かの判定に用いられる。HDDのI/O基準量112は、例えば、1秒間当たりのデータ量で表される。
スワップ頻度基準量113は、スワップの発生頻度が大きすぎるか否かの判定に用いられる。スワップ頻度基準量113は、例えば、1秒間当たりのスワップの発生回数で表される。
スワップ確保基準値114は、スワップ領域7に確保されるべき不使用領域の基準に用いられる。スワップ確保基準値114は、例えば、スワップ領域7に対する使用領域の割合で表される。
スワップ使用上限値115は、スワップ領域7を拡大すべきか否かの判定に用いられる。スワップ使用上限値115は、例えば、スワップ領域7に対する使用領域の割合で表される。
スワップ使用下限値116は、スワップ領域7を縮小すべきか否かの判定に用いられる。スワップ使用下限値116は、例えば、スワップ領域7に対する使用領域の割合で表される。
ポリシ設定部110は、ポリシ情報111を取得する。ポリシ設定部110は、例えば、計算機1の利用者が入力したポリシ情報111を取得したり、外部の装置などから通信ネットワークを通じてポリシ情報111を取得する。ポリシ設定部110は、ポリシ情報111に含まれるHDD5のI/O基準量112を、I/O制御部220に渡しても良い。I/O制御部220は、このHDD5のI/O基準量112を超えないように、HDD5のI/O量を調整してもよい。
図5は、稼働情報150の一例を示す。稼働情報150は、計算機1の稼働状況に関する情報を有する。稼働情報150は、メモリ2の記憶領域に占めるワーク領域30及び第1キャッシュ領域20のサイズ、並びに、SSD6の記憶領域に占めるスワップ領域7及び第2キャッシュ領域8のサイズを変更すべきか否かの判定、並びに、どのくらいサイズ変更するべきかの算出などに用いられる。
稼働情報150は、ワーク領域量151と、スワップ領域量152と、スワップ使用量153と、スワップ頻度154と、第2キャッシュリードヒット量155と、第2キャッシュリードミス量156と、第2キャッシュライトヒット量157と、第2キャッシュライトミス量158と、を属性として有する。
ワーク領域量151は、或る時点におけるワーク領域30の大きさを表す。スワップ領域量152は、或る時点におけるスワップ領域7の大きさを表す。スワップ使用量153は、或る時点におけるスワップ領域量157のうちの使用量を表す。
スワップ頻度154は、単位時間当たりに発生したスワップの頻度を表す。スワップ頻度154は、例えば、1秒間当たりのスワップの発生回数で表される。
第2キャッシュリードヒット量155は、単位時間(例えば1秒間)当たりのリード要求に対して第2キャッシュ領域8のキャッシュデータがヒットしたデータ量を表す。
第2キャッシュリードミス量156は、単位時間当たりのリード要求に対して第2キャッシュ領域8のキャッシュデータがヒットしなかった(ミスした)量を表す。つまり、第2キャッシュリードミス量は、HDD5からリードされたデータ量を表す。
第2キャッシュライトヒット量157は、単位時間当たりのライト要求に対して第2キャッシュ領域8のキャッシュデータがヒットした量を表す。
第2キャッシュライトミス量158は、単位時間当たりのライト要求に対して第2キャッシュ領域8のキャッシュデータがヒットしなかった(ミスした)量を表す。つまり、第2キャッシュライトミス量158は、HDD5にライトされたデータ量を表す。
例えば、ワーク領域量151、スワップ領域量152、スワップ使用量153及びスワップ頻度154は、メモリ制御部210によって測定されてもよい。例えば、第2キャッシュの各ヒット量155、157及びミス量156、158は、SSD制御部6及びI/O制御部220によって測定されてもよい。
第1キャッシュ領域20と第2キャッシュ領域8は、1つのキャッシュメモリ領域として使用され使い分けされなくてもよいし、或いは、プロセッサ3による使い分けがされてもよい。使い分けとして、例えば、キャッシュヒット率が比較的高いキャッシュデータが第1キャッシュ領域20に格納されキャッシュヒット率が比較的低いキャッシュデータが第2キャッシュ領域8に格納されてもよいし、リードデータが第1キャッシュ領域20に格納されライトデータが第2キャッシュ領域8に格納されてもよい。第2キャッシュ領域8でリードヒットしたキャッシュデータ(或いは、第2キャッシュ領域8におけるキャッシュデータのうちリードヒット率が閾値より高いキャッシュデータ)は、第2キャッシュ領域8から第1キャッシュ領域20へ移動されてもよい。その際、第1キャッシュ領域20において最もヒット率の低いデータが第2キャッシュ領域8へ移動されてもよい。
単位時間当たりのHDD5のI/O量は、計算機1におけるライトモードによって異なり得る。ライトモードとして、例えば、ライトバックモードとライトスルーモードがある。「ライトバックモード」では、I/O制御部220は、アプリケーションプログラム31からのライト要求に従うライトデータを第2キャッシュ領域8又は第1キャッシュ領域20にライトしたときにライト完了をアプリケーションプログラム31に応答し、その後に、そのライトデータ(キャッシュデータ)をHDD5にライトする。
一方、「ライトスルーモード」では、I/O制御部220は、アプリケーションプログラム31からのライト要求に従うライトデータを第2キャッシュ領域8又は第1キャッシュ領域20にライトし(又はライトデータをキャッシュ領域8及び20のいずれにライトすることなく)、そのライトデータをHDD5にライトしたときに、ライト完了をアプリケーションプログラム31に応答する。
ライトモードが「ライトスルーモード」の場合、「HDDのI/O量=第2キャッシュリードミス量+第2キャッシュライトヒット量+第2キャッシュライトミス量」として算出される。
ライトモードが「ライトバックモード」の場合、「HDDのI/O量=第2キャッシュリードミス量+第2キャッシュライトミス量」として算出される。なぜなら、「ライトバックモード」の場合、キャッシュヒットした同じライトデータは、その後に非同期で1回だけHDD5にライトされれば良いからである。
稼働状況観測部120は、稼働情報150に関連する情報151〜158を観測し、その観測結果に基づいて稼働情報150を更新する。稼働状況観測部120は、I/O制御部220、メモリ制御部210およびSSD制御部230などから稼働情報150に関連する情報151〜158を所定のタイミング(例えば一定周期)で取得してもよい。
メモリ調整部130は、稼働情報150を参照し、メモリ2のページを、ワーク領域30及び第1キャッシュ領域20にどのように割り当てるかを調整する。割り当てるページ数を増やすと領域は拡大し、割り当てるページ数を減らすと領域は縮小する。
メモリ調整部130は、「スワップ頻度154>スワップ頻度基準量113」の場合、ワーク領域30を拡大してもよい。すなわち、メモリ調整部130は、スワップが発生しにくいようにしてもよい。例えば、OSがLinuxの場合、メモリ調整部130は、「swappiness値」を変更し、ワーク領域30のデータのスワップの発生のしやすさを調整してもよい。swappiness値が小さいほど、ワーク領域30内のデータはスワップされにくくなり、反対にswappiness値が大きいほど、ワーク領域30内のデータはスワップされやすくなる。よって、メモリ調整部130は、swappiness値を小さくして、ワーク領域30内のデータがスワップされにくいようにすることにより、ワーク領域30を拡大してもよい。
メモリ調整部130は、「HDDのI/O量>HDDのI/O基準量112」の場合、ワーク領域30を縮小してもよい。すなわち、メモリ調整部130は、キャッシュヒット率が所定の基準値よりも小さい場合、ワーク領域30を縮小してもよい。メモリ調整部130がswappiness値を大きくすると、ワーク領域30内のデータがスワップされやすくなり、結果的にワーク領域30が縮小する。メモリ制御部210は、メモリ2の記憶領域の内、ワーク領域30を確保して残った領域(ワーク領域30の縮小前後の差分としての領域)を第1キャッシュ領域20の一領域として割り当てる。したがって、ワーク領域30が縮小すると、それに伴って第1キャッシュ領域20が拡大する。第1キャッシュ領域20が拡大すると、キャッシュヒット率が向上し得るので、HDDのI/O量が削減され得る。
実際にワーク領域30及び第1キャッシュ領域20を変更する処理は、メモリ制御部210が実行してもよい。すなわち、メモリ調整部130がswappiness値を変更し、メモリ制御部210がその変更されたswappiness値に従って、実際にメモリ上のワーク領域30及び第1キャッシュ領域20を変更してもよい。メモリ制御部210は、swappiness値に従って、メモリ2の記憶領域に対する、ワーク領域30及び第1キャッシュ領域20の割合を変更してもよい。
スワップデバイス調整部140は、稼働情報150を参照し、SSD6におけるスワップ領域7及び第2キャッシュ領域8を調整する。スワップデバイス調整部140は、「((ワーク領域量151+スワップ使用量153)/(ワーク領域量151+スワップ領域量152)×100(%)」を算出する。この算出値を「ワーク&スワップ使用割合」という。
スワップデバイス調整部140は、「ワーク&スワップ使用割合>スワップ使用上限値115」の場合、スワップ領域7を拡大し、第2キャッシュ領域8を縮小する。スワップ領域7が不足傾向にあるためである。
スワップデバイス調整部140は、「ワーク&スワップ使用割合<スワップ使用下限値116」の場合、スワップ領域7を縮小し、第2キャッシュ領域8を拡大する。スワップ領域7の未使用な領域を第2キャッシュ領域8に割り当てることにより、キャッシュヒット率が向上し得るためである。
実際にスワップ領域7及び第2キャッシュ領域8を変更する処理は、SSD制御部230が実行してもよい。すなわち、スワップデバイス調整部140がスワップ領域7の大きさを決定し、SSD制御部130がその決定されたスワップ領域7の大きさに従って、実際にSSD6上のスワップ領域7及び第2キャッシュ領域8を変更してもよい。
ワーク領域30のサイズの変化量と、第1キャッシュ領域20のサイズの変化量とが異なってもよい。また、ワーク領域30の拡大又は縮小と、第1キャッシュ領域20の縮小又は拡大とは、必ずしも連動しなくてよい。例えば、空き領域40のサイズが十分に大きい場合、ワーク領域30と第1キャッシュ領域20とは共に拡大され、空き領域40が縮小されてもよい。
同様に、スワップ領域7のサイズの変化量と、第2キャッシュ領域20のサイズの変化量とが異なってもよい。また、スワップ領域7のサイズの拡大又は縮小と、第2キャッシュ領域8の縮小又は拡大とは、必ずしも連動しなくてよい。
図6は、メモリ調整処理の一例を示すフローチャートである。この処理は、例えば、一定の周期で実行される。
メモリ調整部130は、稼働情報150を取得し、「スワップ頻度>スワップ頻度基準値」であるか否かを判定する(S101)。
「スワップ頻度>スワップ頻度基準値」の場合(S101:YES)、メモリ調整部130は、メモリ制御部210にワーク領域30を拡大するよう指示し(swappiness値を小さくし)(S102)、処理を終了する(END)。
「スワップ頻度≦スワップ頻度基準値」の場合(S101:NO)、メモリ調整部130は、「HDDのI/O量>HDDのI/O基準量」であるか否かを判定する(S103)。
「HDDのI/O量>HDDのI/O基準量」の場合(S103:YES)、メモリ調整部130は、第1キャッシュ領域調整処理を実行し(S104)、処理を終了する(END)。第1キャッシュ領域調整処理の詳細については後述する。
「HDDのI/O量≦HDDのI/O基準量」の場合(S103:NO)、メモリ調整部130は、処理を終了する(END)。
以上の処理により、スワップ発生頻度が所定の基準値と比べて大きい場合、メモリ2のワーク領域20が拡大する。これにより、スワップの発生頻度が減少する。
図7は、第1キャッシュ領域調整処理の一例を示すフローチャートである。この処理は、図5のS104に該当する。
メモリ調整部130は、ライトモードが「ライトバックモード」又は「ライトスルーモード」の何れであるか判定する(S111)。
ライトモードが「ライトバックモード」である場合(S111:ライトバック)、メモリ調整部130は、メモリ制御部210に、ワーク領域30を縮小するよう指示し(swappiness値を大きくし)(S113)、この処理を終了する(END)。
ライトモードが「ライトスルーモード」である場合(S111:ライトスルー)、メモリ調整部130は、稼働情報150を参照し、「第2キャッシュリードミス量>(HDDのI/O量−HDDのI/O基準量)」であるか否かを判定する(S112)。
「第2キャッシュリードミス量>(HDDのI/O量−HDDのI/O基準量)」の場合(S112:YES)、メモリ調整部130は、メモリ制御部210に、ワーク領域30を縮小するよう指示し(swappiness値を大きくし)(S113)、この処理を終了する(END)。
「第2キャッシュリードミス量≦(HDDのI/O量−HDDのI/O基準量)」の場合(S112:NO)、メモリ調整部130は、この処理を終了する(END)。
以上の処理により、HDDのI/O量が所定の基準量と比べて大きい場合、メモリ2の第1キャッシュ領域20が拡大する。これにより、キャッシュヒット率が向上し、HDDのI/O量が削減され得る。
図8は、スワップ領域調整処理の一例を示すフローチャートである。この処理は、例えば、一定の周期で実行される。
スワップデバイス調整部140は、稼働情報150を参照し、「ワーク&スワップ使用割合>スワップ使用上限値」であるか否かを判定する(S201)。
「ワーク&スワップ使用割合>スワップ使用上限値」の場合(S201:YES)、スワップデバイス調整部140は、SSD6のスワップ領域7を拡大し、第2キャッシュ領域8を縮小する処理を実行し(S203)、処理を終了する(END)。
「ワーク&スワップ使用割合≦スワップ使用上限値」の場合(S201:NO)、スワップデバイス調整部140は、「ワーク&スワップ使用割合<スワップ使用下限値」であるか否かを判定する(S202)。
「ワーク&スワップ使用割合<スワップ使用下限値」の場合(S202:YES)、スワップデバイス調整部140は、SSD6のスワップ領域7を縮小し、第2キャッシュ領域8を拡大する処理を実行し(S204)、処理を終了する(END)。
「ワーク&スワップ使用割合≧スワップ使用下限値」の場合(S202:NO)、スワップデバイス調整部140は、処理を終了する(END)。
以上の処理により、スワップ領域7が不足傾向の場合、SSD6のスワップ領域7は拡大される。これにより、スワップ領域7が不足することを回避できる。スワップ領域7が過剰傾向の場合、SSD6のスワップ領域7は縮小される。これにより、第2キャッシュ領域8が拡大され、HDD5に対するキャッシュヒット率が向上され得る。つまり、HDDのI/O量が削減され得る。
第2の実施形態
第2の実施形態は、仮想マシンを実行する計算機において、メモリ上のワーク領域及びキャッシュ領域、並びに、スワップ用記憶デバイス上のスワップ領域及びキャッシュメモリを調整する方法を説明する。以下、第1の実施形態と同様の要素には同じ符号を付し、説明を省略する。
図9は、第2の実施形態に関する計算機1の構成例を示すブロック図である。計算機1のハードウェア構成は、図1に示す計算機1と同様である。
メモリ2は、システム領域10と、ワーク領域30と、空き領域40と、第1キャッシュ領域20とを有する。プロセッサ3は、ワーク領域20において、ハイパバイザ50を実行する。ハイパバイザ50は、仮想マシンを実現するためのベースとなるアプリケーションプログラムである。
ハイパバイザ50上では複数の仮想マシン51A、51Bが実行され、各仮想マシン51A、51Bでは独立した仮想OSが実行される。ハイパバイザ50は、仮想マシンメモリマネージャ52を有する。
仮想マシンメモリマネージャ52は、仮想マシン51A、51Bの有する仮想的なメモリ(「仮想メモリ」という)に物理的なメモリ2のページを割り当てたり、仮想メモリに割り当てた物理的なメモリ2のページを回収したりする。メモリ2において仮想マシンの仮想メモリに割り当てられた領域を「仮想メモリ割当領域」という。図9において、仮想メモリ割当領域53A及び53Bはそれぞれ、仮想マシン51A及び51Bの仮想メモリに割り当てられている。
SSD6は、各仮想マシン上の仮想OSから使用される仮想マシン用スワップ領域61A及び61Bと、計算機1上のOSから使用されるスワップ領域7と、第2キャッシュ領域8とを有する。図9において、仮想マシン用スワップ領域61A及び61Bはそれぞれ、仮想マシン51A及び51Bの仮想OSから使用される。第2キャッシュ領域8は、仮想マシンごとに確保されなくてもよい。なぜなら、仮想マシン51A、51Bから発行されたリード及びライト要求は、最終的には計算機1のI/Oとして実行されるからである。
計算機1上のOSは、ワーク領域30内のデータを、SSD6のスワップ領域7に退避する。しかし、仮想メモリ割当領域53A、53Bのデータがスワップ領域7に退避されることは望ましくない。なぜなら、仮想メモリに割り当てられた仮想メモリ割当領域53A、53Bがメモリ2よりもI/O速度の遅いSSD6のスワップ領域7に退避されてしまうと、仮想メモリのI/O速度はスワップ領域よりも速いと想定して動作している仮想マシン上の仮想OSが、想定外の動作をするおそれがあるためである。
このような問題の発生を回避するために、仮想マシン上の仮想OS上で、バルーンドライバと呼ばれるプログラムが実行される。バルーンドライバは、仮想マシンメモリマネージャ52が、仮想メモリの不必要ページを回収する際に用いられる。例えば、仮想マシンメモリマネージャ52が、仮想マシン51A上の仮想OSに対して不必要ページの回収を指示すると、仮想マシン51A上のバルーンドライバは、仮想メモリのページを大量に確保する。すると、仮想マシン51A上の仮想OSは、仮想メモリにおけるスワップ領域に退避しても問題ないデータを、仮想マシン用スワップ領域61Aへ退避する。次に、仮想マシンメモリマネージャ52は、バルーンドライバが確保した仮想メモリのページに割り当てられている、仮想メモリ割当領域53Aのページを回収する。これにより、仮想メモリ割当領域53Aが縮小され、仮想メモリ割当領域53Aのデータがスワップ領域7へ退避されることを回避できる。
図10は、第2の実施形態に係る割当調整部300の構成例を示すブロック図である。割当調整部300は、ポリシ設定部310と、稼働状況観測部320と、メモリ調整部330と、スワップデバイス調整部340と、ポリシ情報111と、稼働情報160とを有する。ここでは、第1の実施形態と相違する部分について説明する。
図11は、第2の実施形態に関する稼働情報160の一例を示す。
稼働情報160は、仮想マシン51A、51Bの稼働状況及び計算機1の稼働状況に関する情報を有する。稼働情報160は、仮想マシン毎に、仮想メモリ使用量161と、スワップ領域量162と、スワップ使用量163と、スワップ頻度164とを、属性として有する。そして、稼働情報160は、図5と同様に、第2キャッシュリードヒット量155と、第2キャッシュリードミス量156と、第2キャッシュライトヒット量157と、第2キャッシュライトミス量158と、を属性として有する。
仮想メモリ使用量161、スワップ領域量162、スワップ使用量163及びスワップ頻度164は、仮想マシン上の仮想OSと仮想マシンメモリマネージャ52とによって測定されてもよい。
稼働状況観測部320は、稼働情報160に関する情報を観測し、その観測結果に基づいて稼働情報160を更新する。稼働状況観測部320は、仮想マシンメモリマネージャ52を通じて、各仮想マシンの稼働情報160に関する情報を所定のタイミング(例えば一定周期)で取得してもよい。
メモリ調整部330は、稼働情報160を参照し、メモリ2のページを、仮想マシン割当領域53A、53B及び第1キャッシュ領域20にどのように割り当てるかを調整する。
メモリ調整部330は、仮想マシン51A、51Bのそれぞれについて「スワップ頻度161>スワップ頻度基準値113」の場合(つまり、仮想マシン上の仮想OSのスワップ頻度が大きい場合)、その仮想マシン51A、51Bの仮想メモリに割り当てる仮想メモリ割当領域53A、53Bを拡大してもよい。例えば、メモリ調整部330は、仮想マシンメモリマネージャ52を通じて、仮想マシン51A、51B上のバルーンドライバにバルーンの縮小を指示する。バルーンドライバは、バルーンの縮小指示を受けると、確保していた仮想メモリのページを開放する。これにより、仮想マシン上の仮想OSは、利用可能な仮想メモリが増加するので、スワップの発生を減らすことができる。
メモリ調整部330は、仮想マシン51A、51Bのそれぞれについて「スワップ頻度161≦スワップ頻度基準値113」の場合(つまり、仮想マシン上の仮想OSのスワップ頻度が小さい場合)、その仮想マシン51A、51Bを仮想マシン割当領域53A、53Bの縮小候補に登録してもよい。そして、メモリ調整部330は、「HDDのI/O量>HDDのI/O基準量112」の場合、仮想マシンメモリマネージャ52を通じて、縮小候補に登録された仮想マシン上のバルーンドライバに、バルーンの拡大を指示してもよい。バルーンドライバは、バルーンの拡大指示を受けると、仮想メモリのページを新たに確保する。そして、メモリ調整部330は、バルーンドライバにより確保された仮想メモリのページに対応する仮想メモリ割当領域53A、53Bを回収する。これにより、仮想メモリ割当領域53A、53Bが縮小され、それに伴って第1キャッシュ領域20が拡大される。第1キャッシュ領域20が拡大すると、キャッシュヒット率が向上し得るので、HDDのI/O量が削減され得る。
なお、実際にワーク領域30及び第1キャッシュ領域20を変更する処理は、第1の実施形態と同様に、メモリ制御部210が実行してもよい。
スワップデバイス調整部340は、仮想マシン51A、51Bのそれぞれについて「(仮想メモリ使用量161+スワップ使用量163)/(仮想メモリ使用量161+スワップ領域量162)×100(%)」を算出する。この算出値を「仮想マシン&スワップ使用割合」という。
スワップデバイス調整部340は、仮想マシン51A、51Bのそれぞれについて「仮想マシン&スワップ使用割合>スワップ使用上限値115」の場合、その仮想マシン51A、51Bを、スワップ拡大候補に登録する。スワップデバイス調整部340は、仮想マシン51A、51Bのそれぞれについて「仮想マシン&スワップ使用割合<スワップ使用下限値116」の場合、その仮想マシン51A、51Bを、スワップ縮小候補に登録する。
そして、スワップデバイス調整部340は、スワップ拡大候補に登録された仮想マシン51A、51Bの仮想マシン用スワップ領域61A、61Bの合計(「拡大合計」という)と、スワップ縮小候補に登録された仮想マシン51A、51Bの仮想マシン用スワップ領域61A、61Bの合計(「縮小合計」という)との差に基づいて、SSD6の第2キャッシュ領域8のサイズの変化量を算出する。例えば、スワップデバイス調整部340は、「拡大合計−縮小合計=変化量」を算出し、その変化量が正の場合は第2キャッシュ領域8のサイズを縮小し、その変化量が負の場合は第2キャッシュ領域8のサイズを拡大する。第2キャッシュ領域の拡大又は縮小のサイズは、その変化量に基づいて決定されてもよい。
図12は、第2の実施形態に係るメモリ調整処理の一例を示すフローチャートである。この処理は、例えば、一定の周期で実行される。
メモリ調整部330は、未処理の仮想マシンの中から処理対象の仮想マシン(「対象仮想マシン」という)を決定し、対象仮想マシンに関する稼働情報160を取得する(S301)。
メモリ調整部330は、対象仮想マシンにおいて「スワップ頻度164>スワップ頻度基準値113」であるか否かを判定する(S302)。
「スワップ頻度>スワップ頻度基準値」の場合(S302:YES)、メモリ調整部330は、仮想マシンメモリマネージャ52を通じて、対象仮想マシンのバルーンドライバにバルーン縮小を指示し(S303)、S305へ進む。
「スワップ頻度≦スワップ頻度基準値」の場合(S302:NO)、メモリ調整部330は、対象仮想マシンをバルーン拡大候補に登録し(S304)、S305へ進む。
S305において、メモリ調整部330は、未処理の仮想マシンが存在しているか否かを判定する(S305)。未処理の仮想マシンが存在している場合(S305:YES)、メモリ調整部130は、S301へ戻る。
未処理の仮想マシンが存在しない場合(S305:NO)、メモリ調整部330は、第1キャッシュ領域調整処理を実行し(S307)、処理を終了する(END)。第1キャッシュ調整処理の詳細については後述する。
以上の処理により、仮想マシンにおけるスワップ発生頻度が所定の基準値と比べて大きい場合、仮想マシン上のバルーンドライバがバルーンを縮小し、仮想メモリ上の使用可能なページが増加する。これにより、仮想マシンにおけるスワップ発生頻度が減少する。
図13は、第1キャッシュ領域調整処理の一例を示すフローチャートである。この処理は、図10のS307に該当する。
メモリ調整部330は、図6と同様の処理を実行するが、S113に代えて以下の処理を実行する。つまり、メモリ調整部330は、仮想マシンメモリマネージャ52を通じて、バルーン縮小候補に登録されている仮想マシンのバルーンドライバに、バルーン拡大を指示し(S313)、この処理を終了する(END)。
以上の処理により、HDDのI/O量が所定の基準量と比べて大きい場合、仮想マシン上のバルーンドライバがバルーンを拡大し、仮想メモリ割当領域のページが回収可能となる。よって、仮想メモリ割当領域が縮小され、それに伴ってメモリ2の第1キャッシュ領域20が拡大される。これにより、キャッシュヒット率が向上し、HDDのI/O量が削減され得る。
図14は、スワップ領域調整処理の一例を示すフローチャートである。この処理は、例えば、一定の周期で実行される。
スワップデバイス調整部340は、未処理の仮想マシンの中から対象仮想マシンを決定し、対象仮想マシンの稼働情報160を取得する(S401)。
スワップデバイス調整部340は、対象仮想マシンについて「仮想マシン&スワップ使用割合>スワップ使用上限値115」であるか否かを判定する(S402)。
「仮想マシン&スワップ使用割合>スワップ使用上限値115」の場合(S402:YES)、スワップデバイス調整部340は、この仮想マシンをスワップ拡大候補に登録し(S403)、S406へ進む。
「仮想マシン&スワップ使用割合≦スワップ使用上限値115」の場合(S402:NO)、スワップデバイス調整部340は、「仮想マシン&スワップ使用割合<スワップ使用下限値116」であるか否かを判定する(S404)。
「仮想マシン&スワップ使用割合<スワップ使用下限値116」の場合(S404:YES)、スワップデバイス調整部340は、この仮想マシンをスワップ縮小候補に登録し(S405)、S406へ進む。
「仮想マシン&のスワップ使用割合≧スワップ使用下限値116」の場合(S404:NO)、スワップデバイス調整部340は、S406へ進む。
S406において、スワップデバイス調整部340は、未処理の仮想マシンが存在するか否かを判定する(S406)。未処理の仮想マシンが存在する場合(S406:YES)、スワップデバイス調整部340は、S401へ戻る。
未処理の仮想マシンが存在しない場合(S406:NO)、スワップデバイス調整部340は、スワップ拡大候補及びスワップ縮小候補に登録された仮想マシンの仮想マシン用スワップ領域のサイズに基づいて、SSD6の第2キャッシュ領域6の変化量を算出する。そして、スワップデバイス調整部340は、各仮想マシン用スワップ領域のサイズを変更すると共に、その変化量に基づいて第2キャッシュ領域8のサイズを変更し(S408)、処理を終了する(END)。
以上の処理により、不足傾向の仮想マシン用スワップ領域が拡大される。これにより、仮想マシン用スワップ領域が不足することを回避できる。また、過剰傾向の仮想マシン用スワップ領域は縮小される。これにより、第2キャッシュ領域8が拡大され、HDD5に対するキャッシュヒット率が向上され得る。つまり、HDDのI/O量が削減され得る。
上述した幾つかの実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
例えば、第1及び第2の実施形態で説明した計算機1は、複数の記憶デバイス(例えばHDD又はSSD)とそれらに対するI/Oを制御するストレージコントローラとを有するストレージ装置(例えばディスクアレイ装置)内のストレージコントローラに適用されてもよいし、ストレージ装置(外部記憶デバイス)にI/O要求を発行するホスト計算機に適用されてもよい。
また、例えば、第2メモリ(例えばSSD)よりもI/O速度が遅い記憶デバイスは、必ずしも計算機1の外部記憶デバイスでなくてもよく、計算機1に内蔵されていてもよい。
1:計算機 2:メモリ 3:プロセッサ 4:デバイスコントローラ、5:HDD 6:SSD 7:スワップ領域 8:第2キャッシュ領域 20:第1キャッシュ領域 30:ワーク領域 40:空き領域 51A,51B:仮想マシン 52:仮想マシンメモリマネージャ 53A,53B:仮想メモリ割当領域 61A,61B:仮想マシン用スワップ領域


Claims (8)

  1. 第1メモリと、
    前記第1メモリよりもI/O速度が遅い第2メモリと、
    前記第1メモリ、前記第2メモリ及び記憶デバイスに接続されたプロセッサと
    を備え、
    前記第1メモリは、ワーク領域と、前記記憶デバイスに対して入出力されるデータが一時格納される第1キャッシュ領域とを有し、
    前記第2メモリは、前記記憶デバイスに対して入出力されるデータが一時格納される第2キャッシュ領域と、前記ワーク領域に格納されるデータの退避先であるスワップ領域とを有し、
    前記プロセッサは、
    前記記憶デバイスに対して入出力されたデータ量である入出力量が所定の入出力量よりも大きい場合に、前記ワーク領域を縮小し前記第1キャッシュ領域を拡大する第1キャッシュ領域拡大処理を実行する、
    計算機。
  2. 前記プロセッサは、
    前記スワップ領域へのデータ退避の発生頻度が所定の発生頻度以下ならば、前記第1キャッシュ領域拡大処理を実行する、
    請求項1に記載の計算機。
  3. 前記プロセッサは、
    ライトバックモードが設定されているならば、前記第1キャッシュ領域拡大処理を実行し、
    前記ライトバックモードが設定されている場合、前記プロセッサは、ライトデータを前記第1キャッシュ領域又は前記第2キャッシュ領域にライトした場合、ライト完了とし、その後、前記ライトデータを前記第1キャッシュ領域又は前記第2キャッシュ領域から前記記憶デバイスへライトするようになっている、
    請求項2に記載の計算機。
  4. 前記プロセッサは、
    ライトスルーモードが設定されており、且つ、キャッシュリードミス量が前記記憶デバイスに対する入出力量と所定の入出力との差分よりも大きいならば、前記第1キャッシュ領域拡大処理を実行し、
    前記ライトスルーモードが設定されている場合、前記プロセッサは、ライトデータを前記記憶デバイスへライトした場合に、ライト完了とし、
    前記キャッシュリードミス量は、前記第1キャッシュ領域及び第2キャッシュ領域に格納されているデータの何れにもヒットしなかったリードデータの総量である、
    請求項2に記載の計算機。
  5. 前記プロセッサは、
    前記ワーク領域及びスワップ領域の合計量に対する使用量の割合が第1の割合よりも大きい場合、前記スワップ領域を拡大し前記第2キャッシュ領域を縮小し、
    前記使用量の割合が第2の割合よりも小さい場合、前記スワップ領域を縮小し前記第2キャッシュ領域を拡大し、
    前記第2の割合は、前記第1の割合よりも小さい、
    請求項2に記載の計算機。
  6. 前記プロセッサによって複数の仮想マシンが実行されるようになっており、
    前記ワーク領域は、前記複数の仮想マシンの各々の仮想メモリに割り当てられた仮想メモリ割当領域を含み、
    前記第2メモリは、前記複数の仮想マシンの各々に割り当てられた仮想マシン用スワップ領域をさらに有し、
    前記第1キャッシュ領域拡大処理は、
    前記複数の仮想マシンのうち縮小対象の仮想マシンに割り当てられている仮想メモリ割当領域を縮小することにより、前記第1メモリに占めるワーク領域を縮小し前記第1キャッシュ領域を拡大する処理であり、
    前記縮小対象の仮想マシンは、仮想マシン用スワップ領域へのスワップ発生頻度が所定のスワップ発生頻度以下の仮想マシンである、
    請求項1に記載の計算機。
  7. 前記プロセッサは、
    前記複数の仮想マシンうち、前記仮想メモリ及び前記仮想マシン用スワップ領域の合計量のうちの使用量の割合が第3の割合よりも大きい仮想マシンを、スワップ拡大候補とし、
    前記使用量の割合が第4の割合よりも小さい仮想マシンを、スワップ縮小候補とし、
    前記スワップ拡大候補としての各仮想マシンに割り当てる仮想マシン用スワップ領域と、前記スワップ縮小候補としての各仮想マシンに割り当てる仮想マシン用スワップ領域との差に基づいて、前記第2メモリに占める前記第2キャッシュ領域のサイズを変更する
    請求項6に記載の計算機。
  8. 第1キャッシュ領域と第2キャッシュ領域とのうちの少なくとも1つを使用して記憶デバイスに入出力されたデータの量である入出力量が、所定の入出力量よりも大きいか否かを判定し、前記第1キャッシュ領域は第1メモリにあり、前記第2キャッシュ領域は前記第1メモリよりI/O速度が遅い第2メモリにあり、前記第1メモリは、更にワーク領域を有しており、前記第2メモリは、更に前記ワーク領域に格納されるデータの退避先であるスワップ領域を有しており、
    前記入出力量が前記所定の入出力量よりも大きい場合に、前記ワーク領域を縮小し前記第1キャッシュ領域を拡大する第1キャッシュ領域拡大処理を実行する、
    メモリ制御方法。


JP2016505979A 2014-03-04 2014-03-04 計算機およびメモリ制御方法 Expired - Fee Related JP6203937B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/055444 WO2015132877A1 (ja) 2014-03-04 2014-03-04 計算機およびメモリ制御方法

Publications (2)

Publication Number Publication Date
JPWO2015132877A1 JPWO2015132877A1 (ja) 2017-03-30
JP6203937B2 true JP6203937B2 (ja) 2017-09-27

Family

ID=54054717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016505979A Expired - Fee Related JP6203937B2 (ja) 2014-03-04 2014-03-04 計算機およびメモリ制御方法

Country Status (3)

Country Link
US (1) US9588896B2 (ja)
JP (1) JP6203937B2 (ja)
WO (1) WO2015132877A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2940950B1 (en) * 2014-04-29 2019-02-20 Institut Mines-Telecom Information centric networking (ICN) router
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
JP6384375B2 (ja) * 2015-03-23 2018-09-05 富士通株式会社 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム
US20170031601A1 (en) * 2015-07-30 2017-02-02 Kabushiki Kaisha Toshiba Memory system and storage system
KR101900569B1 (ko) * 2016-11-22 2018-09-19 이화여자대학교 산학협력단 입출력 특성에 따른 스토리지 할당 방법 및 장치
JP2018156582A (ja) * 2017-03-21 2018-10-04 キヤノン株式会社 情報処理装置および画像形成装置等のストレージ制御方法
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
JP2022032710A (ja) 2020-08-13 2022-02-25 富士通株式会社 管理装置およびプログラム
CN118626005A (zh) 2020-09-10 2024-09-10 荣耀终端有限公司 调整内存配置参数的方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0363741A (ja) * 1989-07-31 1991-03-19 Matsushita Electric Ind Co Ltd ディスク・キャッシュ装置
US5420998A (en) 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6078992A (en) * 1997-12-05 2000-06-20 Intel Corporation Dirty line cache
CN102713867A (zh) * 2009-10-14 2012-10-03 松下电器产业株式会社 信息处理设备

Also Published As

Publication number Publication date
US20160253263A1 (en) 2016-09-01
US9588896B2 (en) 2017-03-07
JPWO2015132877A1 (ja) 2017-03-30
WO2015132877A1 (ja) 2015-09-11

Similar Documents

Publication Publication Date Title
JP6203937B2 (ja) 計算機およびメモリ制御方法
US12019872B2 (en) Storage device that writes data from a host during garbage collection
US10614888B2 (en) Memory system that selectively writes in single-level cell mode or multi-level cell mode to reduce program/erase cycles
JP6517684B2 (ja) メモリシステムおよび制御方法
KR102371916B1 (ko) 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US10884630B2 (en) Storage system
JP6730434B2 (ja) ハイブリッドキャッシュ
US20180129600A1 (en) Memory system and control method
JP6517685B2 (ja) メモリシステムおよび制御方法
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
US11960749B2 (en) Data migration method, host, and solid state disk
KR101924022B1 (ko) 메모리 시스템 및 그것의 페이지 교체 방법
US9864526B2 (en) Wear leveling using multiple activity counters
US10310764B2 (en) Semiconductor memory device and storage apparatus comprising semiconductor memory device
JP2009205335A (ja) 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
CN111796761A (zh) 存储器件、控制器以及用于操作控制器的方法
US11269559B2 (en) Data processing device
US20130173855A1 (en) Method of operating storage device including volatile memory and nonvolatile memory
JP6353981B2 (ja) ストレージシステム、及び、記憶制御方法
KR20150096177A (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
US10838855B2 (en) Storage system and storage control method
TW201546614A (zh) 電子裝置以及資料寫入方法
CN114764307A (zh) 计算机系统及其数据管理方法
TW201348963A (zh) 外接儲存裝置加速器及其方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170510

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: 20170815

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170830

R150 Certificate of patent or registration of utility model

Ref document number: 6203937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees