JP2019082917A - メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置 - Google Patents

メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置 Download PDF

Info

Publication number
JP2019082917A
JP2019082917A JP2017210638A JP2017210638A JP2019082917A JP 2019082917 A JP2019082917 A JP 2019082917A JP 2017210638 A JP2017210638 A JP 2017210638A JP 2017210638 A JP2017210638 A JP 2017210638A JP 2019082917 A JP2019082917 A JP 2019082917A
Authority
JP
Japan
Prior art keywords
cache
target
time
improvement
size
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.)
Pending
Application number
JP2017210638A
Other languages
English (en)
Inventor
恭生 丸山
Yasuo Maruyama
恭生 丸山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017210638A priority Critical patent/JP2019082917A/ja
Publication of JP2019082917A publication Critical patent/JP2019082917A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュ領域を効率的に割り当て可能にすること。【解決手段】メモリ割当装置101は、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得する。メモリ割当装置101は、取得したログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出する。メモリ割当装置101は、算出した時間間隔ごとの指標値に基づいて、キャッシュミスの改善対象時期を特定する。メモリ割当装置101は、特定した改善対象時期と同一時期の対象データへのアクセスに関するログ情報に基づいて、対象データに割り当てるキャッシュ領域のサイズを算出する。メモリ割当装置101は、算出したサイズのキャッシュ領域を、改善対象時期よりも前に対象データに割り当てるメモリ割当計画を作成する。【選択図】図1

Description

本発明は、メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置に関する。
従来、メモリ上にキャッシュ領域を確保し、データベースのデータをディスク上の記憶領域からメモリ上のキャッシュ領域に読み込んでおくことで、データベースアクセスの性能向上を図る技術がある。
先行技術としては、キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するものがある。具体的には、専用領域獲得要求に応答して、キャッシュ有効利用度が高いほど専用キャッシュ領域を割り当て、低いほど共用キャッシュ領域を割り当てる技術がある。キャッシュ有効利用度は、専用キャッシュ領域を割り当てた場合のキャッシュヒット率と共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と、メモリアクセス頻度とに基づくものである。また、内蔵メモリと外部メモリの利用状況の変化を検出するための計測部の計測結果を監視し、内蔵メモリの構成を変更、内蔵メモリと外部メモリに格納されたデータを移動する技術がある。また、広域ネットワークが空いている時間帯にアクセス頻度の高いファイルを先読みし、クライアントからの要求に対し先読みしたファイルを渡す技術がある。
特開2015−36873号公報 国際公開第2011/045931号 特開平11−24981号公報
しかしながら、従来技術では、アクセス性能を確保したいデータベース等に対して、キャッシュ領域を効率的に割り当てることが難しい。例えば、データベースの使用頻度は、1日の時間帯や日、週、月などの時期によって変動することが多い。このため、データベースに対して、専用のキャッシュ領域を静的に割り当てる方法では、時期によっては十分なキャッシュ領域が割り当てられないことがある。
一つの側面では、本発明は、キャッシュ領域を効率的に割り当て可能にすることを目的とする。
1つの実施態様では、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成するメモリ割当プログラムが提供される。
本発明の一側面によれば、キャッシュ領域を効率的に割り当て可能にすることができる。
図1は、実施の形態にかかるメモリ割当方法の一実施例を示す説明図である。 図2は、システム200のシステム構成例を示す説明図である。 図3は、メモリ割当装置101等のハードウェア構成例を示すブロック図である。 図4は、トランザクションログLの具体例を示す説明図である。 図5は、ログ集計DB220の記憶内容の一例を示す説明図である。 図6は、キャッシュ改善係数テーブル230の記憶内容の一例を示す説明図である。 図7は、改善対象テーブル240の記憶内容の一例を示す説明図である。 図8は、割り当てサイズテーブル250の記憶内容の一例を示す説明図である。 図9は、キャッシュ計画テーブル260の記憶内容の一例を示す説明図である。 図10は、メモリ割当装置101の機能的構成例を示すブロック図である。 図11は、改善対象時期を特定する配列を示す説明図である。 図12は、キャッシュ改善係数の算出例を示す説明図である。 図13は、改善対象時期の特定例を示す説明図(その1)である。 図14は、改善対象時期の特定例を示す説明図(その2)である。 図15は、改善対象時期の特定例を示す説明図(その3)である。 図16は、割り当てサイズの算出例を示す説明図である。 図17は、メモリ割当計画の作成例を示す説明図(その1)である。 図18は、メモリ割当計画の作成例を示す説明図(その2)である。 図19は、メモリ割当装置101のメモリ割当計画作成処理手順の一例を示すフローチャートである。 図20は、割り当てサイズ算出処理の具体的処理手順の一例を示すフローチャートである。 図21は、メモリ割当装置101の割り当て処理手順の一例を示すフローチャートである。 図22は、集計単位が月の日単位の場合のログ集計DB220の記憶内容の一例を示す説明図である。 図23は、集計単位が月の日単位の場合のキャッシュ改善係数の算出例を示す説明図である。 図24は、集計単位が月の日単位の場合のキャッシュ改善係数テーブル230の記憶内容の一例を示す説明図である。 図25は、集計単位が月の日単位の場合の改善対象時期の特定例を示す説明図である。 図26は、集計単位が月の日単位の場合の改善対象テーブル240の記憶内容の一例を示す説明図である。 図27は、集計単位が月の日単位の場合の割り当てサイズテーブル250の記憶内容の一例を示す説明図(その1)である。 図28は、集計単位が月の日単位の場合の割り当てサイズテーブル250の記憶内容の一例を示す説明図(その2)である。 図29は、曜日に応じたキャッシュ計画テーブル260の記憶内容の一例を示す説明図である。
以下に図面を参照して、本発明にかかるメモリ割当プログラム、メモリ割当方法、およびメモリ割当装置の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかるメモリ割当方法の一実施例を示す説明図である。図1において、メモリ割当装置101は、対象データにキャッシュ領域を割り当てるメモリ割当計画を作成するコンピュータである。ここで、対象データは、キャッシュ領域を割り当てる対象となるデータであり、例えば、データベース、テーブル、ファイルなどである。
対象データは、例えば、ストレージ102に記憶される。ストレージ102は、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの補助記憶装置である。キャッシュ領域は、対象データをキャッシュするための専用の記憶領域であり、例えば、メモリ103に設けられる。
メモリ103は、ストレージ102よりも高速にアクセス可能な記憶装置である。ストレージ102およびメモリ103は、メモリ割当装置101とは異なる他のコンピュータ(例えば、後述の図2に示す業務サーバ201)が有する。ただし、ストレージ102およびメモリ103は、メモリ割当装置101が有していてもよい。
なお、一般にキャッシュ領域には、複数の対象データで共有して使用する共有キャッシュ領域と、特定の対象データが専用で使用する固有キャッシュ領域がある。本実施の形態では、単に「キャッシュ領域」と表記した場合は、特定の対象データが専用で使用する固有キャッシュ領域を指す。
対象データ(データベース、テーブル、ファイル等)の使用頻度は、1日の時間帯や日、週、月などの時期によって変動することが多い。また、各時期によって、例えば、オンライン業務、バッチ業務など実行される業務は決まっていることが多い。また、実行される業務によってアクセスされる対象データが決まる。このため、対象データの時間経過に伴うアクセスパターンには業務システム固有のパターンが現れるという特性がある。
ここで、キャッシュ領域の既存のチューニング方法として、例えば、一定のアクセス性能を確保したいテーブル等に対して、専用のキャッシュ領域を静的に割り当てるものがある。しかし、キャッシュ領域を静的に割り当てる方法では、限られたキャッシュ領域から各テーブル等に対して固定のキャッシュ領域をそれぞれ割り当てる。このため、上述した特性から、時期によっては十分なキャッシュ領域が割り当てられないことがある。
また、テーブル等のアクセス状況を監視して、キャッシュ領域が不足したら、その都度、キャッシュ領域を動的に調整する方法がある。しかし、実際のデータはディスク上に存在しており、キャッシュ領域を使用するためには、ディスクからメモリへのデータの読み込みが必要となる。また、近年では扱うデータが大量になっており、キャッシュ領域も大規模化している。このため、データの読み込みに時間を要してしまい、キャッシュ領域がすぐに利用できないような状況が発生する。また、オンメモリデータベースにより全てのデータをメモリ上に展開する方法があるが、導入コストが大きく実用的ではない。
そこで、本実施の形態では、対象データへのキャッシュ領域の割り当てを動的に変化させて効率的な割り当てを可能にするメモリ割当方法について説明する。以下、メモリ割当装置101の処理例について説明する。
(1)メモリ割当装置101は、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得する。ここで、ログ情報は、対象データへのアクセス状況を特定可能な情報である。ログ情報は、例えば、対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、対象データに割り当てられたキャッシュ領域のサイズなどを含む。
アクセス処理時間は、対象データに対するアクセスの要求があってから応答を返すまでの時間である。なお、対象データにキャッシュ領域が割り当てられていない場合、キャッシュヒット率、および、対象データに割り当てられたキャッシュ領域のサイズは、「0」である。
図1の例では、対象データ110へのアクセスに関するログ情報120が取得された場合を想定する。ログ情報120は、例えば、ストレージ102およびメモリ103を有する他のコンピュータから取得されてもよく、また、ユーザの操作入力により取得されてもよい。
(2)メモリ割当装置101は、取得したログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出する。ここで、所定の時間間隔は、任意に設定可能であり、例えば、1日の時間単位、月の日単位、週単位、1年の月単位などに設定される。
キャッシュミスの改善度合いを示す指標値は、換言すれば、キャッシュ領域を増やすことによる処理性能の改善可能性の度合いを判断可能な値である。具体的には、例えば、メモリ割当装置101は、取得したログ情報から特定される所定の時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、所定の時間間隔ごとの指標値を算出する。
図1の例では、対象データ110について、グラフGに示すように、0時から23時までの時間帯ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値が算出された場合を想定する。ただし、図1では、0時から23時までの時間帯ごとの指標値の一部を抜粋して表示している。
(3)メモリ割当装置101は、算出した時間間隔ごとの指標値に基づいて、キャッシュミスの改善対象時期を特定する。ここで、キャッシュミスの改善対象時期とは、キャッシュミスを減らして処理性能を改善する対象となる時期である。具体的には、例えば、メモリ割当装置101は、算出した指標値が閾値以上となる時期を、改善対象時期として特定することにしてもよい。閾値は、任意に設定可能である。閾値は、例えば、所定の時間間隔ごとの指標値の平均値としてもよい。
図1の例では、指標値が閾値以上となっている3時の時間帯と4時の時間帯とが、キャッシュミスの改善対象時期として特定された場合を想定する。
(4)メモリ割当装置101は、特定した改善対象時期と同一時期の対象データへのアクセスに関するログ情報に基づいて、対象データに割り当てるキャッシュ領域のサイズを算出する。具体的には、例えば、メモリ割当装置101は、特定した改善対象時期ごとに、当該改善対象時期においてキャッシュヒット率が100%になると予測されるキャッシュ領域のサイズを算出することにしてもよい。キャッシュヒット率が100%になるキャッシュ領域のサイズは、例えば、改善対象時期と同一時期の対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズから予測することができる。
図1の例では、改善対象時期である3時の時間帯と4時の時間帯それぞれについて、対象データ110のキャッシュヒット率が100%になると予測されるキャッシュ領域のサイズとして、同じサイズXが算出された場合を想定する。
(5)メモリ割当装置101は、算出したサイズのキャッシュ領域を、改善対象時期よりも前に対象データに割り当てるメモリ割当計画を作成する。ここで、メモリ割当計画は、対象データに対して、いつ、どのサイズのキャッシュ領域を割り当てるのかを示すスケジュールである。
図1の例では、対象データ110に対して、3時の時間帯および4時の時間帯よりも前の時間帯、例えば、2時の時間帯に、サイズXのキャッシュ領域を割り当てるメモリ割当計画130が作成される。
このように、メモリ割当装置101によれば、キャッシュ領域を増やすことによる処理性能の改善可能性が高い時期を、対象データの改善対象時期として特定することができる。そして、メモリ割当装置101によれば、改善対象時期よりも前の時期から、対象テーブルTに割り当てるキャッシュ領域の準備を始めて、改善対象時期となった際にキャッシュの効果を即時得られるようなメモリ割当計画を立てることができる。これにより、対象データへのキャッシュ領域の割り当てを動的に変化させて効率的な割り当てを可能にすることができる。
図1の例では、対象データ110へのアクセスパターンに応じて、時間帯ごとのキャッシュ領域の必要性を予測し、必要な時期(3時の時間帯)に必要な分(サイズX)のキャッシュ領域を事前(2時の時間帯)に準備可能なメモリ割当計画130を作成することができる。なお、ストレージ102とメモリ103との関係は、例えば、メインメモリとキャッシュメモリとの関係であってもよい。
(システム200のシステム構成例)
つぎに、実施の形態にかかるシステム200のシステム構成例について説明する。
図2は、システム200のシステム構成例を示す説明図である。図2において、システム200は、メモリ割当装置101と、業務サーバ201と、を含む。システム200において、メモリ割当装置101および業務サーバ201は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどを含む。
メモリ割当装置101は、業務サーバ201についてのメモリ割当計画を作成する。メモリ割当装置101は、ログ集計DB(Database)220、キャッシュ改善係数テーブル230、改善対象テーブル240、割り当てサイズテーブル250、およびキャッシュ計画テーブル260を有する。各種DB等の記憶内容については、図5〜図9を用いて後述する。
業務サーバ201は、キャッシュ領域の割り当てを制御する対象のコンピュータである。業務サーバ201は、例えば、データベースサーバ、ウェブサーバなどである。業務サーバ201は、ログ出力部202と、キャッシュ割当部203と、を有する。ログ出力部202は、対象データへのアクセスに関するログ情報を出力する。キャッシュ割当部203は、メモリ割当装置101からの指示に従って、対象データにキャッシュ領域を割り当てる。
また、業務サーバ201は、定期的または所定のタイミングで、ログ出力部202が出力したログ情報をメモリ割当装置101に送信する。具体的には、例えば、業務サーバ201は、集計期間内に出力されたログ情報を含むトランザクションログLをメモリ割当装置101に送信する。集計期間は、任意に設定可能であり、例えば、1ヶ月、3ヶ月などの期間が設定される。トランザクションログLの具体例については、図4を用いて後述する。
以下の説明では、対象データとして「テーブル」を例に挙げて説明する。また、対象データを「対象テーブルT」と表記する場合がある。なお、図2の例では、業務サーバ201を1台のみ表記したが、システム200には2台以上の業務サーバ201が含まれていてもよい。
(メモリ割当装置101および業務サーバ201のハードウェア構成例)
つぎに、図2に示したメモリ割当装置101および業務サーバ201のハードウェア構成例について説明する。ここでは、メモリ割当装置101および業務サーバ201を「メモリ割当装置101等」と表記する。
図3は、メモリ割当装置101等のハードウェア構成例を示すブロック図である。図3において、メモリ割当装置101等は、CPU(Central Processing Unit)301と、メモリ302と、I/F(Interface)303と、ディスクドライブ304と、ディスク305と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、メモリ割当装置101等の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
業務サーバ201のメモリ302には、対象テーブルTに割り当てるキャッシュ領域が設けられる。図1に示したメモリ103は、例えば、業務サーバ201のメモリ302に相当する。なお、メモリ302には、キャッシュメモリが含まれることにしてもよい。この場合、対象テーブルTに割り当てるキャッシュ領域は、キャッシュメモリに設けられることにしてもよい。
I/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他の装置に接続される。そして、I/F303は、ネットワーク210と自装置内部とのインターフェースを司り、他の装置からのデータの入出力を制御する。I/F303には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
なお、メモリ割当装置101等は、上述した構成部のほか、例えば、SSD、入力装置、ディスプレイなどを有することにしてもよい。
(トランザクションログLの具体例)
つぎに、業務サーバ201からメモリ割当装置101に送信されるトランザクションログLの具体例について説明する。
図4は、トランザクションログLの具体例を示す説明図である。図4において、トランザクションログLは、複数のログ情報(例えば、ログ情報401〜404)を有する。ログ情報は、アクセス時刻、アクセス処理時間、キャッシュヒット率、キャッシュサイズおよびテーブルIDを含む。
ここで、アクセス時刻は、要求元(例えば、プログラム)から対象テーブルTに対するアクセスを受け付けた日時である。アクセス処理時間は、対象テーブルTに対するアクセスの要求を受け付けてから応答を返すまでの時間である(単位:ms)。アクセス処理時間は、例えば、SQL(Structured Query Language)の処理時間である。
キャッシュヒット率は、要求されたデータがキャッシュ領域に存在する確率を示す(単位:%)。キャッシュ領域は、図3に示した業務サーバ201のメモリ302に設けられる対象テーブルTに専用の記憶領域である。キャッシュサイズは、対象テーブルTに割り当てられたキャッシュ領域のサイズである(単位:MB)。テーブルIDは、業務サーバ201が有する対象テーブルTを一意に識別する識別子である。
例えば、ログ情報401は、対象テーブルT1のアクセス時刻「2017/4/1 00:00:00」、アクセス処理時間「100[ms]」、キャッシュヒット率「20[%]」およびキャッシュサイズ「20[MB]」を示す。なお、トランザクションログLは、例えば、テーブル形式、テキストファイル形式、バイナリファイル形式などのいずれの形式であってもよい。
(各種DB等の記憶内容)
つぎに、メモリ割当装置101が有する各種DB等の記憶内容について説明する。各種DB等は、例えば、図3に示したメモリ割当装置101のメモリ302、ディスク305などの記憶装置により実現される。
図5は、ログ集計DB220の記憶内容の一例を示す説明図である。図5において、ログ集計DB220は、対象テーブルTごとのログ集計データ(例えば、ログ集計データ501,502)を記憶する。ログ集計データは、テーブルIDと、時間帯ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを有する。
テーブルIDは、対象テーブルTを一意に識別する識別子である。時間帯ごとのアクセス処理時間は、対象テーブルTについての時間帯ごとのアクセス処理時間の平均値である(単位:ms)。アクセス数は、対象テーブルTについての時間帯ごとのアクセス数の合計値である(単位:回)。キャッシュヒット率は、対象テーブルTについての時間帯ごとのキャッシュヒット率の平均値である(単位:%)。キャッシュサイズは、対象テーブルTについての時間帯ごとのキャッシュサイズの平均値である(単位:MB)。
図6は、キャッシュ改善係数テーブル230の記憶内容の一例を示す説明図である。図6において、キャッシュ改善係数テーブル230は、各対象テーブルTについて、時間帯ごとのキャッシュ改善係数を記憶する。図6の例では、対象テーブルTは、対象テーブルT1〜T4である。
ここで、キャッシュ改善係数は、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値である。例えば、テーブルT1の0時の時間帯のキャッシュ改善係数は「27.9」である。
図7は、改善対象テーブル240の記憶内容の一例を示す説明図である。図7において、改善対象テーブル240は、各対象テーブルTについて、時間帯ごとの改善対象フラグを記憶する。図7の例では、対象テーブルTは、対象テーブルT1〜T4である。
ここで、改善対象フラグは、キャッシュミスの改善対象時期とするか否かを示す。改善対象フラグ「true」は、キャッシュミスの改善対象時期とすることを示す。改善対象フラグ「false」は、キャッシュミスの改善対象時期としないことを示す。例えば、対象テーブルT1の0時の時間帯の改善対象フラグは「true」である。
図8は、割り当てサイズテーブル250の記憶内容の一例を示す説明図である。図8において、割り当てサイズテーブル250は、各対象テーブルTについて、時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。図8の例では、対象テーブルTは、対象テーブルT1〜T4である。
ここで、割り当てサイズは、対象テーブルTに割り当てるキャッシュ領域の時間帯ごとのサイズである(単位:MB)。例えば、テーブルT1の0時の時間帯のキャッシュ領域の割り当てサイズは「40[MB]」である。
図9は、キャッシュ計画テーブル260の記憶内容の一例を示す説明図である。図9において、キャッシュ計画テーブル260は、各対象テーブルT1〜T4のメモリ割当計画901〜904を記憶する。メモリ割当計画901〜904は、各対象テーブルTについて、キャッシュ領域を割り当てる時間帯と、当該時間帯に割り当てるキャッシュ領域のサイズとを示す。
(メモリ割当装置101の機能的構成例)
図10は、メモリ割当装置101の機能的構成例を示すブロック図である。図10において、メモリ割当装置101は、取得部1001と、指標算出部1002と、特定部1003と、サイズ算出部1004と、作成部1005と、計画実行部1006と、を含む。取得部1001〜計画実行部1006は制御部となる機能であり、具体的には、例えば、図3に示したメモリ割当装置101のメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク305などの記憶装置に記憶される。
取得部1001は、対象テーブルTへのアクセスに関するログ情報を取得する。ここで、対象テーブルTは、キャッシュ領域を割り当てる対象データの一例である。具体的には、例えば、取得部1001は、図4に示したようなトランザクションログLを業務サーバ201から受信することにより、受信したトランザクションログLに含まれるログ情報を取得する。
指標算出部1002は、取得されたログ情報に基づいて、所定の時間間隔ごとに、対象テーブルTのキャッシュ改善係数を算出する。ここで、キャッシュ改善係数は、対象テーブルTに割り当てるキャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値である。また、所定の時間間隔は、ログ情報の集計単位であり、任意に設定可能である。所定の時間間隔としては、例えば、日の時間単位、月の日単位、週単位、年の月単位などが設定される。
所定の時間間隔は、例えば、対象テーブルTのどのようなアクセスパターンを特定するかによって設定される。例えば、使用頻度が毎日同じような対象テーブルTでは、日の時間単位で集計すれば、1日のうちの時間帯ごとのアクセスパターンを特定することができる。また、曜日や日で使用頻度に特徴がある対象テーブルTでは、月の日単位で集計すれば、月内の曜日や日によるアクセスパターンを特定することができる。
以下の説明では、所定の時間間隔を「集計単位」と表記する場合がある。
具体的には、例えば、まず、指標算出部1002は、取得されたログ情報に基づいて、対象データごとのログ集計データを生成する。より詳細に説明すると、例えば、指標算出部1002は、トランザクションログLを参照して、各対象テーブルTについて、集計単位ごとのアクセス処理時間(平均値)、アクセス数(合計値)、キャッシュヒット率(平均値)およびキャッシュサイズ(平均値)を算出する。
アクセス処理時間(平均値)は、対象テーブルTについての集計単位ごとのアクセス処理時間の平均値である。アクセス数(合計値)は、対象テーブルTについての集計単位ごとのアクセス数の合計値である。キャッシュヒット率(平均値)は、対象テーブルTについての集計単位ごとのキャッシュヒット率の平均値である。キャッシュサイズ(平均値)は、対象テーブルTについての集計単位ごとのキャッシュサイズの平均値である。
そして、指標算出部1002は、算出した対象テーブルTについての集計単位ごとのアクセス処理時間(平均値)、アクセス数(合計値)、キャッシュヒット率(平均値)およびキャッシュサイズ(平均値)を含むログ集計データを生成する。生成されたログ集計データは、例えば、図5に示したログ集計DB220に記憶される。図5の例では、集計単位は「1日の時間単位」である。
つぎに、指標算出部1002は、生成したログ集計データに基づいて、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数を算出する。キャッシュ改善係数は、例えば、下記式(1)を用いて算出することができる。
キャッシュ改善係数=アクセス数×{アクセス処理時間×(1−キャッシュヒット率)÷キャッシュサイズ} ・・・(1)
このキャッシュ改善係数は、各対象テーブルTの1キャッシュサイズに対する1回のアクセス処理の改善時間予想値(=キャッシュミスによるアクセス処理時間の増分予想値)の集計単位内の合計値を表す。このキャッシュ改善係数が大きいほど、キャッシュ領域を増やすことによる処理性能の改善可能性が高いことを示す。
より詳細に説明すると、例えば、指標算出部1002は、ログ集計DB220を参照して、各対象テーブルTについて、集計単位ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式(1)に代入することにより、集計単位ごとのキャッシュ改善係数を算出する。
各対象テーブルTについて算出された集計単位ごとのキャッシュ改善係数は、例えば、図6に示したキャッシュ改善係数テーブル230に記憶される。図6の例では、集計単位は「1日の時間単位」である。キャッシュ改善係数の算出例については、図12を用いて後述する。
特定部1003は、算出された対象テーブルTの集計単位ごとのキャッシュ改善係数に基づいて、対象テーブルTのキャッシュミスの改善対象時期を特定する。ここで、キャッシュミスの改善対象時期とは、対象テーブルTにアクセスする際のキャッシュミスを減らして処理性能を改善する対象となる期間である。
具体的には、例えば、特定部1003は、キャッシュ改善係数テーブル230を参照して、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となる時期を、改善対象時期として特定することにしてもよい。閾値αは、対象テーブルTごとに設定される閾値であり、任意に設定可能である。閾値αは、例えば、対象テーブルTの集計単位ごとのキャッシュ改善係数の平均値であってもよい。
また、特定部1003は、各対象テーブルTについて、集計単位ごとに算出した、各対象テーブルTのキャッシュ改善係数と他の対象テーブルTのキャッシュ改善係数とに基づいて、改善対象時期を特定してもよい。より詳細に説明すると、例えば、特定部1003は、キャッシュ改善係数テーブル230を参照して、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数が閾値β以上となる時期を、改善対象時期として特定してもよい。閾値βは、集計単位ごとに複数の対象テーブルTに共通して設定される閾値であり、任意に設定可能である。閾値βは、例えば、複数の対象テーブルTの各集計単位のキャッシュ改善係数の平均値である。
また、特定部1003は、キャッシュ改善係数テーブル230を参照して、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定してもよい。また、特定部1003は、キャッシュ改善係数テーブル230を参照して、各対象テーブルTについて、キャッシュ改善係数が最大の時期を、改善対象時期として特定してもよい。
また、特定部1003は、キャッシュ改善係数テーブル230を参照して、各対象テーブルTについて、キャッシュ改善係数が大きい上位いくつかの時期(例えば、上位5位の時期)を、改善対象時期として特定してもよい。改善対象時期の特定例については、図13〜図15を用いて後述する。
特定された改善対象時期を示す情報は、例えば、図7に示した改善対象テーブル240に記憶される。ただし、メモリ割当装置101は、例えば、図11に示すように、特定した改善対象時期を示す情報を配列形式でメモリ302に記憶することにしてもよい。
図11は、改善対象時期を特定する配列を示す説明図である。図11において、配列1100は、テーブルIDと集計単位とを要素として、各対象テーブルTについて特定された改善対象時期を示す情報である。配列1100は、図7に示した改善対象テーブル240を配列形式で示したものに相当する。
図10の説明に戻り、サイズ算出部1004は、特定された改善対象時期ごとに、当該改善対象時期と同一時期の対象テーブルTへのアクセスに関するログ情報に基づいて、改善対象時期の対象テーブルTの割り当てサイズを算出する。ここで、割り当てサイズは、対象テーブルTに割り当てるキャッシュ領域のサイズ(大きさ)である。
具体的には、例えば、サイズ算出部1004は、ログ集計DB220を参照して、改善対象時期と同一時期の対象テーブルTのキャッシュヒット率およびキャッシュサイズを特定する。そして、サイズ算出部1004は、下記式(2)を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における対象テーブルTの割り当てサイズを算出する。
割り当てサイズ=キャッシュサイズ÷キャッシュヒット率×100 ・・・(2)
例えば、改善対象時期における対象テーブルTのキャッシュヒット率が「50[%]」であり、キャッシュサイズが「20[MB]」であるとする。この場合、改善対象時期における対象テーブルTの割り当てサイズは、「40[MB](=20÷0.5)」となる。
これにより、改善対象時期における対象テーブルTのキャッシュヒット率が100%となるキャッシュサイズを予測して、予測したキャッシュサイズを対象テーブルTの割り当てサイズとすることができる。
ただし、業務サーバ201において割り当て可能なキャッシュサイズには上限がある。以下の説明では、業務サーバ201において割り当て可能なキャッシュサイズを「割り当て可能サイズ」と表記する場合がある。また、割り当て可能サイズの最大値を「最大キャッシュサイズ」と表記する場合がある。
業務サーバ201の最大キャッシュサイズは、業務サーバ201においてシステム固有の設定値として予め記憶されている。メモリ割当装置101は、例えば、業務サーバ201に問い合わせることにより、業務サーバ201の最大キャッシュサイズを特定することができる。また、業務サーバ201の最大キャッシュサイズは、メモリ割当装置101のメモリ302、ディスク305などの記憶装置に予め記憶されていてもよい。
ここで、業務サーバ201に複数の対象テーブルTが存在する場合、ある改善対象時期の各対象テーブルTの割り当てサイズの合計値(合計キャッシュサイズ)が最大キャッシュサイズを超える場合がある。このため、サイズ算出部1004は、改善対象時期の合計キャッシュサイズが最大キャッシュサイズを超える場合、各対象テーブルTの割り当てサイズを再計算することにしてもよい。
具体的には、例えば、サイズ算出部1004は、改善対象時期に対応する各対象テーブルTのキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルTの割り当てサイズを再計算する。各対象テーブルTの割り当てサイズの算出例については、図16を用いて後述する。
算出された改善対象時期における各対象テーブルTの割り当てサイズは、例えば、図8に示した割り当てサイズテーブル250に記憶される。
作成部1005は、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に対象テーブルTに割り当てるメモリ割当計画を作成する。ここで、メモリ割当計画は、例えば、対象テーブルTにキャッシュ領域を割り当てるタイミングと、当該タイミングに割り当てるキャッシュ領域のキャッシュサイズとを示す情報である。
具体的には、例えば、作成部1005は、算出した割り当てサイズのキャッシュ領域を、改善対象時期の直前の時期(1つ前の集計単位)に対象テーブルTに割り当てるメモリ割当計画を作成することにしてもよい。例えば、図7に示した対象テーブルT1を例に挙げると、22時、23時、0時および1時の時間帯が改善対象時期である。また、図8に示すように、各改善対象時期の割り当てサイズが「40[MB]」であるとする。この場合、作成部1005は、例えば、22時の時間帯の直前の21時の時間帯に、40[MB]のキャッシュ領域を対象テーブルT1に割り当てるメモリ割当計画901(図9参照)を作成する。
ただし、キャッシュ領域の割り当て処理にはオーバーヘッドが発生する。したがって、割り当て処理を実施する時期は、対象テーブルTへのアクセスが少ない時期が好ましい。このため、作成部1005は、ログ集計DB220を参照して、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない閑散時期を特定することにしてもよい。そして、作成部1005は、特定した閑散時期に、算出された割り当てサイズのキャッシュ領域を対象テーブルTに割り当てるメモリ割当計画を作成することにしてもよい。
閑散時期は、例えば、対象テーブルTの集計単位ごとのアクセス処理時間やアクセス数から特定することにしてもよい。より詳細に説明すると、例えば、作成部1005は、ログ集計DB220を参照して、アクセス処理時間が閾値γ1以下となる時期を、閑散時期として特定することにしてもよい。閾値γ1は、任意に設定可能であり、例えば、対象テーブルTの集計単位ごとのアクセス処理時間の平均値であってもよい。なお、アクセス処理時間が閾値γ1以下となる時期が複数存在する場合、作成部1005は、アクセス処理時間が最小となる時期を、閑散時期として特定することにしてもよい。
また、例えば、作成部1005は、ログ集計DB220を参照して、アクセス数が閾値γ2以下となる時期を、閑散時期として特定することにしてもよい。閾値γ2は、任意に設定可能であり、例えば、対象テーブルTの集計単位ごとのアクセス数の平均値であってもよい。なお、アクセス数が閾値γ2以下となる時期が複数存在する場合、作成部1005は、アクセス数が最小となる時期を、閑散時期として特定することにしてもよい。
また、例えば、作成部1005は、ログ集計DB220を参照して、アクセス処理時間とアクセス数との乗算値が閾値γ3以下となる時期を、閑散時期として特定することにしてもよい。閾値γ3は、任意に設定可能であり、例えば、対象テーブルTの集計単位ごとのアクセス処理時間とアクセス数tとの乗算値の平均値であってもよい。なお、アクセス処理時間とアクセス数との乗算値が閾値γ3以下となる時期が複数存在する場合、作成部1005は、当該乗算値が最小となる時期を、閑散時期として特定することにしてもよい。
また、対象テーブルTの割り当てサイズが大きい場合、1集計単位に相当する時期では割り当て処理が完了しない場合がある。例えば、業務サーバ201の処理性能では、1時間に500[MB]の割り当て処理が限界であるとする。このとき、集計単位を「1日の時間単位」として、1.5[GB]のキャッシュ領域を割り当てる場合、1時間では割り当て処理が完了しない。
このため、作成部1005は、算出された対象テーブルTの割り当てサイズが所定値M以上の場合、所定値Mに応じて割り当てサイズを分割した分割サイズを算出することにしてもよい。所定値Mは、任意に設定可能であり、例えば、業務サーバ201の処理性能を考慮して設定される。つぎに、作成部1005は、割り当てサイズを分割サイズで除算した数に応じて、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない複数の閑散時期を特定する。そして、作成部1005は、特定した複数の閑散時期それぞれに、算出した分割サイズのキャッシュ領域を対象テーブルTに割り当てるメモリ割当計画を作成する。
メモリ割当計画の作成例については、図17および図18を用いて後述する。作成されたメモリ割当計画は、例えば、図9に示したキャッシュ計画テーブル260に記憶される。
計画実行部1006は、作成されたメモリ割当計画に基づいて、対象テーブルTへのキャッシュ領域の割り当てを行う。具体的には、例えば、計画実行部1006は、キャッシュ計画テーブル260を参照して、キャッシュ領域の割り当てが必要な時期に、業務サーバ201のキャッシュ割当部203に対して、対象テーブルTへの割り当てサイズ分のキャッシュ領域の割り当てを指示することにより割り当て処理を実行する。
業務サーバ201のキャッシュ割当部203は、メモリ割当装置101から割り当てを指示されると、指示された割り当てサイズ分のキャッシュ領域をメモリ302上に確保して、対象テーブルTに割り当てる。そして、キャッシュ割当部203は、割り当てたキャッシュ領域に、ディスク305から対象テーブルTのデータを読み込む。
業務サーバ201のログ出力部202およびキャッシュ割当部203は、業務サーバ201のメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。
なお、メモリ割当装置101は、作成部1005によって作成されたメモリ割当計画を他のコンピュータ(例えば、業務サーバ201)へ送信することにしてもよい。これにより、業務サーバ201において、メモリ割当計画に従って、対象テーブルTへのキャッシュ領域の割り当てを行うことができる。
また、メモリ割当装置101は、作成部1005によって作成されたメモリ割当計画を不図示のディスプレイに表示することにしてもよい。これにより、システム200の管理者等が、ディスプレイに表示されるメモリ割当計画を参照して、業務サーバ201における対象テーブルTへのキャッシュ領域の割り当てを制御することができる。
(キャッシュ改善係数の算出例)
つぎに、図12を用いて、キャッシュ改善係数の算出例について説明する。ここでは、集計単位を「1日の時間単位」とし、対象テーブルT1を例に挙げて、時間帯ごとのキャッシュ改善係数を算出する場合について説明する。
図12は、キャッシュ改善係数の算出例を示す説明図である。図12において、表1200は、図5に示したログ集計データ501から特定される対象テーブルT1の時間帯ごとのアクセス処理時間(ms)、アクセス数(回)、キャッシュヒット率(%)およびキャッシュサイズ(MB)を示している。
指標算出部1002は、例えば、対象テーブルT1の時間帯ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式(1)に代入することにより、時間帯ごとのキャッシュ改善係数を算出することができる。ただし、アクセス処理時間の単位は「s」とする。また、小数点第2位以下は切り上げる。
例えば、0時の時間帯を例に挙げると、対象テーブルT1のキャッシュ改善係数は、「27.9(≒10000[回]×{0.103[s]×(1−0.46)÷20[MB]})」となる。また、1時の時間帯を例に挙げると、対象テーブルT1のキャッシュ改善係数は、「25.4(≒12000[回]×{0.090[s]×(1−0.53)÷20[MB]})」となる。
(改善対象時期の特定例)
つぎに、図13〜図15を用いて、改善対象時期の特定例について説明する。ここでは、図6に示したキャッシュ改善係数テーブル230内の各対象テーブルT1〜T4の時間帯ごとのキャッシュ改善係数をもとに、各対象テーブルT1〜T4の改善対象時期を特定する場合について説明する。
図13は、改善対象時期の特定例を示す説明図(その1)である。図13において、キャッシュ改善係数テーブル230内の各対象テーブルT1〜T4の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルT1〜T4について、時間帯ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定する場合について説明する。
対象テーブルT1を例に挙げると、閾値αは、例えば、対象テーブルT1の時間帯ごとのキャッシュ改善係数の平均値である。ここでは、対象テーブルT1の閾値αは、「5.0」である。また、閾値βは、例えば、対象テーブルT1〜T4の各時間帯のキャッシュ改善係数の平均値である。例えば、0時の時間帯の閾値βは、「7.0」である。また、1時の時間帯の閾値βは、「6.4」である。
対象テーブルT1の0時の時間帯の場合、キャッシュ改善係数は「27.9」であり、閾値αは「5.0」であり、閾値βは「7.0」である。このため、特定部1003は、対象テーブルT1について、キャッシュ改善係数「27.9」が、閾値α以上となり、かつ、閾値β以上となる0時の時間帯を、対象テーブルT1の改善対象時期として特定する。
例えば、対象テーブルT1の1時の時間帯の場合、キャッシュ改善係数は「25.4」であり、閾値αは「5.0」であり、閾値βは「6.4」である。このため、特定部1003は、対象テーブルT1について、キャッシュ改善係数「25.4」が、閾値α以上となり、かつ、閾値β以上となる1時の時間帯を、改善対象時期として特定する。
図14は、改善対象時期の特定例を示す説明図(その2)である。図14において、キャッシュ改善係数テーブル230内の各対象テーブルT1〜T4の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルT1〜T4について、時間帯ごとのキャッシュ改善係数が大きい上位5位までの時期を、改善対象時期として特定する場合について説明する。なお、ここでのキャッシュ改善係数テーブル230内の各キャッシュ改善係数の値は、図6に示した値とは一部異なる値を用いている。
例えば、対象テーブルT1の場合、キャッシュ改善係数が大きい上位5位までの時期は、0時、1時、2時/23時、20時/22時の時間帯である。このため、特定部1003は、0時、1時、2時/23時、20時/22時の時間帯を、対象テーブルT1の改善対象時期として特定する。
図15は、改善対象時期の特定例を示す説明図(その3)である。図15において、キャッシュ改善係数テーブル230内の各対象テーブルT1〜T4の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルT1〜T4について、時間帯ごとのキャッシュ改善係数が最大の時期を、改善対象時期として特定する場合について説明する。
例えば、対象テーブルT1の場合、キャッシュ改善係数が最大の時期は、0時の時間帯である。このため、特定部1003は、0時の時間帯を、対象テーブルT1の改善対象時期として特定する。
(割り当てサイズの算出例)
つぎに、図16を用いて、改善対象時期における各対象テーブルTの割り当てサイズの算出例について説明する。
図16は、割り当てサイズの算出例を示す説明図である。図16において、上記式(2)を用いて算出された改善対象時期における各対象テーブルT1〜T4の割り当てサイズが示されている。図16中、背景色が付された箇所は、改善対象時期を示す。ここでは、業務サーバ201の最大キャッシュサイズを「100[MB]」とする。
この場合、例えば、改善対象時期である20時の時間帯は、対象テーブルT1〜T4の割り当てサイズの合計値(160[MB])が最大キャッシュサイズ(100[MB])を超える。このため、サイズ算出部1004は、各対象テーブルT1〜T4のキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルT1〜T4の割り当てサイズを再計算する。
具体的には、例えば、サイズ算出部1004は、キャッシュ改善係数テーブル230を参照して、20時の時間帯の各対象テーブルT1〜T4のキャッシュ改善係数を特定する。ここでは、各対象テーブルT1〜T4のキャッシュ改善係数として、0.6,0.1,31.0,0.5がそれぞれ特定されたとする。
つぎに、サイズ算出部1004は、特定した各対象テーブルT1〜T4のキャッシュ改善係数の比率に応じて最大キャッシュサイズ(100[MB])を分配する。対象テーブルT1〜T4に最大キャッシュサイズ(100[MB])を分配した結果は以下の通りである。
対象テーブルT1:2[MB](≒100[MB]×0.6÷32.2)
対象テーブルT2:0[MB](≒100[MB]×0.1÷32.2)
対象テーブルT3:96[MB](≒100[MB]×31.0÷32.2)
対象テーブルT4:1[MB](≒100[MB]×0.5÷32.2)
ここで、上記式(2)を用いて算出された対象テーブルT3の割り当てサイズは40[MB]であり、分配して得られた96[MB]は十分に大きい。この場合、サイズ算出部1004は、例えば、40[MB]を超えるサイズ分を含めた値(60[MB])を割り当て可能なキャッシュサイズとして、残りの対象テーブルT1,T2,T4のキャッシュ改善係数の比率に応じて分配することにしてもよい。対象テーブルT1,T2,T4に60[MB]を分配した結果は以下の通りである。
対象テーブルT1:30[MB](≒60[MB]×0.6÷1.2)
対象テーブルT2:5[MB](≒60[MB]×0.1÷1.2)
対象テーブルT3:40[MB](≒60[MB]×31.0÷32.2)
対象テーブルT4:25[MB](≒60[MB]×0.5÷1.2)
(メモリ割当計画の作成例)
つぎに、図17および図18を用いて、メモリ割当計画の作成例について説明する。
図17は、メモリ割当計画の作成例を示す説明図(その1)である。図17の(17−1)において、改善対象時期における各対象テーブルT1,T2の割り当てサイズが示されている。図17中、背景色が付された箇所は、改善対象時期を示す。なお、改善対象時期以外の時間帯の割り当てサイズは、「0」となっている。「0」は、キャッシュ領域の割り当てを0に変更するという意味ではなく、必要ならばキャッシュサイズを0まで変更可能であることを意味する。
まず、作成部1005は、対象テーブルT1について、ログ集計DB220を参照して、改善対象時期よりも前で、かつ、対象テーブルT1へのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルT1の改善対象時期である7時の時間帯(割り当てサイズ:20[MB])に対して、0時〜6時の時間帯が対象テーブルT1の閑散時期として特定された場合を想定する。
この場合、作成部1005は、例えば、改善対象時期の直前の時間帯、例えば、6時の時間帯に、20[MB]のキャッシュ領域を対象テーブルT1に割り当てるメモリ割当計画1701を作成する(図17中、(17−2)参照)。
なお、対象テーブルT1の改善対象時期の直前の時間帯として、6時の時間帯以外に15時の時間帯がある。このため、作成部1005は、15時の時間帯に、20[MB]のキャッシュ領域を対象テーブルT1に割り当てるメモリ割当計画を作成することにしてもよい。ただし、6時の時間帯に20[MB]のキャッシュ領域が割り当てられた場合、そのキャッシュ領域が解放されない限り、15時の時間帯に20[MB]分のキャッシュ領域を再度割り当てる必要はない。
つぎに、作成部1005は、対象テーブルT2について、ログ集計DB220を参照して、改善対象時期よりも前で、かつ、対象テーブルT2へのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルT2の改善対象時期である11時の時間帯(割り当てサイズ:20[MB])に対して、0時〜10時の時間帯が対象テーブルT2の閑散時期として特定された場合を想定する。
この場合、作成部1005は、例えば、対象テーブルT2の閑散時期のうち、対象テーブルT1の閑散時期と重複する時間帯、例えば、6時の時間帯に、20[MB]のキャッシュ領域を対象テーブルT2に割り当てるメモリ割当計画1702を作成する(図17中、(17−2)参照)。
これにより、対象テーブルT2のメモリ割当計画1702を作成する際に、対象テーブルT1のアクセス状況も考慮して、対象テーブルT1,T2へのアクセスがともに少ない時期に割り当て処理を実施する計画を立てることができる。
なお、対象テーブルTの改善対象時期によって必要となる割り当てサイズが異なる場合がある。この場合、作成部1005は、例えば、割り当てサイズが最大の改善対象時期に着目して、メモリ割当計画を作成することにしてもよい。また、作成部1005は、例えば、各改善対象時期の割り当てサイズに応じて、対象テーブルTに割り当てるキャッシュ領域を追加したり解放したりするメモリ割当計画を作成することにしてもよい。
また、業務システムの利用傾向は、各システムで固有のパターンがあるため、大きく変動することはない。このため、メモリ割当計画の作成頻度は、例えば、月に1回程度であってもよい。しかし、特殊な状況、例えば、アニバーサリーデーなど特定日などにアクセスが通常時よりも大幅に増加することが見込まれる場合などでは、必要に応じてキャッシュ計画テーブル260をマニュアルで変更することにしてもよい。
図18は、メモリ割当計画の作成例を示す説明図(その2)である。図18の(18−1)において、改善対象時期における対象テーブルT1の割り当てサイズが示されている。図18中、背景色が付された箇所は、改善対象時期を示す。ここでは、所定値Mは、業務サーバ201の処理性能を考慮して、500[MB]に設定されているとする。
この場合、改善対象時期(0時、1時、22時、23時の時間帯)における対象テーブルT1の割り当てサイズ(1500[MB])が所定値Mを超えている。このため、作成部1005は、例えば、割り当てサイズを所定値Mで分割した分割サイズを算出する。ここでは、分割サイズは、「500[MB]」となる。また、割り当てサイズを分割サイズで除算した数(分割数)は「3」となる。
つぎに、作成部1005は、ログ集計DB220を参照して、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルT1の改善対象時期である22時の時間帯(割り当てサイズ:1500[MB])に対して、2時〜21時の時間帯が対象テーブルT1の閑散時期として特定された場合を想定する。
つぎに、作成部1005は、特定した閑散時期のうち、分割数分の閑散時期を特定する。具体的には、例えば、作成部1005は、2時〜21時の閑散時期のうち、改善対象時期である22時の時間帯の直前3つ分(分割数分)の19時、20時、21時の閑散時期を特定する。そして、作成部1005は、特定した19時、20時、21時の閑散時期それぞれに、算出した分割サイズ(500[MB])のキャッシュ領域を対象テーブルT1に割り当てるメモリ割当計画1801を作成する。
これにより、対象テーブルT1の割り当てサイズが大きく、1集計単位(1時間)では割り当て処理が完了しない場合は、複数の閑散時期に割り当て処理を分散して実施するメモリ割当計画1801を作成することができる。
(メモリ割当装置101の各種処理手順)
つぎに、メモリ割当装置101の各種処理手順について説明する。まず、メモリ割当装置101のメモリ割当計画作成処理手順について説明する。
図19は、メモリ割当装置101のメモリ割当計画作成処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、メモリ割当装置101は、業務サーバ201からのトランザクションログLに含まれるログ情報に基づいて、対象テーブルTごとのログ集計データを生成する(ステップS1901)。生成されたログ集計データは、ログ集計DB220に記憶される。
そして、メモリ割当装置101は、生成した対象テーブルTごとのログ集計データに基づいて、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数を算出する(ステップS1902)。各対象テーブルTについて算出された集計単位ごとのキャッシュ改善係数は、キャッシュ改善係数テーブル230に記憶される。
つぎに、メモリ割当装置101は、算出した各対象テーブルTの集計単位ごとのキャッシュ改善係数に基づいて、各対象テーブルTについて、キャッシュミスの改善対象時期を特定する(ステップS1903)。特定された改善対象時期を示す情報は、改善対象テーブル240に記憶される。
つぎに、メモリ割当装置101は、割り当てサイズ算出処理を実行する(ステップS1904)。割り当てサイズ算出処理は、各対象テーブルTについて、ステップS1903において特定された改善対象時期の割り当てサイズを算出する処理である。割り当てサイズ算出処理の具体的な処理手順については、図20を用いて後述する。
つぎに、メモリ割当装置101は、各対象テーブルTについて、ログ集計DB220を参照して、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない閑散時期を特定する(ステップS1905)。
そして、メモリ割当装置101は、各対象テーブルTについて、算出した改善対象時期における割り当てサイズのキャッシュ領域を、特定した閑散時期に対象テーブルTに割り当てるメモリ割当計画を作成し(ステップS1906)、本フローチャートによる一連の処理を終了する。作成されたメモリ割当計画は、キャッシュ計画テーブル260に記憶される。
これにより、業務サーバ201の各対象テーブルTについて、各業務システム固有のアクセスパターンを考慮したメモリ割当計画を作成することができる。
つぎに、図19のステップS1904に示した割り当てサイズ算出処理の具体的な処理手順について説明する。
図20は、割り当てサイズ算出処理の具体的処理手順の一例を示すフローチャートである。図20のフローチャートにおいて、まず、メモリ割当装置101は、集計単位に対応する未選択の時期を選択する(ステップS2001)。例えば、集計単位が「1日の時間単位」の場合、メモリ割当装置101は、0時の時間帯から順に未選択の時間帯を選択する。また、集計単位が「月の日単位」の場合、メモリ割当装置101は、1日から順に未選択の日を選択する。
そして、メモリ割当装置101は、改善対象テーブル240を参照して、選択した時期が、少なくともいずれかの対象テーブルTの改善対象時期であるか否かを判断する(ステップS2002)。ここで、改善対象時期ではない場合(ステップS2002:No)、メモリ割当装置101は、ステップS2008に移行する。
一方、改善対象時期の場合(ステップS2002:Yes)、メモリ割当装置101は、選択した時期が改善対象時期である対象テーブルTについて、ログ集計DB220を参照して、改善対象時期と同一時期のキャッシュヒット率およびキャッシュサイズを特定する(ステップS2003)。
そして、メモリ割当装置101は、選択した時期が改善対象時期である対象テーブルTについて、上記式(2)を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における割り当てサイズを算出する(ステップS2004)。つぎに、メモリ割当装置101は、算出した改善対象時期における対象テーブルTの割り当てサイズを足し合わせて合計キャッシュサイズを算出する(ステップS2005)。
そして、メモリ割当装置101は、算出した合計キャッシュサイズが、業務サーバ201の割り当て可能サイズを超えるか否かを判断する(ステップS2006)。割り当て可能サイズは、業務サーバ201において割り当て可能なキャッシュサイズである。割り当て可能サイズの初期値は、業務サーバ201の最大キャッシュサイズである。
ここで、割り当て可能サイズを超えない場合(ステップS2006:No)、メモリ割当装置101は、算出した改善対象時期における対象テーブルTの割り当てサイズを、割り当てサイズテーブル250に登録する(ステップS2007)。そして、メモリ割当装置101は、集計単位に対応する未選択の時期があるか否かを判断する(ステップS2008)。
ここで、未選択の時期がある場合(ステップS2008:Yes)、メモリ割当装置101は、ステップS2001に戻る。一方、未選択の時期がない場合(ステップS2008:No)、メモリ割当装置101は、割り当てサイズ算出処理を呼び出したステップに戻る。
また、ステップS2006において、割り当て可能サイズを超える場合(ステップS2006:Yes)、メモリ割当装置101は、改善対象時期に対応する各対象テーブルTのキャッシュ改善係数の比率に応じて割り当て可能サイズを分配して、各対象テーブルTの割り当てサイズを再計算する(ステップS2009)。ただし、分配対象となる対象テーブルTは、ステップS2001において選択された時期が改善対象時期である対象テーブルTである。また、ステップS2011において割り当てサイズが確定した対象テーブルTは除外する。
つぎに、メモリ割当装置101は、再計算した割り当てサイズが、ステップS2004において算出した元の割り当てサイズを超える対象テーブルTがあるか否かを判断する(ステップS2010)。ここで、元の割り当てサイズを超える対象テーブルTがない場合(ステップS2010:No)、メモリ割当装置101は、ステップS2007に移行する。そして、メモリ割当装置101は、再計算した対象テーブルTの割り当てサイズを、割り当てサイズテーブル250に登録する。
一方、元の割り当てサイズを超える対象テーブルTがある場合(ステップS2010:Yes)、メモリ割当装置101は、該当の対象テーブルTの割り当てサイズを、ステップS2004において算出した元の割り当てサイズで確定する(ステップS2011)。
そして、メモリ割当装置101は、確定した割り当てサイズと再計算した割り当てサイズとの差分に基づいて、業務サーバ201の割り当て可能サイズを算出し(ステップS2012)、ステップS2009に戻る。
これにより、過去のアクセス状況をもとに、対象テーブルTに対応する業務システム固有のアクセスパターンを考慮した割り当てサイズを予測することができる。
つぎに、メモリ割当装置101の割り当て処理手順について説明する。
図21は、メモリ割当装置101の割り当て処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、メモリ割当装置101は、集計単位に対応する時期の開始時刻となったか否かを判断する(ステップS2101)。ここで、メモリ割当装置101は、時期の開始時刻となるのを待つ(ステップS2101:No)。
そして、時期の開始時刻となった場合(ステップS2101:Yes)、メモリ割当装置101は、キャッシュ計画テーブル260を参照して、対象テーブルTへのキャッシュ領域の割り当てが必要な時期であるか否かを判断する(ステップS2102)。ここで、キャッシュ領域の割り当てが必要な時期ではない場合(ステップS2102:No)、メモリ割当装置101は、ステップS2101に戻る。
一方、キャッシュ領域の割り当てが必要な時期の場合(ステップS2102:Yes)、メモリ割当装置101は、キャッシュ計画テーブル260を参照して、業務サーバ201に対して、対象テーブルTへの割り当てサイズ分のキャッシュ領域の割り当てを指示する(ステップS2103)。
そして、メモリ割当装置101は、割り当て処理を終了するか否かを判断する(ステップS2104)。例えば、メモリ割当装置101は、キャッシュ計画テーブル260内の全時期について、ステップS2101〜S2103の処理を実行した場合に、割り当て処理を終了する。
ここで、割り当て処理を終了しない場合(ステップS2104:No)、メモリ割当装置101は、ステップS2101に戻る。一方、割り当て処理を終了する場合(ステップS2104:Yes)、メモリ割当装置101は、本フローチャートによる一連の処理を終了する。
これにより、適時にキャッシュの効果を得られるようなキャッシュ領域の調整を自動で実施することができる。
(実施例)
つぎに、図22〜図29を用いて、1日の時間単位に加えて、月の日単位の集計結果(ログ収集データ)も考慮して、メモリ割当計画を作成する場合について説明する。
図22は、集計単位が月の日単位の場合のログ集計DB220の記憶内容の一例を示す説明図である。図22において、ログ集計DB220は、集計単位が月の日単位の場合の対象テーブルTごとのログ集計データ(例えば、ログ集計データ2201,2202)を記憶する。
指標算出部1002は、ログ集計DB220を参照して、各対象テーブルTについて、月の日単位ごとのキャッシュ改善係数を算出する。対象テーブルT1を例に挙げると、ログ集計データ2201をもとに算出される月の日単位ごとのキャッシュ改善係数は、図23に示す通りである。
図23は、集計単位が月の日単位の場合のキャッシュ改善係数の算出例を示す説明図である。図23において、表2300は、図22に示したログ集計データ2201から特定される対象テーブルT1の日ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを示している。
指標算出部1002は、例えば、対象テーブルT1の日ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式(1)に代入することにより、日ごとのキャッシュ改善係数を算出することができる。
例えば、1日(土)を例に挙げると、対象テーブルT1のキャッシュ改善係数は、「100(≒40000[回]×{0.100[s]×(1−0.5)÷20[MB]})」となる。また、2日(日)を例に挙げると、対象テーブルT1のキャッシュ改善係数は、「5(≒2000[回]×{0.100[s]×(1−0.5)÷20[MB]})」となる。
各対象テーブルTについて算出された日ごとのキャッシュ改善係数は、例えば、図24に示すようなキャッシュ改善係数テーブル230に記憶される。
図24は、集計単位が月の日単位の場合のキャッシュ改善係数テーブル230の記憶内容の一例を示す説明図である。図24において、キャッシュ改善係数テーブル230は、各対象テーブルTについて、日ごとのキャッシュ改善係数を記憶する。図24の例では、対象テーブルTは、対象テーブルT1〜T4である。
特定部1003は、図24に示したキャッシュ改善係数テーブル230を参照して、各対象テーブルT1〜T4のキャッシュミスの改善対象時期を特定する。
図25は、集計単位が月の日単位の場合の改善対象時期の特定例を示す説明図である。図25において、図24に示したキャッシュ改善係数テーブル230内の各対象テーブルT1〜T4の日ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルT1〜T4について、日ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定する場合について説明する。
対象テーブルT1を例に挙げると、閾値αは、例えば、対象テーブルT1の日ごとのキャッシュ改善係数の1ヶ月平均値である。ここでは、対象テーブルT1の閾値αは、「27.0」である。また、閾値βは、例えば、対象テーブルT1〜T4の各日のキャッシュ改善係数の平均値である。例えば、1日(土)の閾値βは、「25.3」である。また、2日(日)の閾値βは、「1.5」である。
対象テーブルT1の1日(土)の場合、キャッシュ改善係数は「100」であり、閾値αは「27.0」であり、閾値βは「25.3」である。このため、特定部1003は、対象テーブルT1について、キャッシュ改善係数「100」が、閾値α以上となり、かつ、閾値β以上となる1日(土)を、対象テーブルT1の改善対象時期として特定する。図25中、背景色が付された箇所は、改善対象時期を示す。
特定された改善対象時期を示す情報は、例えば、図26に示すような改善対象テーブル240に記憶される。
図26は、集計単位が月の日単位の場合の改善対象テーブル240の記憶内容の一例を示す説明図である。図26において、改善対象テーブル240は、各対象テーブルTについて、日ごとの改善対象フラグを記憶する。例えば、対象テーブルT1の1日(土)の改善対象フラグは「true」であり、キャッシュミスの改善対象時期とすることを示す。
サイズ算出部1004は、改善対象時期の対象テーブルTの割り当てサイズを算出する。具体的には、例えば、サイズ算出部1004は、図22に示したようなログ集計DB220を参照して、改善対象時期と同一時期の対象テーブルTのキャッシュヒット率およびキャッシュサイズを特定する。そして、サイズ算出部1004は、上記式(2)を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における対象テーブルTの割り当てサイズを算出する。
算出された改善対象時期における各対象テーブルTの割り当てサイズは、例えば、図27に示すような割り当てサイズテーブル250に記憶される。
図27は、集計単位が月の日単位の場合の割り当てサイズテーブル250の記憶内容の一例を示す説明図(その1)である。図27において、割り当てサイズテーブル250は、各対象テーブルTについて、日ごとのキャッシュ領域の割り当てサイズを記憶する。図27の例では、対象テーブルTは、対象テーブルT1〜T4である。
ここで、集計単位が1日の時間単位の場合の割り当てサイズテーブル250の記憶内容が、図8に示したものであったとする。この場合、対象テーブルT1に着目すると、月の日単位で見た場合、土曜日、日曜日(不要な日もある)にはキャッシュ領域の割り当てが必要だが、それ以外の曜日は必要ではない。また、対象テーブルT3に着目すると、土曜日、日曜日にはキャッシュ領域の割り当てが必要なく、その他の曜日は必要である。
このため、サイズ算出部1004は、図28に示すように、各曜日の割り当てサイズテーブル250を作成することにしてもよい。
図28は、集計単位が月の日単位の場合の割り当てサイズテーブル250の記憶内容の一例を示す説明図(その2)である。図28において、割り当てサイズテーブル250−1は、各対象テーブルT1〜T4について、土曜日と日曜日の時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。また、割り当てサイズテーブル250−2は、各対象テーブルT1〜T4について、その他の曜日(月曜日、火曜日、水曜日、木曜日)の時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。
作成部1005は、各対象テーブルT1〜T4について、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に各対象テーブルT1〜T4に割り当てるメモリ割当計画を作成する。具体的には、例えば、作成部1005は、図8および図27に示した割り当てサイズテーブル250を参照して、各対象テーブルT1〜T4について、曜日に応じてメモリ割当計画を作成することにしてもよい。
例えば、各対象テーブルT1〜T4について、閑散時間帯が3時〜6時の時間帯で、かつ、割り当て可能サイズが十分大きいと想定した場合、各曜日のキャッシュ計画テーブル260は、図29に示すようなものとなる。
図29は、曜日に応じたキャッシュ計画テーブル260の記憶内容の一例を示す説明図である。図29において、キャッシュ計画テーブル260−1は、金曜日の各対象テーブルT1〜T4のメモリ割当計画2901〜2904を記憶する。また、キャッシュ計画テーブル260−2は、土曜日の各対象テーブルT1〜T4のメモリ割当計画2905〜2908を記憶する。
また、キャッシュ計画テーブル260−3は、日曜日の各対象テーブルT1〜T4のメモリ割当計画2909〜2912を記憶する。また、キャッシュ計画テーブル260−4は、その他の曜日(月曜日、火曜日、水曜日、木曜日)の各対象テーブルT1〜T4のメモリ割当計画2913〜2916を記憶する。メモリ割当計画2901〜2916は、各対象テーブルT1〜T4について、キャッシュ領域を割り当てる時間帯と、当該時間帯に割り当てるキャッシュ領域のサイズとを示す。
このように、対象テーブルTへのアクセスパターンに曜日別の特徴がある場合などは、各曜日のキャッシュ計画テーブル260を作成することにしてもよい。
以上説明したように、実施の形態にかかるメモリ割当装置101によれば、対象テーブルTへのアクセスに関するログ情報を取得し、取得したログ情報に基づいて、集計単位ごとに、対象テーブルTのキャッシュ改善係数を算出することができる。これにより、業務サーバ201の各対象テーブルTについて、集計単位ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを判断可能な指標値を算出することができる。
また、メモリ割当装置101によれば、算出した対象テーブルTの集計単位ごとのキャッシュ改善係数に基づいて、キャッシュミスの改善対象時期を特定することができる。これにより、キャッシュ領域を増やすことによる処理性能の改善可能性(キャッシュ効果)が高い時期を、対象テーブルTの改善対象時期として特定することができる。
また、メモリ割当装置101によれば、特定した改善対象時期と同一時期の対象テーブルTへのアクセスに関するログ情報に基づいて、改善対象時期の対象テーブルTの割り当てサイズを算出することができる。これにより、過去のアクセス状況をもとに対象テーブルTの割り当てサイズを算出することができ、業務システム固有のアクセスパターンを考慮した割り当てサイズを予測することが可能となる。
また、メモリ割当装置101によれば、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に対象テーブルTに割り当てるメモリ割当計画を作成することができる。これにより、改善対象時期よりも前の時期から、対象テーブルTに割り当てるキャッシュ領域の準備を始めて、改善対象時期となった際にキャッシュの効果を即時得られるようなスケジュールを立てることができる。また、キャッシュ領域の割り当て量に対して処理時間の低減効果がより大きい時期にキャッシュ領域を優先的に割り当て可能となり、リソース割当効率がよい処理時間短縮を実現することができる。
また、メモリ割当装置101によれば、作成したメモリ割当計画に基づいて、対象テーブルTへのキャッシュ領域の割り当てを行うことができる。これにより、適時にキャッシュの効果を得られるようなキャッシュ領域の調整を自動で実施することができる。
また、メモリ割当装置101によれば、対象テーブルTの集計単位ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュサイズに基づいて、対象テーブルTの集計単位ごとのキャッシュ改善係数を算出することができる。これにより、アクセス数が多く、アクセス処理時間が長く、キャッシュヒット率が低いほど高くなるキャッシュ改善係数を算出することができる。
また、メモリ割当装置101によれば、改善対象時期と同一時期の対象テーブルTへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュサイズに基づいて、対象テーブルTの割り当てサイズを算出することができる。これにより、過去のアクセス状況をもとに、改善対象時期におけるキャッシュヒット率が100%になると予測される割り当てサイズを算出することができる。
また、メモリ割当装置101によれば、取得したログ情報に基づいて、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない閑散時期を特定することができる。そして、メモリ割当装置101によれば、特定した閑散時期に、算出した割り当てサイズのキャッシュ領域を対象テーブルTに割り当てるメモリ割当計画を作成することができる。これにより、対象テーブルTへのアクセスが多い繁忙時期を避けて、キャッシュ領域の割り当て処理を実施することができ、対象テーブルTのアクセス性能が低下するのを防ぐことができる。
また、メモリ割当装置101によれば、対象テーブルTの割り当てサイズが所定値M以上の場合、所定値Mに応じて割り当てサイズを分割した分割サイズを算出することができる。また、メモリ割当装置101によれば、対象テーブルTの割り当てサイズを分割サイズで除算した数に応じて、改善対象時期よりも前で、かつ、対象テーブルTへのアクセスが少ない複数の閑散時期を特定することができる。そして、メモリ割当装置101によれば、特定した複数の閑散時期それぞれに、算出した分割サイズのキャッシュ領域を対象テーブルTに割り当てるメモリ割当計画を作成することができる。これにより、1集計単位に相当する時期では割り当て処理が完了しないほど割り当てサイズが大きい場合は、キャッシュ領域の割り当て処理を複数の閑散時期に分散して実施することができる。
また、メモリ割当装置101によれば、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数が閾値α以上となる時期を、改善対象時期として特定することができる。閾値αは、例えば、対象テーブルTの集計単位ごとのキャッシュ改善係数の平均値である。これにより、例えば、1日のうちキャッシュ改善係数が相対的に高くなっている時期を、改善対象時期として特定することができる。
また、メモリ割当装置101によれば、各対象テーブルTについて、集計単位ごとに算出した、各対象テーブルTのキャッシュ改善係数と他の対象テーブルTのキャッシュ改善係数とに基づいて、改善対象時期を特定することができる。具体的には、例えば、メモリ割当装置101によれば、集計単位ごとのキャッシュ改善係数が閾値β以上となる時期を、改善対象時期として特定することができる。閾値βは、例えば、複数の対象テーブルTの各集計単位のキャッシュ改善係数の平均値である。これにより、各対象テーブルTについて、当該対象テーブルTのキャッシュ改善係数が複数の対象テーブルTの中で相対的に高くなっている時期を、改善対象時期として特定することができる。
また、メモリ割当装置101によれば、各対象テーブルTについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定することができる。これにより、キャッシュ改善係数が、対象テーブルT単位では高くなっているものの、複数の対象テーブルT全体としては高いとはいえない時期が、改善対象時期として特定されるのを防ぐことができる。
また、メモリ割当装置101によれば、改善対象時期の合計キャッシュサイズが最大キャッシュサイズを超える場合、改善対象時期に対応する各対象テーブルTのキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルTの割り当てサイズを再計算することができる。これにより、業務サーバ201において割り当て可能な最大キャッシュサイズを合計キャッシュサイズが超えている場合は、改善対象時期における各対象テーブルTのキャッシュ効果の高さに応じてキャッシュリソースを適切に分配することができる。
これらのことから、実施の形態にかかるメモリ割当装置101によれば、対象テーブルTへのキャッシュ領域の割り当てを、業務システム固有のアクセスパターンに応じて動的に変化させて効率的な割り当てを可能にすることができる。また、キャッシュ領域の割り当て処理を実施するタイミングを、各対象テーブルTへのアクセス状況を考慮して決めることができるため、業務サーバ201全体の負荷が高い時期に割り当て処理が実施されて、全体的な性能劣化を引き起こすのを防ぐことができる。
なお、本実施の形態で説明したメモリ割当方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本メモリ割当プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本メモリ割当プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータに実行させることを特徴とするメモリ割当プログラム。
(付記2)作成した前記メモリ割当計画に基づいて、前記対象データへのキャッシュ領域の割り当てを行う、処理を前記コンピュータに実行させることを特徴とする付記1に記載のメモリ割当プログラム。
(付記3)前記ログ情報は、前記対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、前記対象データに割り当てられたキャッシュ領域のサイズを含み、
前記指標値を算出する処理は、
前記ログ情報から特定される前記時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、前記時間間隔ごとの前記指標値を算出する、ことを特徴とする付記1または2に記載のメモリ割当プログラム。
(付記4)前記サイズを算出する処理は、
前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズに基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出する、ことを特徴とする付記3に記載のメモリ割当プログラム。
(付記5)取得した前記ログ情報に基づいて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない閑散時期を特定する、処理を前記コンピュータに実行させ、
前記作成する処理は、
特定した前記閑散時期に、算出した前記サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、ことを特徴とする付記1〜4のいずれか一つに記載のメモリ割当プログラム。
(付記6)算出した前記サイズが所定値以上の場合、前記所定値に応じて前記サイズを分割した分割サイズを算出する、処理を前記コンピュータに実行させ、
前記閑散時期を特定する処理は、
前記サイズを前記分割サイズで除算した数に応じて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない複数の閑散時期を特定し、
前記作成する処理は、
特定した前記複数の閑散時期それぞれに、算出した前記分割サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、
ことを特徴とする付記5に記載のメモリ割当プログラム。
(付記7)前記特定する処理は、
前記指標値が閾値以上となる時期を、前記改善対象時期として特定する、ことを特徴とする付記1〜6のいずれか一つに記載のメモリ割当プログラム。
(付記8)前記コンピュータに、
キャッシュ領域を割り当てる複数の対象データの各対象データについて、前記取得する処理、前記指標値を算出する処理、前記特定する処理、前記サイズを算出する処理、および前記作成する処理を実行させることを特徴とする付記1〜7のいずれか一つに記載のメモリ割当プログラム。
(付記9)前記特定する処理は、
前記各対象データについて、前記時間間隔ごとに算出した、前記各対象データの指標値と他の対象データの指標値とに基づいて、キャッシュミスの改善対象時期を特定する、ことを特徴とする付記8に記載のメモリ割当プログラム。
(付記10)前記サイズを算出する処理は、
算出した前記各対象データのキャッシュ領域のサイズの合計値が、前記複数の対象データに割り当て可能な最大サイズを超える場合、前記改善対象時期に対応する前記各対象データの指標値の比率に応じて前記最大サイズを分配して、前記各対象データに割り当てるキャッシュ領域のサイズを再計算する、ことを特徴とする付記8または9に記載のメモリ割当プログラム。
(付記11)キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータが実行することを特徴とするメモリ割当方法。
(付記12)キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
制御部を有することを特徴とするメモリ割当装置。
101 メモリ割当装置
102 ストレージ
103,302 メモリ
110 対象データ
120,401,402,403,404 ログ情報
130 メモリ割当計画
200 システム
201 業務サーバ
202 ログ出力部
203 キャッシュ割当部
210 ネットワーク
220 ログ集計DB
230 キャッシュ改善係数テーブル
240 改善対象テーブル
250 割り当てサイズテーブル
260 キャッシュ計画テーブル
300 バス
301 CPU
303 I/F
304 ディスクドライブ
305 ディスク
501,502,2201,2202 ログ集計データ
1001 取得部
1002 指標算出部
1003 特定部
1004 サイズ算出部
1005 作成部
1006 計画実行部

Claims (10)

  1. キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
    取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
    算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
    特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
    算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
    処理をコンピュータに実行させることを特徴とするメモリ割当プログラム。
  2. 作成した前記メモリ割当計画に基づいて、前記対象データへのキャッシュ領域の割り当てを行う、処理を前記コンピュータに実行させることを特徴とする請求項1に記載のメモリ割当プログラム。
  3. 前記ログ情報は、前記対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、前記対象データに割り当てられたキャッシュ領域のサイズを含み、
    前記指標値を算出する処理は、
    前記ログ情報から特定される前記時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、前記時間間隔ごとの前記指標値を算出する、ことを特徴とする請求項1または2に記載のメモリ割当プログラム。
  4. 前記サイズを算出する処理は、
    前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズに基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出する、ことを特徴とする請求項3に記載のメモリ割当プログラム。
  5. 取得した前記ログ情報に基づいて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない閑散時期を特定する、処理を前記コンピュータに実行させ、
    前記作成する処理は、
    特定した前記閑散時期に、算出した前記サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、ことを特徴とする請求項1〜4のいずれか一つに記載のメモリ割当プログラム。
  6. 前記コンピュータに、
    キャッシュ領域を割り当てる複数の対象データの各対象データについて、前記取得する処理、前記指標値を算出する処理、前記特定する処理、前記サイズを算出する処理、および前記作成する処理を実行させることを特徴とする請求項1〜5のいずれか一つに記載のメモリ割当プログラム。
  7. 前記特定する処理は、
    前記各対象データについて、前記時間間隔ごとに算出した、前記各対象データの指標値と他の対象データの指標値とに基づいて、キャッシュミスの改善対象時期を特定する、ことを特徴とする請求項6に記載のメモリ割当プログラム。
  8. 前記サイズを算出する処理は、
    算出した前記各対象データのキャッシュ領域のサイズの合計値が、前記複数の対象データに割り当て可能な最大サイズを超える場合、前記改善対象時期に対応する前記各対象データの指標値の比率に応じて前記最大サイズを分配して、前記各対象データに割り当てるキャッシュ領域のサイズを再計算する、ことを特徴とする請求項6または7に記載のメモリ割当プログラム。
  9. キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
    取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
    算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
    特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
    算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
    処理をコンピュータが実行することを特徴とするメモリ割当方法。
  10. キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
    取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
    算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
    特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
    算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
    制御部を有することを特徴とするメモリ割当装置。
JP2017210638A 2017-10-31 2017-10-31 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置 Pending JP2019082917A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017210638A JP2019082917A (ja) 2017-10-31 2017-10-31 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017210638A JP2019082917A (ja) 2017-10-31 2017-10-31 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置

Publications (1)

Publication Number Publication Date
JP2019082917A true JP2019082917A (ja) 2019-05-30

Family

ID=66669650

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017210638A Pending JP2019082917A (ja) 2017-10-31 2017-10-31 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置

Country Status (1)

Country Link
JP (1) JP2019082917A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102579320B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102579320B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
US11994991B1 (en) 2023-04-19 2024-05-28 Metisx Co., Ltd. Cache memory device and method for implementing cache scheduling using same

Similar Documents

Publication Publication Date Title
US11544244B2 (en) Selecting partitions for reclustering based on distribution of overlapping partitions
US6961835B2 (en) System and method for autonomically reallocating memory among buffer pools
US10467569B2 (en) Apparatus and method for scheduling distributed workflow tasks
US20180314556A1 (en) Serverless execution of code using cluster resources
US10769146B1 (en) Data locality based query optimization for scan operators
JP5068099B2 (ja) 個々のユーザの資源使用量およびその使用量の追跡に基づいた公平な共用分のスケジューリングを行う方法およびシステム
EP3293632B1 (en) Dynamically varying processing capacity entitlements
CN107430529B (zh) 大型内存数据库的负载均衡的装置
US10680975B2 (en) Method of dynamic resource allocation for public clouds
US7904689B1 (en) Just in time storage allocation analysis systems and methods
CN114265679A (zh) 数据处理方法、装置和服务器
Bodík et al. Deadline-aware scheduling of big-data processing jobs
US10313261B1 (en) Tenant assignment system
JP2019082917A (ja) メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置
EP3136237A1 (en) Cost optimization in dynamic workload capping
Çavdar et al. Quantifying the brown side of priority schedulers: Lessons from big clusters
US9582521B2 (en) Management of database allocation during reorganization
US20050197936A1 (en) Monte Carlo grid scheduling algorithm selection optimization
WO2022266263A1 (en) Allocating of computing resources for applications
CN115048466A (zh) 一种数据分析方法、系统、终端及存储介质
CN107819804B (zh) 云端储存设备系统及决定其架构的高速缓存中数据的方法
US9697049B2 (en) Job scheduling apparatus and method based on island execution time
US20150134919A1 (en) Information processing apparatus and data access method
US20210064575A1 (en) Data storage method and method for executing an application with reduced access time to the stored data
US11061932B2 (en) Methods and system for managing storage with multiple simultaneous data temperature models