(57)【要約】      （修正有）【課題】アプリケーションにおけるメモリアクセスの特性に応じて、より適当なページサイズを設定する。【解決手段】ページサイズ決定方法は、単位時間内に発生したキャッシュミスの数をＯＳから取得する取得処理と、単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおけるキャッシュミスの発生傾向を示すスコアを算出する算出処理と、ページサイズに対応付けてスコアを記憶する記憶処理と、アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関するスコアの特定Ｓ９０１に基づいて、起動されたアプリケーションのプロセスが使用するページサイズを選択する選択処理Ｓ９０５、Ｓ９０９、Ｓ９１３、Ｓ９１５とを含む。【選択図】図９
2019070894.tif 000002
【特許請求の範囲】
【請求項１】
単位時間内に発生したキャッシュミスの数をＯＳ（Operating System）から取得する取得処理と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出する算出処理と、
前記ページサイズに対応付けて前記スコアを記憶する記憶処理と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択処理と
を、コンピュータに実行させるページサイズ決定プログラム。
【請求項２】
前記取得処理において、前記単位時間内における命令実行数を取得し、
前記算出処理において算出される前記スコアは、前記キャッシュミスの数と負の相関関係を有し、且つ前記命令実行数と正の相関関係を有し、
前記選択処理において、より大きいスコアに対応するページサイズを選択する
請求項１記載のページサイズ決定プログラム。
【請求項３】
単位時間内に発生したキャッシュミスの数をＯＳから取得する取得処理と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出する算出処理と、
前記ページサイズに対応付けて前記スコアを記憶する記憶処理と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択処理と
を含み、コンピュータにより実行されるページサイズ決定方法。
【請求項４】
単位時間内に発生したキャッシュミスの数をＯＳから取得する取得部と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出し、前記ページサイズに対応付けて当該スコアを記憶する算出部と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択部と
を有するページサイズ決定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページサイズを決定する技術に関する。
【背景技術】
【０００２】
例えばＯＳ（Operating System）のＬｉｎｕｘ（登録商標）では、プロセス毎にメモリアクセスの単位であるページサイズを設定することができる。Ｌｉｎｕｘ（登録商標）の場合、ページサイズとして４ＫＢ、２ＭＢ又は１ＧＢを使用できる。
【０００３】
大きなデータを扱うアプリケーションについては、４ＫＢのページでメモリアクセスを行うと、２ＭＢ又は１ＧＢのページでメモリアクセスを行う場合に比べてキャッシュミスの頻度が高くなる。
【０００４】
一方、扱うデータが小さいアプリケーションでは、２ＭＢ又は１ＧＢのページでメモリアクセスを行うと、４ＫＢのページでメモリアクセスを行う場合に比べて命令の実行効率が悪くなる。
【０００５】
しかし、実行しようとするアプリケーションについて、いずれのページサイズが適しているかをユーザが判断することは難しい面がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−２２２９９１号公報
【特許文献２】特開２００９−２４５０４７号公報
【特許文献３】特開平１１−１４３７３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一側面では、アプリケーションにおけるメモリアクセスの特性に応じて、より適当なページサイズを決定することである。
【課題を解決するための手段】
【０００８】
一態様に係るページサイズ決定方法は、（Ａ）単位時間内に発生したキャッシュミスの数をＯＳから取得する取得処理と、（Ｂ）単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおけるキャッシュミスの発生傾向を示すスコアを算出する算出処理と、（Ｃ）ページサイズに対応付けてスコアを記憶する記憶処理と、（Ｄ）アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関するスコアに基づいて、起動されたアプリケーションのプロセスが使用するページサイズを選択する選択処理とを含む。
【発明の効果】
【０００９】
一側面としては、アプリケーションにおけるメモリアクセスの特性に応じて、より適当なページサイズを決定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理装置のモジュール構成例を示す図である。
【図２】図２は、検出条件テーブルの例を示す図である。
【図３】図３は、第１ルーチン処理（Ａ）フローを示す図である。
【図４】図４は、検出処理（Ａ）フローを示す図である。
【図５】図５は、第１準備処理フローを示す図である。
【図６】図６は、プロセステーブルの例を示す図である。
【図７】図７は、三次スコアテーブルの例を示す図である。
【図８】図８は、二次スコアテーブルの例を示す図である。
【図９】図９は、選択処理フローを示す図である。
【図１０】図１０は、第２準備処理フローを示す図である。
【図１１】図１１は、第２ルーチン処理（Ａ）フローを示す図である。
【図１２】図１２は、第１算出処理フローを示す図である。
【図１３】図１３は、一次スコアテーブルの例を示す図である。
【図１４】図１４は、第２ルーチン処理（Ａ）フローを示す図である。
【図１５】図１５は、第２算出処理フローを示す図である。
【図１６】図１６は、第３算出処理フローを示す図である。
【図１７】図１７は、実施の形態２におけるネットワーク構成例を示す図である。
【図１８】図１８は、管理装置のモジュール構成例を示す図である。
【図１９】図１９は、実施の形態２における情報処理装置のモジュール構成例を示す図である。
【図２０】図２０は、検出処理（Ｂ）フローを示す図である。
【図２１】図２１は、第１ルーチン処理（Ｂ）フローを示す図である。
【図２２】図２２は、設定処理フローを示す図である。
【図２３】図２３は、計測処理フローを示す図である。
【図２４】図２４は、第２ルーチン処理（Ｂ）フローを示す図である。
【図２５】図２５は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
例えば、ＯＳとしてＬｉｎｕｘ（登録商標）を用いるシステム上で動作する業務アプリケーションにメモリを割り当てる場合、エンドユーザの性能要件や当該アプリケーションの特性により、適当な割り当て方は異なる。但し、エンドユーザの業務における性能要件(例えば、応答時間やスループットなど)は様々である。また、当該アプリケーションの特性もまちまちである。
【００１２】
一般的なメモリ管理方法では、物理的なメモリアドレスを直接用いるのではなく、仮想メモリという仕組みを採用している。アプリケーションは、仮想メモリに対するアクセスを想定して動作する。プロセッサは、仮想メモリのアドレスを物理メモリのアドレスに変換してから、物理メモリへアクセスする。仮想アドレスと物理アドレスとの対応表であるページテーブルは、メモリに設けられている。メモリの管理単位はページと言われ、例えばＩｎｔｅｌ  ｘ８６プロセッサにおけるページサイズのデフォルトは、４ＫＢである。
【００１３】
また、仮想アドレスを物理アドレスへ変換する処理を高速化するために、当該プロセッサのメモリ管理ユニットは、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）というキャッシュを備えている。ＴＬＢを用いれば、一度変換したアドレスについて次回以降の変換が高速に行えるようになる。
【００１４】
以下の例では、ページサイズとしてデフォルト以外のサイズを適用できる。ここでは、ページサイズの候補は、４ＫＢ又は２ＭＢであるものとする。
【００１５】
ページサイズとしてデフォルトである４ＫＢを適用すれば、ＯＳ１０３によるメモリの割り当ては比較的早く完了する。従って、応答性能が重視されるアプリケーションに適している。
【００１６】
一方、２ＭＢのヒュージページを用いれば、ＴＬＢの１エントリで管理されるメモリのサイズが大きくなり、メモリを大量に使用するアプリケーションの動作において、アドレス変換の回数及びキャッシュミスの回数が減り、スループットの向上が見込まれるようになる。
【００１７】
本実施の形態では、アプリケーションが適用した各ページサイズにおける性能の実績に応じて、より適正なページサイズを決定する。
【００１８】
図１に、情報処理装置１０１のモジュール構成例を示す。情報処理装置１０１は、ＯＳ１０３及びアプリケーション１０７を有する。ＯＳ１０３は、タスク管理情報テーブル１０５を保持する。タスク管理情報テーブル１０５については、後述する。
【００１９】
また、情報処理装置１０１は、ページサイズ決定部１１１を有する。ページサイズ決定部１１１は、アプリケーション１０７毎にページサイズを決定する。
【００２０】
ページサイズ決定部１１１は、検出部１１３、第１準備部１１５、選択部１１７、設定部１１９、第２準備部１２１、取得部１２３及び算出部１２５を有する。検出部１１３は、新たに生成されたプロセスを検出する。第１準備部１１５は、検出されたプロセスに関するテーブルの準備を行う。選択部１１７は、生成されたプロセスで使用するページサイズを選択する。設定部１１９は、ＯＳ１０３に対してプロセスで使用するページサイズを設定する。第２準備部１２１は、プロセスに関する性能計測の準備を行う。取得部１２３は、ＣＰＵ（Central Processing Unit）の性能情報を取得する。算出部１２５は、第１スコア乃至第３スコアを算出する。本実施の形態では、３段階に分けてスコアを算出する。第１スコア乃至第３スコアについては、後述する。
【００２１】
ページサイズ決定部１１１は、更に検出条件記憶部１３１、プロセステーブル記憶部１３３、一次スコア記憶部１３５、二次スコア記憶部１３７及び三次スコア記憶部１３９を有する。検出条件記憶部１３１は、検出条件テーブルを記憶する。検出条件テーブルについては、図２を用いて後述する。プロセステーブル記憶部１３３は、プロセステーブルを記憶する。プロセステーブルについては、図６を用いて後述する。一次スコア記憶部１３５は、一次スコアテーブルを記憶する。一次スコアテーブルについては、図１３を用いて後述する。二次スコア記憶部１３７は、二次スコアテーブルを記憶する。二次スコアテーブルについては、図８を用いて後述する。三次スコア記憶部１３９は、三次スコアテーブルを記憶する。三次スコアテーブルについては、図７を用いて後述する。
【００２２】
上述したページサイズ決定部１１１、検出部１１３、第１準備部１１５、選択部１１７、設定部１１９、第２準備部１２１、取得部１２３及び算出部１２５は、ハードウエア資源（例えば、図２５）と、以下で述べる処理をＣＰＵ２５０３に実行させるプログラムとを用いて実現される。
【００２３】
上述した検出条件記憶部１３１、プロセステーブル記憶部１３３、一次スコア記憶部１３５、二次スコア記憶部１３７及び三次スコア記憶部１３９は、ハードウエア資源（例えば、図２５）を用いて実現される。
【００２４】
図２に、検出条件テーブルの例を示す。この例における検出条件テーブルは、検出条件が格納されるレコードを有している。この例における検出条件は、アプリケーション１０７のフルパスに関する条件である。第１レコードの検出条件では、アプリケーション１０７の格納位置を指定し、ファイル名を指定していない。この場合、ファイル名は任意である。第２レコードの検出条件では、アプリケーション１０７の格納位置及びファイル名を指定している。
【００２５】
図３に、第１ルーチン処理（Ａ）フローを示す。検出部１１３は、検出処理（Ａ）を実行する（Ｓ３０１）。検出部１１３は、検出処理（Ａ）において、新たに生成されたプロセスを検出する。
【００２６】
図４に、検出処理（Ａ）フローを示す。検出部１１３は、プロセス生成のシステムコールをフックする（Ｓ４０１）。そして、検出部１１３は、ＯＳ１０３からタスク管理情報テーブル１０５を取得する（Ｓ４０３）。タスク管理情報テーブル１０５は、タスク毎のエントリを有している。タスク管理情報テーブル１０５のエントリは、プロセスＩＤ、プログラムのフルパス、ページサイズを含んでいる。
【００２７】
検出部１１３は、タスク管理情報テーブル１０５における新しいプロセスのエントリを特定する（Ｓ４０５）。例えば、検出部１１３は、システムコールに含まれるプログラムのフルパスに基づいてエントリを特定する。或いは、検出部１１３は、前回取得したタスク管理情報テーブル１０５との比較によって、新しいプロセスのエントリを特定するようにしてもよい。そして、検出部１１３は、当該エントリからフルパスとプロセスＩＤとを取得する（Ｓ４０７）。
【００２８】
検出部１１３は、検出条件を１つ特定する（Ｓ４０９）。検出部１１３は、取得したフルパスが検出条件に合致するか否かを判定する（Ｓ４１１）。フルパスが検出条件に合致すると判定した場合には、検出処理（Ａ）を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００２９】
一方、フルパスが検出条件に合致しないと判定した場合には、検出部１１３は、未特定の検出条件があるか否かを判定する（Ｓ４１３）。未特定の検出条件があると判定した場合には、Ｓ４０９に示した処理に戻って、上述した処理を繰り返す。
【００３０】
一方、未特定の検出条件がないと判定した場合には、Ｓ４０１に示した処理に戻って、上述した処理を繰り返す。
【００３１】
図３の説明に戻る。第１準備部１１５は、第１準備処理を実行する（Ｓ３０３）。第１準備部１１５は、第１準備処理において、検出されたプロセスに関するテーブルの準備を行う。
【００３２】
図５に、第１準備処理フローを示す。第１準備部１１５は、プロセステーブルに新たなレコードを設けて、図４のＳ４０７において取得されたフルパスとプロセスＩＤとを設定する（Ｓ５０１）。
【００３３】
図６に、プロセステーブルの例を示す。この例におけるプロセステーブルは、ページサイズの設定対象となるアプリケーション１０７のプロセスに対応するレコードを有している。プロセステーブルのレコードは、プロセスＩＤが格納されるフィールドと、フルパスが格納されるフィールドと、ページサイズが格納されるフィールドと、計測フラグのフィールドとを有している。
【００３４】
プロセスＩＤは、ページサイズの設定対象であるアプリケーション１０７のプロセスを特定する。フルパスは、当該アプリケーション１０７の格納位置とファイル名を特定する。ページサイズは、当該プロセスに適用されているページサイズである。計測フラグは、性能計測の対象であるか否かを特定する。計測フラグがＯＮである場合に、当該プロセスは性能計測の対象である。一方、計測フラグがＯＦＦである場合に、当該プロセスは性能計測の対象でない。プロセステーブル記憶部１３３は、例えば揮発性のメモリに設けられる。
【００３５】
図５の説明に戻る。Ｓ５０１に示した処理で、ページサイズが格納されるフィールドには、未設定の旨を示すコードが格納される。また、同じく、計測フラグは、ＯＦＦに設定される。
【００３６】
第１準備部１１５は、図４のＳ４０７において取得されたフルパスのアプリケーション１０７が三次スコアテーブルに登録されているか否かを判定する（Ｓ５０３）。
【００３７】
図７に、三次スコアテーブルの例を示す。この例における三次スコアテーブルは、ページサイズの設定対象であるアプリケーション１０７に対応するレコードを有している。三次スコアテーブルのレコードは、フルパスが格納されるフィールドと、ページサイズ：４ＫＢの三次スコアが格納されるフィールドと、ページサイズ：２ＭＢの三次スコアが格納されるフィールドとを有している。
【００３８】
フルパスは、ページサイズの設定対象であるアプリケーション１０７の格納位置とファイル名を特定する。ページサイズ：４ＫＢの三次スコアは、当該アプリケーション１０７のプロセスにおいてページサイズとして４ＫＢを用いた場合の適性を示す。ページサイズ：２ＭＢの三次スコアは、当該アプリケーション１０７のプロセスにおいてページサイズとして２ＭＢを用いた場合の適性を示す。三次スコア記憶部１３９は、例えば不揮発性のメモリに設けられる。
【００３９】
図５の説明に戻る。当該アプリケーション１０７が三次スコアテーブルに登録されていると判定した場合には、第１準備処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。一方、当該アプリケーション１０７が三次スコアテーブルに登録されていないと判定した場合には、第１準備部１１５は、三次スコアテーブルに、当該アプリケーション１０７のレコードを設ける（Ｓ５０５）。新たなレコードには、図４のＳ４０７において取得されたフルパスが格納される。この段階で、ページサイズ：４ＫＢの三次スコア及びページサイズ：２ＭＢの三次スコアのフィールドには、未設定である旨のコードが格納される。
【００４０】
第１準備部１１５は、当該アプリケーション１０７に関する二次スコアテーブルを設ける（Ｓ５０７）。そして、第１準備処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００４１】
図８に、二次スコアテーブルの例を示す。二次スコアテーブルは、ページサイズの設定対象であるアプリケーション１０７毎に設けられる。二次スコアテーブルのヘッダには、当該アプリケーション１０７のフルパスが格納される。
【００４２】
この例における二次スコアテーブルは、当該アプリケーション１０７のプロセスが生成された機会に対応するレコードを有している。二次スコアテーブルのレコードは、日付時刻が格納されるフィールドと、ページサイズが格納されるフィールドと、二次スコアが格納されるフィールドとを有している。
【００４３】
日付時刻は、二次スコアを算出したタイミングを特定する。ページサイズは、当該アプリケーション１０７のプロセスにおいて設定されていたページサイズである。二次スコアは、当該アプリケーション１０７のプロセスにおける当該ページサイズの適性を示す。二次スコア記憶部１３７は、例えば不揮発性のメモリに設けられる。
【００４４】
図３の説明に戻る。選択部１１７は、選択処理を実行する（Ｓ３０５）。選択部１１７は、選択処理において、新しいプロセスで使用するページサイズを選択する
【００４５】
図９に、選択処理フローを示す。選択部１１７は、図４のＳ４０７において取得したフルパスに基づいて、三次スコアのレコードを特定する（Ｓ９０１）。つまり、当該フルパスが格納されているレコードが特定される。
【００４６】
選択部１１７は、４ＫＢの三次スコア及び２ＭＢの三次スコアが設定されているか否かを判定する（Ｓ９０３）。４ＫＢの三次スコア及び２ＭＢの三次スコアが設定されていると判定した場合には、選択部１１７は、大きい方の三次スコアに対応するページサイズを選択する（Ｓ９０５）。そして、選択処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００４７】
一方、４ＫＢの三次スコア及び２ＭＢの三次スコアが設定されている状態ではない場合、選択部１１７は、４ＫＢの三次スコアのみが設定されているか否かを判定する（Ｓ９０７）。４ＫＢの三次スコアのみが設定されていると判定した場合には、選択部１１７は、ページサイズとして２ＭＢを選択する（Ｓ９０９）。そして、選択処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００４８】
一方、４ＫＢの三次スコアのみが設定されている状態ではない場合、選択部１１７は、２ＭＢの三次スコアのみが設定されているか否かを判定する（Ｓ９１１）。２ＭＢの三次スコアのみが設定されていると判定した場合には、選択部１１７は、ページサイズとして４ＫＢを選択する（Ｓ９１３）。そして、選択処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００４９】
一方、２ＭＢの三次スコアのみが設定されている状態ではない場合、つまり、４ＫＢの三次スコア及び２ＭＢの三次スコアのいずれも設定されていない場合には、選択部１１７は、所定のページサイズを選択する（Ｓ９１５）。例えば、選択部１１７は、ページサイズとして４ＫＢを選択する。但し、選択部１１７は、ページサイズとして２ＭＢを選択するようにしてもよい。そして、選択処理を終え、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００５０】
図３の説明に戻る。設定部１１９は、ＯＳ１０３に対して、当該プロセスに関して選択されたページサイズを設定する（Ｓ３０７）。具体的には、設定部１１９は、タスク管理情報テーブル１０５における当該プロセスのエントリに当該ページサイズを設定する。
【００５１】
第２準備部１２１は、第２準備処理を実行する（Ｓ３０９）。第２準備部１２１は、第２準備処理において、プロセスに関する性能計測の準備を行う。
【００５２】
図１０に、第２準備処理フローを示す。第２準備部１２１は、図５のＳ５０１において設けられたプロセステーブルのレコードに、選択されたページサイズを設定する（Ｓ１００１）。また、第２準備部１２１は、プロセステーブルの当該レコードにおける計測フラグをＯＮに設定する（Ｓ１００３）。第２準備処理を終えると、呼び出し元の第１ルーチン処理（Ａ）に復帰する。
【００５３】
図３の説明に戻る。Ｓ３０９の処理を終えると、Ｓ３０１に示した処理に戻って上述した処理を繰り返す。以上で、第１ルーチン処理（Ａ）についての説明を終える。
【００５４】
続いて、第２ルーチン処理（Ａ）について説明する。第２ルーチン処理（Ａ）は、第１ルーチン処理（Ａ）と並行に実行される。図１１に、第２ルーチン処理（Ａ）フローを示す。取得部１２３は、周期的に計測のタイミングを待つ（Ｓ１１０１）。
【００５５】
情報処理装置１０１が複数のＣＰＵを有する場合、取得部１２３はＣＰＵを１つ特定する（Ｓ１１０３）。情報処理装置１０１が有するＣＰＵの数が１である場合には、当該ＣＰＵに関して以下に示す処理を行う。
【００５６】
取得部１２３は、当該ＣＰＵの性能情報をＯＳ１０３から取得する（Ｓ１１０５）。具体的には、取得部１２３は、ＣＰＵにおける実行命令数、実行サイクル数、ＴＬＢのストアミス数及びＴＬＢのロードミス数を取得する。
【００５７】
ＴＬＢのストアミス数は、メモリへのストアアクセス時におけるＴＬＢに関するキャッシュミスの数である。ＴＬＢのロードミス数は、メモリへのロードアクセス時におけるＴＬＢに関するキャッシュミスの数である。
【００５８】
そして、取得部１２３は、１周期における実行命令数、実行サイクル数、ＴＬＢのストアミス数及びＴＬＢのロードミス数を算出する。具体的には、取得部１２３は、今回の実行命令数から前回の実行命令数を引いて、１周期における実行命令数を算出する。同じく、取得部１２３は、今回の実行サイクル数から前回の実行サイクル数を引いて、１周期における実行サイクル数を算出する。同じく、取得部１２３は、今回のＴＬＢのストアミス数から前回のＴＬＢのストアミス数を引いて、１周期におけるＴＬＢのストアミス数を算出する。同じく、取得部１２３は、今回のＴＬＢのロードミス数から前回のＴＬＢのロードミス数を引いて、１周期におけるＴＬＢのロードミス数を算出する。
【００５９】
取得部１２３は、ＯＳ１０３から現在動作しているプロセスのＩＤを取得する（Ｓ１１０７）。当該プロセスは、アプリケーション１０７に相当するものとする。この例では、検出条件に該当するアプリケーション１０７がＣＰＵを専有すると想定する。
【００６０】
算出部１２５は、プロセステーブルに当該プロセスＩＤのレコードがあるか否かを判定する（Ｓ１１０９）。プロセステーブルに当該プロセスＩＤのレコードがないと判定した場合には、Ｓ１１１５の処理に移る。
【００６１】
一方、プロセステーブルに当該プロセスＩＤのレコードがあると判定した場合には、更に、算出部１２５は、当該レコードの計測フラグがＯＮであるか否かを判定する（Ｓ１１１１）。当該レコードの計測フラグがＯＮではないと判定した場合には、Ｓ１１１５の処理に移る。
【００６２】
一方、当該レコードの計測フラグがＯＮであると判定した場合には、算出部１２５は、第１算出処理を実行する（Ｓ１１１３）。算出部１２５は、第１算出処理において、第１スコアを算出する。
【００６３】
図１２に、第１算出処理フローを示す。算出部１２５は、図１１のＳ１１０７において取得したプロセスＩＤに関する一次スコアテーブルがあるか否かを判定する（Ｓ１２０１）。当該プロセスＩＤに関する一次スコアテーブルがないと判定した場合には、算出部１２５は、当該プロセスＩＤの一次スコアテーブルを生成する（Ｓ１２０３）。
【００６４】
図１３に、一次スコアテーブルの例を示す。一次スコアテーブルは、性能計測の対象であるプロセス毎に設けられる。一次スコアテーブルのヘッダには、当該プロセスのＩＤが格納される。
【００６５】
この例における一次スコアテーブルは、性能計測の機会に対応するレコードを有している。一次スコアテーブルのレコードは、日付時刻が格納されるフィールドと、一次スコアが格納されるフィールドとを有している。
【００６６】
日付時刻は、一次スコアを算出したタイミングを特定する。一次スコアは、当該プロセスにおける当該ページサイズの適性を示す。
【００６７】
図１２の説明に戻る。Ｓ１２０１において当該プロセスＩＤに関する一次スコアテーブルがあると判定した場合には、Ｓ１２０５の処理に移る。
【００６８】
Ｓ１２０５において、算出部１２５は、一次スコアを算出する。一次スコアは、１周期における実行命令数、１周期における実行サイクル数、１周期におけるＴＬＢのストアミス数及び１周期におけるＴＬＢのロードミス数に基づいて算出される。この例における一次スコアは、実行サイクル数当たりの実行命令数を、１周期におけるキャッシュミス数で除した値である。実行サイクル数当たりの実行命令数は、１周期における実行命令数を１周期における実行サイクル数で除することによって求められる。１周期におけるキャッシュミス数は、１周期におけるＴＬＢのストアミス数と１周期におけるＴＬＢのロードミス数との合計である。但し、一次スコアは、この例に限定されない。一次スコアは、１周期における実行命令数を、１周期におけるキャッシュミス数で除した値であってもよい。また、一次スコアは、１周期におけるキャッシュミス数の逆数であってもよい。
【００６９】
算出部１２５は、一次スコアテーブルに新たなレコードを設けて、当該レコードに当日の現在時刻を特定する日付時刻及び一次スコアを設定する（Ｓ１２０７）。第１算出処理を終えると、呼び出し元の第２ルーチン処理（Ａ）に復帰する。
【００７０】
図１１の説明に戻る。取得部１２３は、未特定のＣＰＵがあるか否かを判定する（Ｓ１１１５）。未特定のＣＰＵがあると判定した場合には、Ｓ１１０３に示した処理に戻って、上述した処理を繰り返す。一方、未特定のＣＰＵがないと判定した場合には、端子Ａを介して、図１４に示したＳ１４０１の処理に移る。情報処理装置１０１が有するＣＰＵの数が１である場合には、そのまま図１４に示したＳ１４０１の処理に移る。
【００７１】
図１４の説明に移る。算出部１２５は、プロセステーブルにおいて計測フラグがＯＮであるレコードを１つ特定する（Ｓ１４０１）。尚、プロセステーブルにおいて計測フラグがＯＮであるレコードが無い場合には、Ｓ１４０７におけるＮＯルートに移る。
【００７２】
この例で、計測対象のプロセスが消滅した場合又は一次スコアの数が上限に達した場合に、一次スコアに基づく二次スコアの算出と、二次スコアに基づく三次スコアの算出を行う。
【００７３】
そのため、算出部１２５は、Ｓ１４０１で特定したレコードに格納されているプロセスＩＤのプロセスが存在するか否かを判定する（Ｓ１４０３）。このとき、算出部１２５は、動作しているプロセスのＩＤをＯＳ１０３から取得する。そして、Ｓ１４０１で特定したレコードに格納されているプロセスＩＤが、ＯＳ１０３から取得したプロセスＩＤと一致する場合に、当該プロセスＩＤのプロセスが存在すると判定する。
【００７４】
当該プロセスＩＤのプロセスが存在しないと判定した場合には、Ｓ１４０９に示した第２算出処理に移る。第２算出処理については後述する。
【００７５】
一方、当該プロセスＩＤのプロセスが存在すると判定した場合には、算出部１２５は、当該プロセスＩＤの一次スコアテーブルにおけるレコード数が所定値に達しているか否かを判定する（Ｓ１４０５）。
【００７６】
当該プロセスＩＤの一次スコアテーブルにおけるレコード数が所定値に達していると判定した場合には、Ｓ１４０９に示した第２算出処理に移る。
【００７７】
一方、当該プロセスＩＤの一次スコアテーブルにおけるレコード数が所定値に達していないと判定した場合には、Ｓ１４０７の処理に移る。
【００７８】
Ｓ１４０９に示した第２算出処理において、算出部１２５は、第２スコアを算出する。図１５に、第２算出処理フローを示す。算出部１２５は、図１４のＳ１４０１で特定したレコードに格納されているプロセスＩＤに基づいて一次スコアテーブルを特定し、当該一次スコアテーブルに基づいて二次スコアを算出する（Ｓ１５０１）。二次スコアは、当該一次スコアテーブルに格納されている一次スコアの平均値である。
【００７９】
算出部１２５は、プロセステーブルにおいて当該プロセスＩＤに対応するフルパスを特定し（Ｓ１５０３）、当該フルパスに対応する二次スコアテーブルを特定する（Ｓ１５０５）。また、算出部１２５は、プロセステーブルにおいて当該プロセスＩＤに対応するページサイズを特定する（Ｓ１５０７）。
【００８０】
算出部１２５は、当該二次スコアテーブルに新たなレコードを設け、当日の現在時刻を特定する日付時刻と二次スコアとページサイズとを設定する（Ｓ１５０９）。第２算出処理を終えると、呼び出し元の第２ルーチン処理（Ａ）に復帰する。
【００８１】
図１４の説明に戻る。続いて、算出部１２５は、第３算出処理を実行する（Ｓ１４１１）。算出部１２５は、第３算出処理において、第３スコアを算出する。
【００８２】
図１６に、第３算出処理フローを示す。算出部１２５は、図１５のＳ１５０５で特定した二次スコアテーブルから、図１５のＳ１５０７で特定したページサイズの二次スコアを抽出する（Ｓ１６０１）。例えば、算出部１２５は、所定時間遡った時点以降の二次スコアを抽出する。あるいは、算出部１２５は、現時点に近い所定数の二次スコアを抽出するようにしてもよい。
【００８３】
算出部１２５は、抽出した二次スコアに基づいて三次スコアを算出する（Ｓ１６０３）。三次スコアは、抽出した二次スコアの平均値である。
【００８４】
算出部１２５は、三次スコアテーブルにおいて、図１５のＳ１５０３で特定されたフルパスが格納されているレコードを特定する（Ｓ１６０５）。算出部１２５は、当該レコードに当該ページサイズの三次スコアを設定する（Ｓ１６０７）。
【００８５】
このプロセスに関しては計測を終えるので、算出部１２５は、当該プロセスＩＤに対応する計測フラグをＯＦＦに設定する（Ｓ１６０９）。また、算出部１２５は、当該プロセスＩＤに対応する一次スコアテーブルを削除する（Ｓ１６１１）。第３算出処理を終えると、呼び出し元の第２ルーチン処理（Ａ）に復帰する。
【００８６】
図１４の説明に戻る。算出部１２５は、プロセステーブルにおいて計測フラグがＯＮであるレコードであって、未特定のものがあるか否かを判定する（Ｓ１４０７）。
【００８７】
未特定のレコードがあると判定した場合には、Ｓ１４０１に示した処理に戻って、上述した処理を繰り返す。一方、未特定のレコードがないと判定した場合には、端子Ｂを介して、図１１に示したＳ１１０１の処理に戻る。
【００８８】
本実施の形態によれば、アプリケーション１０７におけるメモリアクセスの特性に応じて、より適当なページサイズを設定することができる。
【００８９】
また、アプリケーション１０７に関する命令実行の効率に応じて、より適当なページサイズを設定することができる。
【００９０】
［実施の形態２］
上述した実施の形態では、アプリケーション１０７を実行する情報処理装置１０１とは別の管理装置で、当該アプリケーション１０７で適用するページサイズを決定する例について説明する。
【００９１】
図１７に示すように、情報処理装置１０１は、ネットワークを介して管理装置１７０１に接続している。
【００９２】
図１８に、管理装置１７０１のモジュール構成例を示す。管理装置１７０１は、ページサイズ決定部１１１を有する。ページサイズ決定部１１１は、送信部１８０１、受信部１８０３、受付部１８０５、第１準備部１１５、選択部１１７、指示部１８０７、第２準備部１２１及び算出部１２５を有する。
【００９３】
送信部１８０１は、各種データを送信する。受信部１８０３は、各種データを受信する。受付部１８０５は、後述する通知に含まれるパラメータを受け付ける。指示部１８０７は、情報処理装置１０１にページサイズの設定を指示する。第１準備部１１５、選択部１１７、第２準備部１２１及び算出部１２５は、実施の形態１で説明した情報処理装置１０１のページサイズ決定部１１１の場合と同様である。
【００９４】
ページサイズ決定部１１１は、更に検出条件記憶部１３１、プロセステーブル記憶部１３３、一次スコア記憶部１３５、二次スコア記憶部１３７及び三次スコア記憶部１３９を有する。検出条件記憶部１３１、プロセステーブル記憶部１３３、一次スコア記憶部１３５、二次スコア記憶部１３７及び三次スコア記憶部１３９は、実施の形態１で説明した情報処理装置１０１のページサイズ決定部１１１の場合と同様である。
【００９５】
上述した送信部１８０１、受信部１８０３、受付部１８０５及び指示部１８０７は、ハードウエア資源（例えば、図２５）と、以下で述べる処理をＣＰＵに実行させるプログラムとを用いて実現される。
【００９６】
図１９に、実施の形態２における情報処理装置１０１のモジュール構成例を示す。実施の形態２における情報処理装置１０１は、実施の形態１の場合と同様に、ＯＳ１０３及びアプリケーション１０７を有する。
【００９７】
実施の形態２における情報処理装置１０１は、サポート部１９０１を有する。サポート部１９０１は、管理装置１７０１におけるページサイズ決定部１１１の処理を補助する。サポート部１９０１は、送信部１９０３、受信部１９０５、検出部１９０７、通知部１９０９、設定部１９１１及び計測部１９１３を有する。
【００９８】
送信部１９０３は、各種データを送信する。受信部１９０５は、各種データを受信する。検出部１９０７は、新たに生成されたプロセスを検出する。通知部１９０９は、プロセスの性能情報を通知する。設定部１９１１は、ＯＳ１０３に対してプロセスで使用するページサイズを設定する。計測部１９１３は、プロセスの性能を計測する。
【００９９】
上述したサポート部１９０１、送信部１９０３、受信部１９０５、検出部１９０７、通知部１９０９、設定部１９１１及び計測部１９１３は、ハードウエア資源（例えば、図２５）と、以下で述べる処理をＣＰＵに実行させるプログラムとを用いて実現される。
【０１００】
本実施の形態における情報処理装置１０１は、検出処理（Ｂ）を実行する。図２０に、検出処理（Ｂ）フローを示す。Ｓ４０１乃至Ｓ４１３の処理は、図４の場合と同様である。
【０１０１】
Ｓ４１１において、フルパスがいずれかの検出条件に合致すると判定した場合には、検出部１９０７は、検出通知（Ｓ４０７において取得したフルパスとプロセスＩＤとを含む）を管理装置１７０１へ送信する（Ｓ２００１）。そして、Ｓ４０１に示した処理に戻って、上述した処理を繰り返す。
【０１０２】
また、管理装置１７０１は、第１ルーチン処理（Ｂ）を実行する。図２１に、第１ルーチン処理（Ｂ）フローを示す。受信部１８０３が情報処理装置１０１から検出通知を受信すると（Ｓ２１０１）、受付部１８０５は、検出通知から抽出されるフルパスとプロセスＩＤを受け付ける（Ｓ２１０３）。
【０１０３】
Ｓ３０３及びＳ３０５の処理は、図３の場合と同様である。
【０１０４】
指示部１８０７は、送信部１８０１を介して、情報処理装置１０１へページサイズの設定指示を送信する（Ｓ２１０５）。当該設定指示は、Ｓ３０５で選択されたページサイズと、Ｓ２１０３で受け付けたプロセスＩＤとを含んでいる。
【０１０５】
Ｓ３０９の処理は、図３の場合と同様である。
【０１０６】
また、本実施の形態における情報処理装置１０１は、設定処理を実行する。図２２に、設定処理フローを示す。受信部１９０５は、管理装置１７０１からページサイズの設定指示を受信すると（Ｓ２２０１）、設定部１９１１は、設定指示に含まれるプロセスＩＤとページサイズとに基づいて、ＯＳ１０３に対してページサイズを設定する（Ｓ２２０３）。そして、Ｓ２２０１に示した処理に戻って、上述した処理を繰り返す。
【０１０７】
更に、本実施の形態における情報処理装置１０１は、計測処理を実行する。図２３に、計測処理フローを示す。計測部１９１３は、図１１に示したＳ１１０１の処理の場合と同様に、周期的に計測のタイミングを待つ（Ｓ２３０１）。
【０１０８】
計測部１９１３は、図１１に示したＳ１１０３の処理の場合と同様に、ＣＰＵを１つ特定する（Ｓ２３０３）。計測部１９１３は、図１１に示したＳ１１０５の処理の場合と同様に、当該ＣＰＵの性能情報を取得する（Ｓ２３０５）。計測部１９１３は、図１１に示したＳ１１０７の処理の場合と同様に、動作しているプロセスのＩＤを取得する（Ｓ２３０７）。
【０１０９】
通知部１９０９は、性能通知に性能情報とプロセスＩＤとの組を設定する（Ｓ２３０９）。そして、計測部１９１３は、未特定のＣＰＵがあるか否かを判定する（Ｓ２３１１）。
【０１１０】
未特定のＣＰＵがあると判定した場合には、Ｓ２３０３に示した処理に戻って、上述した処理を繰り返す。一方、未特定のＣＰＵがないと判定した場合には、通知部１９０９は、送信部１９０３を介して管理装置１７０１へ性能通知を送信する（Ｓ２３１３）。そして、Ｓ２３０１に示した処理に戻って、上述した処理を繰り返す。
【０１１１】
管理装置１７０１は、更に第２ルーチン処理（Ｂ）を実行する。第２ルーチン処理（Ｂ）は、第１ルーチン処理（Ｂ）と並行に実行される。図２４に、第２ルーチン処理（Ｂ）フローを示す。受信部１８０３が情報処理装置１０１から性能通知を受信すると（Ｓ２４０１）、受付部１８０５は、性能通知に設定されている性能情報とプロセスＩＤとの組を１つ特定する（Ｓ２４０３）。
【０１１２】
Ｓ１１０９乃至Ｓ１１１３の処理は、図１１の場合と同様である。
【０１１３】
受付部１８０５は、未特定の組があるか否かを判定する（Ｓ２４０５）。未特定の組があると判定した場合には、Ｓ２４０３に示した処理に戻って、上述した処理を繰り返す。一方、未特定の組がないと判定した場合には、端子Ａを介して、図１４に示したＳ１４０１の処理に移る。図１４に示した処理については、実施の形態１の場合と同様である。
【０１１４】
本実施の形態によれば、実施の形態１の場合と比べて、アプリケーション１０７を実行させる情報処理装置１０１の負荷を軽減することができる。
【０１１５】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１１６】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０１１７】
なお、上で述べた情報処理装置１０１及び管理装置１７０１は、コンピュータ装置であって、図２５に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１８】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１９】
本実施の形態に係るページサイズ決定方法は、（Ａ）単位時間内に発生したキャッシュミスの数をＯＳから取得する取得処理と、（Ｂ）単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおけるキャッシュミスの発生傾向を示すスコアを算出する算出処理と、（Ｃ）ページサイズに対応付けてスコアを記憶する記憶処理と、（Ｄ）アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関するスコアに基づいて、起動されたアプリケーションのプロセスが使用するページサイズを選択する選択処理とを含む。
【０１２０】
このようにすれば、アプリケーションにおけるメモリアクセスの特性に応じて、より適当なページサイズを決定することができる。
【０１２１】
更に、上記取得処理において、単位時間内における命令実行数を取得するようにしてもよい。上記算出処理において算出されるスコアは、キャッシュミスの数と負の相関関係を有し、且つ命令実行数と正の相関関係を有するものであってもよい。また、上記選択処理において、より大きいスコアに対応するページサイズを選択するようにしてもよい。
【０１２２】
このようにすれば、アプリケーションに関する命令実行の効率に応じて、より適当なページサイズを決定することができる。
【０１２３】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１２４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）
単位時間内に発生したキャッシュミスの数をＯＳ（Operating System）から取得する取得処理と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出する算出処理と、
前記ページサイズに対応付けて前記スコアを記憶する記憶処理と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択処理と
を、コンピュータに実行させるページサイズ決定プログラム。
【０１２６】
（付記２）
前記取得処理において、前記単位時間内における命令実行数を取得し、
前記算出処理において算出される前記スコアは、前記キャッシュミスの数と負の相関関係を有し、且つ前記命令実行数と正の相関関係を有し、
前記選択処理において、より大きいスコアに対応するページサイズを選択する
付記１記載のページサイズ決定プログラム。
【０１２７】
（付記３）
単位時間内に発生したキャッシュミスの数をＯＳから取得する取得処理と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出する算出処理と、
前記ページサイズに対応付けて前記スコアを記憶する記憶処理と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択処理と
を含み、コンピュータにより実行されるページサイズ決定方法。
【０１２８】
（付記４）
単位時間内に発生したキャッシュミスの数をＯＳから取得する取得部と、
前記単位時間にプロセスとして動作していたアプリケーションに関して、当該アプリケーションで設定されていたページサイズにおける前記キャッシュミスの発生傾向を示すスコアを算出し、前記ページサイズに対応付けて当該スコアを記憶する算出部と、
前記アプリケーションの起動を検出した場合に、メモリ領域の確保に使用される各候補ページサイズに関する前記スコアに基づいて、起動された前記アプリケーションのプロセスが使用するページサイズを選択する選択部と
を有するページサイズ決定装置。
【符号の説明】
【０１２９】
１０１  情報処理装置
１０３  ＯＳ
１０５  タスク管理情報テーブル
１０７  アプリケーション
１１１  ページサイズ決定部
１１３  検出部
１１５  第１準備部
１１７  選択部
１１９  設定部
１２１  第２準備部
１２３  取得部
１２５  算出部
１３１  検出条件記憶部
１３３  プロセステーブル記憶部
１３５  一次スコア記憶部
１３７  二次スコア記憶部
１３９  三次スコア記憶部
１７０１  管理装置
１８０１  送信部
１８０３  受信部
１８０５  受付部
１８０７  指示部
１９０１  サポート部
１９０３  送信部
１９０５  受信部
１９０７  検出部
１９０９  通知部
１９１１  設定部
１９１３  計測部
【図１】
2019070894.tif 000003
【図２】
2019070894.tif 000004
【図３】
2019070894.tif 000005
【図４】
2019070894.tif 000006
【図５】
2019070894.tif 000007
【図６】
2019070894.tif 000008
【図７】
2019070894.tif 000009
【図８】
2019070894.tif 000010
【図９】
2019070894.tif 000011
【図１０】
2019070894.tif 000012
【図１１】
2019070894.tif 000013
【図１２】
2019070894.tif 000014
【図１３】
2019070894.tif 000015
【図１４】
2019070894.tif 000016
【図１５】
2019070894.tif 000017
【図１６】
2019070894.tif 000018
【図１７】
2019070894.tif 000019
【図１８】
2019070894.tif 000020
【図１９】
2019070894.tif 000021
【図２０】
2019070894.tif 000022
【図２１】
2019070894.tif 000023
【図２２】
2019070894.tif 000024
【図２３】
2019070894.tif 000025
【図２４】
2019070894.tif 000026
【図２５】
2019070894.tif 000027