(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022186582
(43)【公開日】2022-12-15
(54)【発明の名称】情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置
(51)【国際特許分類】
G06F 12/00 20060101AFI20221208BHJP
G06F 12/02 20060101ALI20221208BHJP
G06F 12/1009 20160101ALI20221208BHJP
G06F 16/185 20190101ALI20221208BHJP
【FI】
G06F12/00 550Z
G06F12/02 570A
G06F12/1009
G06F16/185
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022003767
(22)【出願日】2022-01-13
(31)【優先権主張番号】P 2021094226
(32)【優先日】2021-06-04
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】木下 怜佳
(72)【発明者】
【氏名】今村 智史
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AB26
5B160NA03
5B205MM01
5B205RR04
(57)【要約】 (修正有)
【課題】メモリを効率よく利用する情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置を提供する。
【解決手段】情報処理装置1において、制御部100のDIMM(Dual Inline Memory Module)書換回数監視部151は、PMEM(Persistent Memory)301~303のモジュール毎の総書き換え回数を取得する。ファイル移動部152は、PMEM301~303のページ毎のページ書き換え回数を基に特定のファイルの書き換え回数を取得して、特定のファイルの書き換え回数が移動閾値以上の場合、特定のファイルが格納されたモジュールよりも総書き換え回数の少ないモジュールに特定のファイルを移動する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
Persistent Memory(PMEM)のモジュール毎の総書き換え回数を取得し、
前記PMEMのページ毎のページ書き換え回数を基に特定のファイルの書き換え回数を取得して、前特定のファイルの書き換え回数が移動閾値以上の場合、前記特定のファイルが格納されたモジュールよりも前記総書き換え回数の少ないモジュールに前記特定のファイルを移動する
処理をコンピュータに実行させることを特徴とする情報処理装置制御プログラム。
【請求項2】
各前記モジュールで発生したイベントの回数をカウントする監視装置から得られた統計情報を基に前記モジュール毎の前記総書き換え回数を算出することを特徴とする請求項1に記載の情報処理装置制御プログラム。
【請求項3】
仮想アドレス空間における前記特定のファイルに割り当てられた仮想アドレス範囲を取得し、
前記仮想アドレス範囲に対応する物理アドレスを有する各前記ページの前記ページ書き換え回数を、メモリアクセス要求を処理するメモリ管理ユニットから取得し、
取得した各前記ページの前記ページ書き換え回数を合計して前記特定のファイルの書き換え回数を取得する
ことを特徴とする請求項1又は2に記載の情報処理装置制御プログラム。
【請求項4】
前記特定のファイルが仮想アドレス空間からアンマップされる際に、前記特定のファイルの移動を行うことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置制御プログラム。
【請求項5】
前記特定のファイルを前記総書き換え回数が最小の前記モジュールに移動することを特徴とする請求項1~4のいずれか一つに記載の情報処理装置制御プログラム。
【請求項6】
Persistent Memory(PMEM)のモジュール毎の総書き換え回数を取得し、
前記PMEMのページ毎のページ書き換え回数を基に特定のファイルの書き換え回数を取得して、前特定のファイルの書き換え回数が移動閾値以上の場合、前記特定のファイルが格納されたモジュールよりも前記総書き換え回数の少ないモジュールに前記特定のファイルを移動する
処理をコンピュータに実行させることを特徴とする情報処理装置制御方法。
【請求項7】
Persistent Memory(PMEM)のモジュール毎の総書き換え回数を取得する書換回数監視部と、
前記PMEMのページ毎のページ書き換え回数を基に特定のファイルの書き換え回数を取得して、前記特定のファイルの書き換え回数が移動閾値以上の場合、前記特定のファイルが格納されたモジュールよりも前記総書き換え回数の少ないモジュールに前記特定のファイルを移動するファイル移動部と
を備えたことを特徴とする情報処理装置。
【請求項8】
前記特定のファイルの書き換え回数を基に前記特定のファイルの第1書換頻度を算出し、且つ、前記モジュール毎の書換回数を基に前記モジュール毎の第2書換頻度を算出し、前記第1書換頻度及び前記第2書換頻度を基に、前記モジュール間の書換頻度の差が小さくなるように前記特定のファイルの移動先となる前記モジュールを決定させることを特徴とする請求項1~3のいずれか一つに記載の情報処理装置制御プログラム。
【請求項9】
ファイルが仮想アドレス空間からアンマップされる際に、前記ファイルの移動リクエストをリクエストキューに格納し、
所定期間に前記リクエストキューに蓄積された前記移動リクエストを1つずつ選択して、選択した前記移動リクエストで指定された前記ファイルを前記特定のファイルとして移動させることを順番に繰り返す
処理を前記コンピュータに実行させることを特徴とする請求項8に記載の情報処理装置制御プログラム。
【請求項10】
前記特定のファイルの書き換え回数を基に前記特定のファイルの第1書換頻度を算出し、且つ、前記モジュール毎の書換回数を基に前記モジュール毎の第2書換頻度を算出し、前記第1書換頻度及び前記第2書換頻度を基に、前記モジュール間の書換頻度の差が小さくなるように前記特定のファイルの移動先となる前記モジュールを決定させることを特徴とする請求項6に記載の情報処理装置制御方法。
【請求項11】
前記ファイル移動部は、前記特定のファイルの書き換え回数を基に前記特定のファイルの第1書換頻度を算出し、且つ、前記モジュール毎の書き換え回数を基に前記モジュール毎の第2書換頻度を算出し、前記第1書換頻度及び前記第2書換頻度を基に、前記モジュール間の書換頻度の差が小さくなるように前記特定のファイルの移動先となる前記モジュールを決定することを特徴とする請求項7に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置に関する。
【背景技術】
【0002】
近年、パーシステントメモリ(PMEM:Persistent Memory)が登場し、容量の大きい不揮発性メインメモリとしての使用が注目されている。PMEMの書き換え耐久性は、DRAM(Dynamic Random Access Memory)よりも低い。一例として、DRAMの書き換え寿命が1015サイクルであるのに対して、PMEMの書き換え寿命は108サイクルであると言われる。
【0003】
例えば、PMEMを用いた情報処理装置のハードウェア構成としては以下のようなものがある。1つのCPU(Central Processing Unit)に対して複数枚のPMEM DIMM(Dual Inline Memory Module)が接続される。CPUには、PMC(Hardware Performance Monitoring Counter)と呼ばれる監視装置及びメモリコントローラなどが搭載される。PMCは、実行されるハードウェアのイベントの回数をカウントする。さらに、PMCは、PMEMの書き換え回数もカウント可能である。
【0004】
例えば、PMEM DIMMは、インターリーブされずにそれぞれ個別のPMEMデバイスとして使用される場合がある。CPUにより動作されるアプリケーションは、各PMEMに対してロード命令やストア命令によりバイトアクセスする。この場合、アプリケーションは、OS(Operating System)のファイルシステムを介さずに、PMEMに直接アクセスを行う。
【0005】
このように、PMEM DIMMをインターリーブせずに使用することで、以下のような利点がある。1つは、プロセスに割り当てるPMEM DIMMを物理的に分離することで動作安定性を向上させることができる。逆に、インターリーブした場合、プロセス数が多いほどPMEM DIMMの競合が発生し、動作が不安定になるおそれがある。また、他の1つは、セキュリティ対策として機能させることができる。例えば、PMEM DIMMを物理的に分離することで、サイドチャネル攻撃を抑止することができる。また、同じPMEM DIMMへの他のプロセスによるアクセス悪影響を軽減することができる。
【0006】
ここで、PMEMの使用手順を説明する。アプリケーションからメモリマップシステムコールが呼び出される。OSは、メモリマップシステムコールを受けて、アプリケーションの仮想アドレス空間にファイルをメモリマップする。次に、アプリケーションは、ロード命令やストア命令でOSを介さずにファイルに直接アクセスする。その後、アプリケーションは、メモリアンマップシステムコールを呼び出す。OSは、メモリアンマップシステムコールを受けて、仮想アドレス空間からファイルをアンマップする。
【0007】
なお、不揮発性メモリの管理技術として、メインメモリ内のデータ格納部にページ毎の書き換え回数の情報を格納し、ページ単位で不揮発性メモリDIMM内での書き換え回数の平滑化を行う技術が提案されている。また、不揮発メモリで構成されたメインメモリを固定長のブロック単位で分け、ブロック毎に書き換え回数を管理し、書き込みの多いブロックを非使用ブロックとする技術が提案されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2013-254357号公報
【特許文献2】米国特許出願公開第2013/0282967号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来のPMEM DIMMの管理方法では、複数のPMEM DIMMにおいて特定のPMEM DIMMに書き換えが集中する場合、書き換えが集中したPMEM DIMMが他と比べて早くウェアアウトしてしまう。ウェアアウトした場合、そのPMEM DIMMの交換などの作業が発生してしまい情報処理装置の作業効率が落ちる。このように、従来のPMEM DIMMの管理方法ではメモリを効率よく利用することが困難である。
【0010】
そこで、PMEM DIMMへのアクセスを平滑化することが望ましいが、PMEM DIMMへOSを介さずアプリケーションがアクセスする場合、OSやファイルシステムといったソフトウェアではPMEMの書き換え回数を把握することが困難である。そのため、従来のPMEM DIMMを搭載した情報処理装置の技術では、メモリを効率よく利用することが困難である。
【0011】
さらに、ページ単位で不揮発性メモリDIMM内での書き換え回数の平滑化を行う技術では、PMEM DIMM間の書き換え回数の平滑化は行われず、メモリを効率よく利用することは困難である。また、不揮発メモリで構成されたメインメモリを固定長のブロック単位で分けブロック毎に書き換え回数を管理する技術では、ファイル単位でのPMEM DIMM間の書き換え回数の管理は行われず、メモリを効率よく利用することは困難である。
【0012】
開示の技術は、上記に鑑みてなされたものであって、メモリを効率よく利用する情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
本願の開示する情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置の一つの態様において、PMEMのモジュール毎の総書き換え回数を取得し、前記PMEMのページ毎のページ書き換え回数を基に特定のファイルの書き換え回数を取得し、ファイル移動部は、前記特定のファイルの書き換え回数が移動閾値以上の場合、前記特定のファイルが格納されたモジュールよりも前記総書き換え回数の少ないモジュールに前記特定のファイルを移動する。
【発明の効果】
【0014】
1つの側面では、本発明は、メモリを効率よく利用することができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、実施例に係る情報処理装置のハードウェア構成図である。
【
図2】
図2は、CPU、DRAM DIMM及びPMEM DIMMの詳細を示すハードウェア構成図である。
【
図3】
図3は、実施例1に係る情報処理装置のPMEM管理に関する機能のブロック図である。
【
図4】
図4は、実施例1に係るPMEM毎の総書き換え数の監視処理を説明するための図である。
【
図5】
図5は、実施例1に係るファイル移動処理を説明するための図である。
【
図6】
図6は、ページの書き換え回数管理処理を説明するための図である。
【
図7】
図7は、実施例1に係るPMEM毎の総書き換え数の監視処理のフローチャートである。
【
図8】
図8は、ページの書き換え回数管理処理のフローチャートである。
【
図9】
図9は、実施例1に係るファイル移動処理のフローチャートである。
【
図10】
図10は、複数ファイルの移動を考慮しない場合の短時間での複数ファイルの移動を説明するための図である。
【
図11】
図11は、実施例2に係る情報処理装置のPMEM管理に関する機能のブロック図である。
【
図12】
図12は、実施例2に係るPMEM毎の総書き換え数の監視処理を説明するための図である。
【
図13】
図13は、ファイルの書き換え頻度の管理処理を説明するための図である。
【
図14】
図14は、PMEM毎の書き換え頻度算出処理のフローチャートである。
【
図15】
図15は、ファイルの書き換え頻度管理処理のフローチャートである。
【
図16】
図16は、実施例2に係るファイル移動処理のフローチャートである。
【
図17】
図17は、実施例2に係る情報処理装置による複数ファイルの移動を説明するための図である。
【発明を実施するための形態】
【0016】
以下に、本願の開示する情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置制御プログラム、情報処理装置制御方法及び情報処理装置が限定されるものではない。
【実施例0017】
図1は、実施例に係る情報処理装置のハードウェア構成図である。情報処理装置1は、
図1に示すように、CPU11、DRAM装置12、PMEM装置13、記憶装置14、入出力インタフェース15、外部記録媒体処理装置16及び通信インタフェース17を有する。CPU11は、バスを介して、DRAM装置12、PMEM装置13、記憶装置14、入出力インタフェース15、外部記録媒体処理装置16及び通信インタフェース17に接続される。
【0018】
入出力インタフェース15は、外部からの信号の入力及び外部への信号の出力のインタフェースである。入出力インタフェース15は、例えば、キーボードやマウスといった入力装置及びモニタなどの出力装置が接続される。入出力インタフェース15は、入力装置を用いて入力された信号をCPU11へバスを介して送信する。入出力インタフェース15は、CPU11から出力を指示された信号を出力装置へバスを介して送信して出力させる。
【0019】
外部記録媒体処理装置16は、CD(Compact Disk)やDVD(Digital Versatile Disc)などの搬送可能記憶媒体が装着可能である。そして、外部記録媒体処理装置16は、装着された搬送可能記憶媒体からのデータの読出しや、装着された搬送可能記憶媒体へのデータの読出しを行う。
【0020】
通信インタフェース17は、外部装置との通信を中継するインタフェースである。例えば、通信インタフェース17は、情報処理装置1で動作するアプリケーションの利用者の端末装置とCPU11との間の通信を中継する。
【0021】
記憶装置14は、ハードディスクやSSD(Solid State Drive)などの補助記憶装置である。記憶装置14は、以下に説明する情報処理装置1が有する各種機能を実現するためのプログラム及びOSやアプリケーションなどを含む各種プログラムを格納する。
【0022】
DRAM装置12は、複数のDRAM DIMMを有する。また、PMEM装置13は、複数のPMEM DIMMを有する。DRAM装置12及びPMEM装置13は、いずれも主記憶装置として動作する。
【0023】
CPU11は、記憶装置14から各種プログラムを読み出してDRAM装置12のDRAM又はPMEM装置13のPMEMに展開して実行する。これにより、CPU11は、例えば、OSやアプリケーションを動作させる。さらに、CPU11は、以下に説明する情報処理装置1が有する各種機能を実現する。
【0024】
図2は、CPU、DRAM DIMM及びPMEM DIMMの詳細を示すハードウェア構成図である。
【0025】
DRAM DIMM121~123は、
図1のDRAM装置12に含まれる。DRAM DIMM121~123は、DRAMを複数搭載したモジュールである。PMEM DIMM131~133は、
図1のPMEM装置13に含まれる。PMEM DIMM131~133は、PMEMを複数搭載したモジュールである。DRAM DIMM121~123及びPMEM DIMM131~133は、いずれもそれぞれが1つのメモリスロット(不図示)に搭載される。PMEM及びDRAMは、DRAM DIMM121~123又はPMEM DIMM131~133の単位でデータの読み書きが行われる。本実施例では、PMEM DIMMは、インターリーブされずに使用される。
【0026】
CPU11は、
図2に示すように、PMC111、メモリコントローラ112、メモリ管理ユニット113及びCPUコア114を有する。メモリコントローラ112には、DRAM DIMM121~123が接続される。また、メモリコントローラ112には、PMEM DIMM131~133が接続される。
【0027】
PMC111、メモリ管理ユニット113及びCPUコア114は、メモリコントローラ112を介して、DRAM DIMM121~123及びPMEM DIMM131~133にアクセスする。CPUコア114は、OSやアプリケーションを動作させる。
【0028】
PMC111は、実行されるハードウェアのイベントの回数のカウントを行う監視装置である。ハードウェアのイベントとしては、例えば、クロック、命令のリタイア、キャッシュヒット・ミス、メモリアクセスなどがある。特に、PMC111は、PMEM DIMM131~133のそれぞれの書き換え回数のカウントを行う。
【0029】
メモリ管理ユニット113は、MMU(Memory Management Unit)とも呼ばれる。メモリ管理ユニット113は、アプリケーション実行部102から指定された仮想アドレスを物理アドレスに変換する。
【0030】
図3は、実施例1に係る情報処理装置のPMEM管理に関する機能のブロック図である。次に、
図3を参照して、本実施例に係る情報処理装置1によるPMEM管理について説明する。
【0031】
情報処理装置1は、制御部100、PMEM301~303及びDRAM120を有する。制御部100の機能は、
図1及び2に例示したCPU11により実現される。また、PMEM301~303は、
図2に例示したPMEM DIMM131~133のそれぞれにあたる。すなわち、PMEM301~303は、それぞれ異なるDIMMであり、PMEM301~303の間でインターリーブは行われない。以下では、PMEM301~303のそれぞれを区別しない場合、PMEM300と呼ぶ。DRAM120は、
図2に例示したDRAM DIMM121~123にあたる。ここでは、DRAM DIMM121~123のそれぞれを区別せずに、DRAM120と表す。
【0032】
DRAM120は、ページテーブル200を有する。ページテーブル200は、OSが用いる仮想アドレスと実際のメモリにおける物理アドレスとを対応付けるために使われるデータ構造である。
【0033】
制御部100は、OS実行部101、アプリケーション実行部102、PMC111、メモリコントローラ112A及び112B、並びに、メモリ管理ユニット113を有する。メモリコントローラ112A及び112Bは、
図1のメモリコントローラ112にあたる。
図3では、PMC111、メモリコントローラ112A及び112B、並びに、メモリ管理ユニット113については、各機能を実現する
図2におけるハードウェアで表した。ここで、
図3では、説明の都合上、メモリコントローラ112をメモリコントローラ112A及び112Bの2つで表したが、メモリコントローラ112は1つでもよい。
【0034】
OS実行部101は、DIMM書換回数監視部151、ファイル移動部152、命令処理部153及びメモリマップ情報154を有する。OS実行部101は、例えば、CPUコア114により実現される。
【0035】
DIMM書換回数監視部151は、各PMEM300をPMC111経由で監視して、定期的にPMEM300毎の総書き換え回数をPMC111から取得する。そして、DIMM書換回数監視部151は、ファイル移動部10からの取得要求に応じて、取得したPMEM300毎の総書き換え回数を通知する。
【0036】
図4は、実施例1に係るPMEM毎の総書き換え数の監視処理を説明するための図である。ここで、
図4を参照して、DIMM書換回数監視部151の動作を説明する。
図4では、説明を分かり易くするため、メモリコントローラ112Aを省略した。ただし、実際には、PMC111は、メモリコントローラ112Aを介してPMEM300にアクセスする。
【0037】
DIMM書換回数監視部151は、
図4に示すような、総書き換え回数管理ファイル110を有する。総書き換え回数管理ファイル110は、統計情報であるPMEM300毎の総書き換え回数を登録して管理するファイルである。DIMM書換回数監視部151は、何も登録されていない状態の総書き換え回数管理ファイル110を初期状態として用いることができる。
【0038】
DIMM書換回数監視部151は、定期的に各PMEM300の書き換え回数の取得要求をPMC111に行う。そして、DIMM書換回数監視部151は、各PMEM300の書き換え回数を取得する。
【0039】
次に、DIMM書換回数監視部151は、前回取得した書き換え回数を総書き換え回数管理ファイル110から取得する。ここで、総書き換え回数管理ファイル110が初期状態の場合、DIMM書換回数監視部151は、例えば前回取得した書き換え回数として0を取得してもよい。
【0040】
次に、DIMM書換回数監視部151は、今回取得した各PMEM300の書き換え回数から前回取得した書き換え回数を減算する。その後、DIMM書換回数監視部151は、前回算出した各PMEM300の総書き換え回数のそれぞれに、算出した各差分を加算して、PMEM300毎の総書き換え回数を新たに算出する。その後、DIMM書換回数監視部151は、算出した各PMEM300の総書き換え回数で総書き換え回数管理ファイル110の情報を上書きして更新する。
【0041】
ここで、PMC111は、CPU11に配置できる個数が物理的に限られている。そのため、各PMC111は、異なるイベントを同じカウンタでカウントする場合がある。すなわち、イベント切り替え時にはそれまでのカウンタ値がリセットされる。このように、PMC111がリセットされる可能性があり、各PMEM300のトータルの書き換え回数がカウントされない場合がある。そのため、本実施例に係るDIMM書換回数監視部151は、前回のカウント値との差分を前回の総書き換え回数に加算することでこれまでの総書き換え回数を算出する。
【0042】
ただし、特定のPMC111を特定のPMEM300の書き換え回数用に固定することが可能な場合には、DIMM書換回数監視部151は、上述の計算を行わずにカウンタ値をそのまま総書き換え回数として利用することができる。その場合、特定のPMC111では、他のイベントのカウントへの使用は制限される。
【0043】
さらに、DIMM書換回数監視部151は、各PMEM300の総書き換え回数の取得要求をファイル移動部152から受ける。そして、DIMM書換回数監視部151は、総書き換え回数管理ファイル110に登録された各PMEM300の総書き換え回数の情報を取得してファイル移動部152へ出力する。
【0044】
ファイル移動部152は、仮想アドレス空間にマッピングされたファイルのメモリアンマップ時に、アンマップされるファイルの仮想アドレス範囲に対応する各ページの書き換え回数を把握して、ファイルの書き換え回数を算出する。そして、ファイル移動部152は、ファイルの書き換え回数が所定の移動閾値を超えた場合、書き換え回数が最小のPMEM300へファイルを移動する。これにより、ファイル移動部152は、PMEM300間での書き換え回数の平滑化を行うことができる。以下に、ファイル移動部152の詳細について説明する。
【0045】
ファイル移動部152は、メモリアンマップの開始の通知を命令処理部153から受ける。次に、ファイル移動部152は、仮想アドレス空間にマッピングされたファイルをメモリアンマップする際に、仮想アドレス空間におけるアンマップされる仮想アドレス範囲を命令処理部153から取得する。
【0046】
図5は、実施例1に係るファイル移動処理を説明するための図である。ここで、
図5を参照して、ファイル移動部152の動作を説明する。
図5では、説明を分かり易くするためメモリコントローラ112Bを省略した。ただし、実際には、PMC111は、メモリコントローラ112Aを介してPMEM300にアクセスする。ファイル移動部152は、
図5に示すように、メモリマップ情報154を参照して、仮想アドレス範囲141に対応するファイル142のファイル名を取得する。このファイル名は、後のファイル移動時に使用される。
【0047】
次に、ファイル移動部152は、ページテーブル200に登録された仮想アドレス範囲の各ページの書き換え回数の取得要求をメモリ管理ユニット113に行う。ページテーブル200の詳細については後で説明する。その後、ファイル移動部152は、
図5に示すように、ページテーブル200に登録された仮想アドレス範囲に対応する物理アドレスを有する各ページの書き換え回数の情報をメモリ管理ユニット113から取得する。この各ページの書き換え回数が、ページ書き換え回数の一例にあたる。
【0048】
次に、ファイル移動部152は、取得した各ページの書き換え回数を合計して、ファイルの書き換え回数の総和を算出する。そして、ファイル移動部152は、算出した書き換え回数の総和が予め決められた移動閾値以上か否かを判定する。
【0049】
書き換え回数の総和が予め決められた移動閾値未満の場合、ファイル移動部152は、メモリアンマップの実行を命令処理部153に通知する。そして、ファイル移動部152は、PMEM300間のファイル移動処理を終了する。
【0050】
これに対して、書き換え回数の総和が予め決められた移動閾値以上の場合、ファイル移動部152は、各PMEM300の総書き換え回数の取得要求をDIMM書換回数監視部151に行う。その後、ファイル移動部152は、各PMEM300の総書き換え回数の情報をDIMM書換回数監視部151から取得する。
【0051】
次に、ファイル移動部152は、判定対象のファイルが配置されたPMEM300の総書き換え回数を抽出する。その後、ファイル移動部152は、判定対象のファイルが配置されたPMEM300の総書き換え回数が、各PMEM300の総書き換え数の全体の中で最も少ないか否かを判定する。判定対象のファイルが配置されたPMEM300の総書き換え回数が最小の場合、移動先となるPMEM300が存在しないので、ファイル移動部152は、メモリアンマップの実行を命令処理部153に通知して、PMEM300間のファイル移動処理を終了する。
【0052】
これに対して、判定対象のファイルが配置されたPMEM300の総書き換え回数が最小でない場合、ファイル移動部152は、総書き換え回数が最小のPMEM300を特定する。そして、ファイル移動部152は、判定対象のファイルを特定したPMEM300へ移動する。その後、ファイル移動部152は、メモリアンマップの実行の許可を命令処理部153に通知して、PMEM300間のファイル移動処理を終了する。
【0053】
例えば、
図5に示すように、PMEM301、PMEM302、PMEM303の順で総書き換え回数が多い場合で説明する。この場合に、例えば、ファイル移動部152は、判定対象のファイルがPMEM303に配置されていると判定する。そして、ファイル移動部152は、判定対象のファイルがPMEM303の総書き換え回数が最小でないことを確認する。次に、ファイル移動部152は、総書き換え回数が最小のPMEM300としてPMEM301を特定する。そして、ファイル移動部152は、PMEM303に格納されていたファイルをPMEM303に移動する。この移動は、実際には、ファイル移動部152からの指示を受けたメモリコントローラ112Aにより行われる。その後、ファイル移動部152は、メモリアンマップの実行を命令処理部153に通知して、PMEM300間のファイル移動処理を終了する。
【0054】
図3に戻って説明を続ける。命令処理部153は、DIMM書換回数監視部151及びファイル移動部152により行われる処理以外のOSの各種処理を実行する。例えば、命令処理部153は、アプリケーション実行部102から送出されるメモリマップシステムコールやメモリアンマップシステムコールを処理する。命令処理部153は、メモリマップシステムコールの呼び出しをアプリケーション実行部102から受ける。そして、命令処理部153は、アプリケーションに割り当てた仮想メモリ空間にファイルをメモリマップする。この時、命令処理部153は、ファイルに割り当てたメモリ範囲とファイルの情報とを対応付けるメモリマップ情報154を生成する。その後、命令処理部153は、ファイルをマップした仮想メモリ空間のアドレスをアプリケーション実行部102に通知する。
【0055】
その後、メモリアクセス処理が終了すると、命令処理部153は、メモリアンマップシステムコールの呼び出しをアプリケーション実行部102から受ける。命令処理部153は、メモリアンマップの開始をファイル移動部152に通知する。その後、命令処理部153は、メモリアンマップの実行の許可をファイル移動部152から受けて、仮想アドレス空間からファイルをアンマップする。
【0056】
アプリケーション実行部102は、アプリケーションを動作させて各アプリケーションによる各種処理を実行し、その処理の実行に付随して、PMEM300へのアクセス処理を開始する。そして、アプリケーション実行部102は、OS実行部101の命令処理部153に対してメモリマップシステムコールを呼び出す。その後、アプリケーション実行部102は、ファイルがマップされた仮想メモリ空間のアドレスの通知を命令処理部153から受ける。そして、アプリケーション実行部102は、通知された仮想アドレス空間のアドレスを用いてメモリ管理ユニット113にメモリマップされたファイルに対する直接データの書き込や読み出しを指示する。その後、メモリアクセス処理が終了すると、アプリケーション実行部102は、命令処理部153に対してメモリアンマップシステムコールを呼び出す。
【0057】
PMC111は、定期的に各PMEM300の書き換え回数の取得要求を定期的にDIMM書換回数監視部151から受ける。次に、PMC111は、メモリコントローラ112Aを介して、PMEM300毎の書き換え回数を取得する。そして、PMC111は、取得した各PMEM300の書き換え回数をDIMM書換回数監視部151へ応答する。
【0058】
メモリ管理ユニット113は、命令処理部153から、メモリマップの指示を受ける。そして、メモリ管理ユニット113は、メモリマップで指定された仮想アドレスのメモリ範囲に対応するPMEM300の物理アドレスをメモリコントローラ112Aを介して取得する。そして、メモリ管理ユニット113は、通知された仮想アドレスと確保した物理アドレスとの対応を表す変換テーブルを生成して保持する。
【0059】
また、メモリ管理ユニット113は、PMEM300の各ページの書き換え回数を管理して、メモリアンマップ時に仮想アドレス範囲の各ページの書き換え回数をファイル移動部152に通知する。
図6は、ページの書き換え回数管理処理を説明するための図である。ここで、
図6を参照して、メモリ管理ユニット113によるページの書き換え回数管理処理を説明する。
【0060】
メモリ管理ユニット113は、DRAM120にページテーブル200を格納する。ページテーブル200は、各ページの情報が登録されるページ毎のページテーブルエンティティ(PET:Page Table Entity)201を含む。各ページテーブルエンティティ201には、
図6に示すように、各ページの物理アドレス、ダーティービット及びrw(read wright)権限が格納される。さらに、本実施例では、メモリ管理ユニット113は、ページテーブルエンティティ201に、ページ書換回数210を登録する。ページ書換回数210は、そのページテーブルエンティティ201に対応するページの通算の書き換え回数である。
【0061】
メモリ管理ユニット113は、アプリケーション実行部102から仮想アドレスへのアクセス要求を受ける。次に、メモリ管理ユニット113は、変換テーブルを用いて仮想アドレスに対応する物理アドレスを取得する。メモリ管理ユニット113は、アプリケーション実行部102から受けたアクセス命令がPMEM300への書き込み命令の場合、書き込み先のページに対応するページテーブルエンティティ201におけるページ書換回数210を1つインクリメントする。次に、メモリ管理ユニット113は、取得した物理アドレスを命令処理部153へ出力する。
【0062】
そして、メモリ管理ユニット113は、アプリケーション実行部102からPMEM300へのアクセス命令を受けた場合、物理アドレスを用いてメモリコントローラ112Aを介してPMEM300に対して命令にしたがいデータの書き込み又は読み出しを行う。その後、メモリ管理ユニット113は、処理結果をアプリケーション実行部102に出力する。
【0063】
また、メモリ管理ユニット113は、ページテーブル200に登録された仮想アドレス範囲の各ページの書き換え回数の取得要求をファイル移動部152から受ける。そして、メモリ管理ユニット113は、仮想アドレス範囲に対応する物理アドレスを変換テーブルから取得する。次に、メモリ管理ユニット113は、メモリコントローラ112Bを介してDRAM120が保持するページテーブル200のうちの、仮想アドレス範囲に含まれる各ページに対応するページテーブルエンティティ201におけるページ書換回数210を参照する。そして、メモリ管理ユニット113は、ページテーブル200から、仮想アドレス範囲に含まれる各ページのページ書き換え回数を取得する。次に、メモリ管理ユニット113は、仮想アドレス範囲の各ページの書き換え回数の情報をファイル移動部152へ出力する。その後、OSを実行する命令処理部153からメモリアンマップの指示を受けると、メモリ管理ユニット113は、仮想アドレスに対応付けPMEM300又はDRAM120の物理アドレスを解放する。
【0064】
ここで、本実施例では、ページの書き換え回数をページテーブル200で保持したが、ページの書き換え回数の保持形態は他の形態であってもよい。例えば、ページテーブル200以外のDRAM120の領域、記憶装置14、CPU11の内部、PMEM300の内部に保持させることも可能である。ただし、ページテーブル200以外のDRAM120の領域に格納した場合、OSなどのソフトウェアを用いたカウンタの探索を行うことになる。その場合、ソフトウェアによる低速な探索となる。これに対して、ページテーブル200を用いた場合、メモリ管理ユニット113による高速な探索が行えるため、処理時間を短縮することができる。また、記憶装置14を用いることは、アクセスに時間がかかり現実的ではない。また、CPU11の内部に格納する場合、CPU11の面積制約が厳しくカウンタを置くスペースの確保が難しい。また、PMEM300の内部に格納する場合、ウェアレベリング用の物理アドレスの書き換えカウンタを用いることが考えられるが、アクセスが困難であり現実的ではない。以上のことから、本実施例では、ページテーブル200でページの書き換え回数を保持する構成を採用した。
【0065】
メモリコントローラ112Aは、PMC111からの書き換え回数の取得指示を受けて、各PMEM300にアクセスして書き換え回数を取得する。そして、メモリコントローラ112Aは、取得した各PMEM300にアクセスして書き換え回数をPMC111に通知する。
【0066】
また、メモリコントローラ112Aは、メモリ管理ユニット113からの指示を受けて、PMEM300の領域の確保を行い、確保した領域の物理アドレスをメモリ管理ユニット113に通知する。その後、メモリコントローラ112Aは、メモリ管理ユニット113からの指示に従って、PMEM300に対するデータの書き込みや読み出しの処理を実行する。
【0067】
メモリコントローラ112Bは、ページテーブル200に登録された仮想アドレス範囲の各ページの書き換え回数の取得要求をメモリ管理ユニット113から受ける。そして、メモリコントローラ112Bは、指定されたページ毎の書き換え回数をDRAM120が保持するページテーブル200から取得する。その後、メモリコントローラ112Bは、仮想アドレス範囲の各ページの書き換え回数をメモリ管理ユニット113へ出力する。
【0068】
図7は、PMEM毎の総書き換え数の監視処理のフローチャートである。次に、
図7を参照して、DIMM書換回数監視部151によるPMEM300毎の総書き換え数の監視処理の流れを説明する。
【0069】
DIMM書換回数監視部151は、PMEM300毎の書き換え回数の取得要求をPMC111に出力する。その後、DIMM書換回数監視部151は、PMEM300毎の書き換え回数をPMC111から取得する(ステップS101)。
【0070】
次に、DIMM書換回数監視部151は、前回取得した書き換え回数を総書き換え回数管理ファイル110から取得する。そして、DIMM書換回数監視部151は、今回取得した各PMEM300の書き換え回数と前回取得した書き換え回数の差分を算出する(ステップS102)。
【0071】
次に、DIMM書換回数監視部151は、前回算出した各PMEM300の総書き換え回数のそれぞれに算出したそれぞれに対応する差分を加算する(ステップS103)。
【0072】
その後、DIMM書換回数監視部151は、DIMM書換回数監視部151は、算出した差分を各PMEM300の総書き換え回数として、総書き換え回数管理ファイル110に登録して更新する(ステップS104)。
【0073】
図8は、ページの書き換え回数管理処理のフローチャートである。次に、
図8を参照して、メモリ管理ユニット113によるページの書き換え回数管理処理の流れを説明する。
【0074】
メモリ管理ユニット113は、PMEM300へのアクセス命令をアプリケーション実行部102から取得する(ステップS201)。
【0075】
次に、メモリ管理ユニット113は、アクセス命令で指定された仮想アドレスを取得する(ステップS202)。
【0076】
次に、メモリ管理ユニット113は、変換テーブルを用いて取得した仮想アドレスを物理アドレスに変換して、アクセス先の物理アドレスを取得する(ステップS203)。
【0077】
次に、メモリ管理ユニット113は、アクセス命令が書き込み命令か否かを判定する(ステップS204)。アクセス命令が書き込み命令でない場合(ステップS204:否定)、ページの書き換え回数管理処理は、ステップS206へ進む。
【0078】
これに対して、アクセス命令が書き込み命令の場合(ステップS204:肯定)、メモリ管理ユニット113は、ページテーブル200における書き込み先のページのページテーブルエンティティ201内の書き換え回数をインクリメントする(ステップS205)。
【0079】
その後、メモリ管理ユニット113は、物理アドレスを命令処理部153へ出力する(ステップS206)。
【0080】
図9は、実施例1に係るファイル移動処理のフローチャートである。次に、
図9を参照して、ファイル移動部152によるファイル移動処理の流れを説明する。
【0081】
OSを実行する命令処理部153は、メモリアンマップ処理を開始する(ステップS301)。ファイル移動部152は、メモリアンマップ処理の開始の通知を命令処理部153から受ける。
【0082】
ファイル移動部152は、アンマップされるPMEM300の仮想アドレス範囲をOSを実行する命令処理部153から取得する(ステップS302)。
【0083】
次に、ファイル移動部152は、メモリマップ情報154を参照して、取得した仮想アドレス範囲に対応するファイル名を取得する(ステップS303)。
【0084】
次に、ファイル移動部152は、仮想アドレス範囲に対応する各ページの書き換え回数をメモリ管理ユニット113から取得する(ステップS304)。
【0085】
次に、ファイル移動部152は、仮想アドレス範囲に対応する各ページの書き換え回数を合計してファイルの書き換え回数を算出する。そして、ファイル移動部152は、ファイルの書き換え回数が予め決められた移動閾値以上か否かを判定する(ステップS305)。ファイルの書き換え回数が移動閾値未満の場合(ステップS305:否定)、ファイルの移動処理は、ステップS309へ進む。
【0086】
これに対して、ファイルの書き換え回数が移動閾値以上の場合(ステップS305:肯定)、ファイル移動部152は、各PMEM300の総書き換え回数をDIMM書換回数監視部151から取得する(ステップS306)。
【0087】
次に、ファイル移動部152は、ファイルが配置されたPMEM300の総書き換え回数が、各PMEM300の総書き換え回数の中で最小か否かを判定する(ステップS307)。ファイルが配置されたPMEM300の総書き換え回数が最小の場合(ステップS307:肯定)、ファイルの移動処理は、ステップS309へ進む。
【0088】
これに対して、ファイルが配置されたPMEM300の総書き換え回数が最小でない場合(ステップS307:否定)、ファイル移動部152は、ファイルを総書き換え回数が最小のPMEM300に移動する(ステップS308)。
【0089】
その後、ファイル移動部152は、メモリアンマップの実行の許可を命令処理部153に通知する。命令処理部153は、ファイル移動部152からの許可を受けて、メモリアンマップを実行する(ステップS309)。
【0090】
以上に説明したように、本実施例に係る情報処理装置では、OSがPMC経由で各PMEMの書き換え回数を取得してそれぞれの総書き換え回数を算出する。また、OSは、メモリアンマップ時に、メモリ管理ユニット経由で各ページの書き換え回数を取得しファイルの書き換え回数を求め、移動閾値以上の場合にそのファイルの書き換え頻度が高いと判定して、総書き換え回数が最小のPMEMに移動する。
【0091】
これにより、情報処理装置は、PMEM DIMM毎の書き換え頻度を平滑化することができる。すなわち、書き換えが集中することで特定のPMEM DIMMが他と比べて早くウェアアウトしてしまう事象の発生を抑えることができる。したがって、メモリを効率よく利用することが可能となる。また、アンマップするファイルを書き換え対象とすることで、データの移動処理が容易となり、PMEM DIMM毎の書き換え頻度の平滑化を容易に行うことが可能となる。
次に、実施例2に係る情報処理装置について説明する。実施例1では、1つずつのファイルの移動によりPMEM DIMM毎の書き換え頻度の平滑化を行ったが、複数ファイルの移動は考慮されていない。複数ファイルが短時間で移動された場合、特定の同一PMEM DIMMに書き換え回数が高いファイルが集中的に移動する可能性がある。その場合、移動先のPMEM DIMMのウェアアウトが発生し易くなる。
ここでは、PMEM#1の総書き換え回数が高く、PMEM#2の総書き換え回数は中程度であり、PMEM#3の総書き換え回数が低いものとする。そして、PMEM#1では、ファイル91及び92の書き換え回数が移動閾値以上であり、ファイル93の書き換え回数が移動閾値未満である。また、PMEM#2では、ファイル94及び95の書き換え回数が移動閾値以上である。また、PMEM#3では、ファイル96の書き換え回数が移動閾値未満である。
この場合、PMEM#1のファイル91及び92が、総書き換え回数が最小のPMEM#3に移動される。また、PMEM#2のファイル94及び95も、総書き換え回数が最小のPMEM#3に移動される。
このような移動が行われた場合、PMEM#1~#3のそれぞれの総書き換え回数の変化は、グラフ97~99で示されるようになる。グラフ97~99はいずれも縦軸が総書き換え回数を表し、横軸が時間経過を表す。グラフ97~99では、傾きにより総書き換え回数の増加傾向、すなわち書き換え頻度の変化が示される。グラフ97及び98に示すように、ファイルの移動により、PMEM#1及び#2は、移動後に書き換え頻度が下がる。これに対して、PMEM#3では、PMEM#1及び#2の書き換え頻度の低下分が移し替えられるため、移動後に書き換え頻度が大きく増加する。この場合、PMEM#3でウェアアウトが発生する可能性が高くなる。
DIMM書換回数監視部151は、PMEM300毎の総書き換え回数の算出に加えて、PMEM300毎の書き換え頻度の算出を行なう。以下に、DIMM書換回数監視部151の動作について具体的に説明する。
DIMM書換回数監視部151は、定期的にPMEM300毎の書き換え回数をPMC111から取得する。次に、DIMM書換回数監視部151は、前回取得した書き換え回数を総書き換え回数管理ファイル110から取得する。そして、DIMM書換回数監視部151は、今回取得した各PMEM300の書き換え回数から前回取得した書き換え回数を減算して差分を算出する。その後、DIMM書換回数監視部151は、前回算出した各PMEM300の総書き換え回数のそれぞれに、算出した各差分を加算して、PMEM300毎の総書き換え回数を新たに算出する。その後、DIMM書換回数監視部151は、算出した各PMEM300の総書き換え回数で総書き換え回数管理ファイル110の情報を上書きして更新する。
また、DIMM書換回数監視部151は、PMEM300毎に、前回の総書き換え回数と今回の総書き換え回数の差分を算出する。次に、DIMM書換回数監視部151は、算出した差分を前回の総書き換え回数を算出した時刻から今回の総書き換え回数を算出した時刻までの時間で除算して、PMEM300毎の単位時間あたりの書き換え頻度を算出する。そして、DIMM書換回数監視部151は、算出したPMEM300毎の書き換え頻度の情報を総書き換え回数管理ファイル110に登録する。また、DIMM書換回数監視部151は、算出した今回の総書き換え回数の情報を総書き換え回数管理ファイル110の前回の総書き換え回数の欄に登録する。
ファイル書換回数管理部156は、メモリマップの開始の通知を命令処理部153から受ける。次に、ファイル書換回数管理部156は、仮想アドレス空間におけるマップされた仮想アドレス範囲を命令処理部153から取得する。次に、ファイル書換回数管理部156は、メモリマップ情報154に登録されている仮想アドレス範囲141とファイル142との対応関係から、マップされた仮想アドレス範囲に対応するファイルの識別情報を取得する。そして、ファイル書換回数管理部156は、ファイルがマップされた時刻をファイル書換頻度管理テーブル400に登録する。
また、ファイル書換回数管理部156は、メモリアンマップの開始の通知を命令処理部153から受ける。次に、ファイル書換回数管理部156は、仮想アドレス空間におけるアンマップされる仮想アドレス範囲を命令処理部153から取得する。次に、ファイル書換回数管理部156は、メモリマップ情報154に登録されている仮想アドレス範囲141とファイル142との対応関係から、アンマップされた仮想アドレス範囲に対応するファイルの識別情報を取得する。
ここで、本実施例では、ファイル書換回数管理部156は、マップ時及びアンマップ時の両方でマッピング処理の対象とされた仮想アドレス範囲を取得したが、マップ時に取得した情報を保持しておきアンマップ時に使用してもよい。
その後、ファイル書換回数管理部156は、アンマップされたファイルの移動リクエストをリクエストキュー155に格納する。このように、ファイルの移動はアンマップの時点では行われず、移動リクエストとしてリクエストキュー155にファイル移動部152によるファイルの移動処理が行われるまで蓄積される。
ファイル移動部152は、移動対象ファイルについてマップされた時刻、アンマップされた時刻及びファイル書換回数をファイル書換回数管理部156が保持するファイル書換頻度管理テーブル400から取得する。次に、ファイル移動部152は、移動対象ファイルの書き換え回数が移動閾値以上か否かを判定する。移動対象ファイルの書き換え回数が移動閾値未満の場合、ファイル移動部152は、その移動対象ファイルの移動を行わず、次の移動リクエストの処理に移る。
これに対して、移動対象ファイルの書き換え回数が移動閾値以上の場合、ファイル移動部152は、マップされた時刻及びアンマップされた時刻から、マップされてからアンマップまでの移動対象ファイルのマッピング時間を算出する。次に、ファイル移動部152は、ファイル書換回数をマッピング時間で除算して、その間の移動対象ファイルの書き換え頻度を算出する。
次に、ファイル移動部152は、PMEM300毎の書き換え頻度をDIMM書換回数監視部151が保持する総書き換え回数管理ファイル110から取得する。そして、ファイル移動部152は、移動対象ファイルの書き換え頻度及び各PMEM300の書き換え頻度を用いて、PMEM300間の書き換え頻度の差が最小となるように移動対象ファイルの移動先のPMEM300を決定する。
例えば、PMEM301~303が存在し、PMEM301が移動対象ファイルを保持する場合で説明する。ファイル移動部152は、移動対象ファイルを保持するPMEM301以外の中からPMEM302を選択する。次に、ファイル移動部152は、PMEM301からPMEM302に移動対象ファイルを移動させた場合の各PMEM301~302の書き換え頻度を予測する。具体的には、ファイル移動部152は、PMEM301の書き換え頻度から移動対象ファイルの書き換え頻度を減算して、移動後のPMEM301の書き換え頻度を予測する。また、ファイル移動部152は、PMEM302の書き換え頻度に移動対象ファイルの書き換え頻度を加算して、移動後のPMEM302の書き換え頻度を予測する。また、ファイル移動部152は、PMEM303の書き換え頻度はそのまま移動後も維持されると予測する。同様に、ファイル移動部152は、PMEM303を選択して、PMEM301からPMEM303に移動対象ファイルを移動させた場合の各PMEM301~302の書き換え頻度を予測する。また、ファイル移動部152は、現在の状態の各PMEM301~302の書き換え頻度を、移動対象ファイルを移動しない場合の各PMEM301~302の書き換え頻度として予測する。
その後、ファイル移動部152は、各場合についてPMEM301~302の書き換え頻度の差分の最大値を算出し、最大値が最小の場合の移動先を移動対象ファイルの移動先のPMEM300と決定する。
その後、ファイル移動部152は、移動対象ファイルを移動先として決定したPMEM300に移動する。ここで、移動先として決定されたPMEM300が移動元のPMEM300の場合、ファイル移動部152は、移動対象ファイルの移動を行わない。
DIMM書換回数監視部151は、PMEM300毎の書き換え回数の取得要求をPMC111に出力する。その後、DIMM書換回数監視部151は、PMEM300毎の書き換え回数をPMC111から取得する(ステップS401)。
次に、DIMM書換回数監視部151は、前回取得した書き換え回数を総書き換え回数管理ファイル110から取得する。そして、DIMM書換回数監視部151は、今回取得した各PMEM300の書き換え回数と前回取得した書き換え回数の差分を算出する(ステップS402)。
次に、DIMM書換回数監視部151は、前回算出した各PMEM300の総書き換え回数のそれぞれに算出したそれぞれに対応する差分を加算する(ステップS403)。
その後、DIMM書換回数監視部151は、DIMM書換回数監視部151は、算出した差分を各PMEM300の総書き換え回数として、総書き換え回数管理ファイル110に登録して更新する(ステップS404)。
次に、DIMM書換回数監視部151は、PMEM300毎に、前回の総書き換え回数と今回の総書き換え回数の差分を算出する。次に、DIMM書換回数監視部151は、算出した差分を前回の総書き換え回数を算出した時刻から今回の総書き換え回数を算出した時刻までの時間で除算して、PMEM300毎の書き換え頻度を算出する(ステップS405)。
その後、DIMM書換回数監視部151は、算出したPMEM300毎の書き換え頻度の情報を総書き換え回数管理ファイル110に登録する(ステップS406)。また、DIMM書換回数監視部151は、算出した今回の総書き換え回数の情報を総書き換え回数管理ファイル110の前回の総書き換え回数の欄に登録する。
命令処理部153は、メモリマップ処理を開始する(ステップS501)。そして、ファイル書換回数管理部156は、メモリマップ処理の開始の通知を命令処理部153から受ける。
次に、ファイル書換回数管理部156は、ファイル書換頻度管理テーブル400における仮想アドレス範囲に該当するファイルの欄にマップ時刻を登録する(ステップS504)。
命令処理部153は、メモリマップ処理を実行する(ステップS505)。そして、メモリマップ処理が完了すると、命令処理部153は、メモリアンマップ処理を開始する(ステップS506)。ファイル書換回数管理部156は、メモリアンマップ処理の開始の通知を命令処理部153から受ける。
次に、ファイル書換回数管理部156は、該当するファイルのアンマップ時刻及び書き換え回数をファイル書換頻度管理テーブル400に登録する(ステップS511)。
ファイル移動部152は、前回のファイル移動処理から所定時間が経過したか否かを判定する(ステップS601)。所定時間が経過していない場合(ステップS601:否定)、ファイル移動部152は、所定時間が経過するまで待機する。
これに対して、所定時間が経過した場合(ステップS601:肯定)、ファイル移動部152は、リクエストキュー155から移動リクエストを1つ取得する(ステップS602)。
次に、移動対象ファイルについてマップされた時刻、アンマップされた時刻及びファイル書換回数をファイル書換回数管理部156が保持するファイル書換頻度管理テーブル400から取得する。次に、ファイル移動部152は、移動対象ファイルの書き換え回数が移動閾値以上か否かを判定する(ステップS603)。移動対象ファイルの書き換え回数が移動閾値未満の場合(ステップS603:否定)、ファイル移動部152は、ステップS613へ進む。
これに対して、移動対象ファイルの書き換え回数が移動閾値以上の場合(ステップS603:肯定)、ファイル移動部152は、マップされた時刻及びアンマップされた時刻から、マップされてからアンマップまでの移動対象ファイルのマッピング時間を算出する。次に、ファイル移動部152は、ファイル書換回数をマッピング時間で除算して、その間の移動対象ファイルの書き換え頻度を算出する(ステップS604)。
次に、ファイル移動部152は、PMEM300毎の書き換え頻度をDIMM書換回数監視部151が保持する総書き換え回数管理ファイル110から取得する(ステップS605)。
次に、ファイル移動部152は、算出した書き換え頻度の最大値が保持する書き換え頻度の最大値未満か否かを判定する(ステップS609)。ここで、既に算出した書き換え頻度の最大値が無い場合、ファイル移動部152は、算出した書き換え頻度の最大値が保持する書き換え頻度の最大値未満と判定する。
これに対して、算出した書き換え頻度の最大値が保持する書き換え頻度の最大値未満の場合(ステップS609:肯定)、ファイル移動部152は、保持する書き換え頻度の最大値を算出した書き換え頻度の最大値に更新する(ステップS610)。
その後、ファイル移動部152は、全てPMEM300について移動先とした場合の書き換え頻度の差分の最大値の算出が完了したか否かを判定する(ステップS611)。書き換え頻度の差分の最大値の算出における移動先として選択されていないPMEM300が残っている場合(ステップS611:否定)、ファイル移動部152は、ステップS606へ戻る。
これに対して、全てPMEM300について移動先とした場合の書き換え頻度の差分の最大値の算出が完了した場合(ステップS611:肯定)、ファイル移動部152は、書き換え頻度の差分が最小となる場合のPMEM300を移動先として決定する。そして、ファイル移動部152は、移動先として決定したPMEM300に移動対象ファイルを移動する(ステップS612)。
その後、ファイル移動部152は、リクエストキュー155に移動リクエストが残っているか否かを判定する(ステップS613)。リクエストキュー155に移動リクエストが残っている場合(ステップS613:肯定)、ファイル移動部152は、ステップS602へ戻る。これに対して、リクエストキュー155に移動リクエストが残っていない場合(ステップS613:否定)、ファイル移動部152は、ファイル移動処理を終了する。
この場合、情報処理装置1は、ファイル914の移動リクエストを取得して、各PMEM300の書き換え頻度の予測から移動先をPMEM#3と決定して、ファイル914をPMEM#3に移動する。また、情報処理装置1は、ファイル912の移動リクエストを取得して、各PMEM300の書き換え頻度の予測から移動先をPMEM#2と決定して、ファイル912をPMEM#2に移動する。また、情報処理装置1は、ファイル912の移動リクエストを取得して、ファイル913の書き換え回数が移動閾値未満であることからファイル912は移動しない。これにより、ファイル移動処理を実行した後の各PMEM#1~#3は、状態902となる。
以上に説明したように、本実施例に係る情報処理装置は、書き換え回数の多いファイルを複数まとめて移動する。そして、本実施例に係る情報処理装置は、ファイルの移動時に、マッピング時間におけるファイルの書き換え頻度を算出し、算出したファイルの書き換え頻度とPMEM DIMM毎の書き換え頻度から、ファイルを移動した後のPMEM DIMM毎の書き換え頻度を予測する。その後、本実施例に係る情報処理装置は、書き換え頻度の差がPMEM DIMM間で最小となるように移動先を決定して、各ファイルの移動を順次行う。
これにより、本実施例に係る情報処理装置は、短時間で複数のファイルの移動が発生する場合に、特定のPMEM DIMMにファイルの移動が集中することによるウェアアウトが発生を抑制することができる。したがって、PMEM DIMMの書き込み頻度、言い換えれば消耗速度を均一化することができ、特定PMEM DIMMのウェアアウトを起こし難くすることができる。