(57)【特許請求の範囲】
【請求項１】
キャッシュにおけるデステージ・スキャン時間を管理するためのシステムであって、
キャッシュと、
前記キャッシュに結合されたプロセッサと
を備えており、前記プロセッサは、
第１のスレッドを用いて、前記キャッシュにおける複数のストレージ・トラックをスキャンするための所望のスキャン時間を連続的に判断し、
第２のスレッドを用いて、前記連続的に判断した所望のスキャン時間に基づき、前記キャッシュにおける前記複数のストレージ・トラックの実際のスキャン時間を連続的に制御する
ように構成され、
前記所望のスキャン時間を連続的に判断するとき、前記プロセッサは、
デステージ競合について前記キャッシュを実質的に連続的に監視し、
前記キャッシュにデステージ競合が発生している場合、所定の時間だけ前記所望の時間を増加させ、
振動について前記キャッシュを実質的に連続的に監視し、
前記キャッシュに振動が発生している場合、所定の百分率だけ前記所望のスキャン時間を減少させる
ように構成される、前記システム。
【請求項２】
前記プロセッサは、
前記キャッシュにデステージ競合が発生している場合、１００ｍｓだけ前記所望のスキャン時間を増加させ、
前記キャッシュに振動が発生している場合、５０％だけ前記所望のスキャン時間を減少させ、
前記キャッシュにデステージ競合が発生していず、かつ、振動も発生していない場合、現在の所望のスキャン時間を維持する
ように構成される、請求項１に記載のシステム。
【請求項３】
前記実際のスキャン時間を連続的に制御するとき、前記プロセッサは、
前回のスキャン時間を判断し、
完了した現在のスキャンの部分を判断し、
完了する必要がある前記現在のスキャンの残りの部分を推定し、
前記前回のスキャン時間と、完了した前記現在のスキャンの前記部分と、前記現在のスキャンの前記推定される残りの部分とを合計して、基準時間を作成することと、
前記基準時間を前記所望のスキャン時間の２倍（２×）で除算して、基準スキャン因子を作成することと、
前記基準スキャン因子に基づき、次回のスキャンについての次回のスキャン時間を変更する
ように構成される、請求項１に記載のシステム。
【請求項４】
完了する必要がある前記現在のスキャンの前記残りの部分を推定するとき、前記プロセッサは、
前記現在のスキャンについての推定合計時間から完了した前記現在のスキャンの前記部分を減算して、第１の因子を作成し、
前記第１の因子から前回のスキャンの開始から現在時刻までの時間を減算し、該減算した結果を第１の因子で除算して、第２の因子を作成し、
前記第２の因子に前記所望のスキャン時間を乗算する
ように構成される、請求項３に記載のシステム。
【請求項５】
前記基準スキャン因子に基づき、前記次回のスキャンについての前記次回のスキャン時間を変更するとき、前記プロセッサは、
前記基準スキャン因子が１未満である場合、前記次回のスキャンについての前記次回のスキャン時間を増加させ、
前記基準スキャン因子が１より大きいか又は１に等しい場合、前記キャッシュにおけるデステージ・タスクの数を維持する
ようにさらに構成される、請求項４に記載のシステム。
【請求項６】
前記次回のスキャンについての前記次回のスキャン時間を増加させるとき、前記プロセッサは、前記キャッシュにおけるデステージ・タスクの数を減少させるように構成される、請求項５に記載のシステム。
【請求項７】
キャッシュにおけるデステージ・スキャン時間を管理するための方法であって、
第１のスレッドを用いて、前記キャッシュにおける複数のストレージ・トラックをスキャンするための所望のスキャン時間を連続的に判断するステップと、
第２のスレッドを用いて、前記連続的に判断した所望のスキャン時間に基づき、前記キャッシュにおける前記複数のストレージ・トラックの実際のスキャン時間を連続的に制御するステップと
を含み、
前記所望のスキャン時間を連続的に判断するステップは、
デステージ競合について前記キャッシュを実質的に連続的に監視するステップと、
前記キャッシュにデステージ競合が発生している場合、所定の時間だけ前記所望のスキャン時間を増加させるステップと、
振動について前記キャッシュを実質的に連続的に監視するステップと、
前記キャッシュに振動が発生している場合、所定の百分率だけ前記所望のスキャン時間を減少させるステップと
を含む、
前記方法。
【請求項８】
前記キャッシュにデステージ競合が発生している場合、１００ｍｓだけ前記所望のスキャン時間を増加させるステップと、
前記キャッシュに振動が発生している場合、５０％だけ前記所望のスキャン時間を減少させるステップと、
前記キャッシュにデステージ競合が発生していず、かつ、振動が発生していない場合、現在の所望のスキャン時間を維持するステップと
をさらに含む、請求項７に記載の方法。
【請求項９】
前記実際のスキャン時間を連続的に制御するステップは、
前回のスキャン時間を判断するステップと、
完了した現在のスキャンの部分を判断するステップと、
完了する必要がある前記現在のスキャンの残りの部分を推定するステップと、
前記前回のスキャン時間と、前記完了した前記現在のスキャンの部分と、前記現在のスキャンの前記推定された残りの部分とを合計して、基準時間を作成するステップと、
前記基準時間を前記所望のスキャン時間の２倍（２×）で除算して、基準スキャン因子を作成するステップと、
前記基準スキャン因子に基づき、次回のスキャンについての次回のスキャン時間を変更するステップと
を含む、請求項７に記載の方法。
【請求項１０】
完了する必要がある前記現在のスキャンの前記残りの部分を推定するステップは、
前記現在のスキャンについての推定合計時間から完了した前記現在のスキャンの前記部分を減算して、第１の因子を作成するステップと、
前記第１の因子から前回のスキャンの開始から現在時刻までの時間を減算し、該減算した結果を第１の因子で除算して、第２の因子を作成するステップと、
前記第２の因子に前記所望のスキャン時間を乗算するステップと
を含む、請求項９に記載の方法。
【請求項１１】
前記参照スキャン時間に基づき、前記次回のスキャンについての前記次回のスキャン時間を変更するステップは、
前記基準スキャン因子が１未満である場合、前記次回のスキャンについての前記次回のスキャン時間を増加させるステップと、
前記基準スキャン因子が１より大きいか又は１に等しい場合、前記キャッシュにおける前記デステージ・タスクの数を維持するステップと
を含む、請求項１０に記載の方法。
【請求項１２】
前記次回のスキャンについての前記次回のスキャン時間を増加させるステップは、前記キャッシュにおけるデステージ・タスクの数を減少させるステップを含む、請求項１１に記載の方法。
【請求項１３】
キャッシュにおけるデステージ・スキャン時間を管理するためのコンピュータ・プログラムであって、コンピュータに、請求項７〜１２のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピューティング・システムに関し、より具体的には、キャッシュにおけるデステージ・スキャン時間を管理するためのシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータ・ストレージ・システムの１つの目的は、書き込みキャッシュからストレージ・トラックをデステージ（destage）するときのデステージ競合（conflict）の数を減少させて、ストレージ・システムがより効率的及び／又はより高速に動作するようにすることである。デステージ競合は、ホストがデータをストレージ・トラックに書き込もうとしている間に、ストレージ・トラックが書き込みキャッシュからデステージされているときに起こり得る。この状況は、現代のストレージ・システムが、典型的には、ストレージ・トラックに書き込まれた直後にストレージ・トラックをデステージするためにもたらされ得るものであり、ホストは、ストレージ・トラックに再び書き込みできるようになる前に、ストレージ・トラックが書き込みキャッシュからデステージされるまで待つ必要がある。デステージ競合の数を減少させる１つの技術として、ストレージ・トラックがデステージされる前に、書き込みキャッシュ内にストレージ・トラックを長時間保持し、それにより、ストレージ・トラックがデステージされる前に、複数回ストレージ・トラックを書き込むことができるようにすることが挙げられる。これはデステージ競合を減少させるための効果的な技術であるが、ストレージ・トラックが書き込みキャッシュ内に過度に長く存在してキャッシュが完全に一杯にならないようにすることも望ましい。キャッシュが、振動（oscillation）として知られる、ほぼ一杯の状態とほぼ空の状態との間での過度な量の変動を受けないことも望ましい。
【０００３】
特許文献１は、キャッシュからトラックを破棄するために用いられる複数のキャッシュ・ディレクトリ・スキャンをグループ化し、それによって、トラックをデステージするために任意の時点で実行するスキャンの数が最小にされることを開示する。キャッシュをスキャンする際、キャッシュと関連したトラックが検査され、適切なアクションがとられる。適切なアクションとして、キャッシュからのデータのデステージ又はキャッシュからのデータの破棄を挙げることができる。適切なアクションは、キャッシュ上で実行されているスキャンのタイプによっても変化し得る。
【０００４】
特許文献２は、スキャン・プロセスの数を事前設定し、事前決定することを開示し、ここで、スキャン・プロセスはキャッシュ内のトラックからデータをデステージするために用いられ、スキャン・プロセスの数もまた時間と共に変化し得る。
【０００５】
特許文献３は、キューに入れられた１つのスキャン要求に関連する時間が或る時間より短いかどうかを判断した後で、キャッシュからデータをデステージするスキャン要求を遅延させることを開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１０／００３７２２６Ａ１号明細書
【特許文献２】米国特許出願公開第２００３／０２２５９４８Ａ１号明細書
【特許文献３】米国特許第７，０８５，８９２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
キャッシュにおけるデステージ・スキャン時間を管理するためのシステム及び方法を提供する。
【課題を解決するための手段】
【０００８】
種々の実施形態が、キャッシュにおけるデステージ・スキャン時間を管理するためのシステムを提供する。１つのシステムは、キャッシュと、キャッシュに結合されたプロセッサとを含む。１つの実施形態において、プロセッサは、第１のスレッドを用いて、キャッシュにおける複数のストレージ・トラックをスキャンするための所望のスキャン時間を連続的に判断し、第２のスレッドを用いて、連続的に判断した所望のスキャン時間に基づき、キャッシュにおける複数のストレージ・トラックの実際のスキャン時間を連続的に制御するように構成される。
【０００９】
キャッシュにおけるデステージ・スキャン時間を管理するための方法も提供される。１つの方法は、第１のスレッドを用いて、キャッシュにおける複数のストレージ・トラックをスキャンするための所望のスキャン時間を連続的に判断することと、第２のスレッドを用いて、連続的に判断した所望のスキャン時間に基づき、キャッシュにおける複数のストレージ・トラックの実際のスキャン時間を連続的に制御することとを含む。
【００１０】
キャッシュにおけるデステージ・スキャン時間を管理するためのコンピュータ・プログラム製品を含む物理的コンピュータ・ストレージ媒体（例えば、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせ）も提供される。１つの物理的コンピュータ・ストレージ媒体は、第１のスレッドを用いて、キャッシュにおける複数のストレージ・トラックをスキャンするための所望のスキャン時間を連続的に判断するためのコンピュータ・コードと、第２のスレッドを用いて、連続的に判断した所望のスキャン時間に基づき、キャッシュにおける複数のストレージ・トラックの実際のスキャン時間を連続的に制御するためのコンピュータ・コードとを含む。
【００１１】
本発明の利点を容易に理解するために、添付図面に示される特定の実施形態を参照して、簡潔に上述した本発明のより詳細な説明が与えられる。これらの図面は本発明の典型的な実施形態を示すものにすぎず、従って、本発明の範囲を限定するものと考えられるべきではないことを理解した上で、本発明が、添付図面を用いて付加的な詳細及び細部と共に記載され、説明される。
【図面の簡単な説明】
【００１２】
【図１】キャッシュにおけるデステージ・スキャン時間を管理するためのシステムの１つの実施形態のブロック図である。
【図２】図１のキャッシュについての所望のスキャン時間を判断するための方法の１つの実施形態のフロー図である。
【図３】図１のキャッシュについての実際のスキャン時間を制御するための方法の１つの実施形態のフロー図である。
【発明を実施するための形態】
【００１３】
種々の実施形態が、キャッシュにおけるデステージ・スキャン時間を管理するためのシステム及び方法を提供する。キャッシュにおけるデステージ・スキャン時間を管理するためのコンピュータ・プログラム製品を含む物理的コンピュータ・ストレージ媒体（例えば、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせ）も提供される。
【００１４】
ここで図面を参照すると、図１は、キャッシュにおけるデステージ・スキャン時間を管理するためのシステム１００の１つの実施形態のブロック図である。少なくとも図示される実施形態において、システム１００は、バス１４０（例えば、有線バス及び／又は無線バス）を介してキャッシュ１２０及びプロセッサ１３０に結合されたメモリ１１０を含む。
【００１５】
メモリ１１０は、当技術分野において既知の又は将来開発される、いずれのタイプのメモリ・デバイスであってもよい。メモリ１１０の例として、これらに限定されるものではないが、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。メモリ１１０の種々の実施形態において、ストレージ・トラックをメモリ１１０内に格納することが可能である。さらに、データをストレージ・トラックに書き込むときに、ストレージ・トラックの各々をキャッシュ１２０からメモリ１１０にデステージすることができる。
【００１６】
１つの実施形態において、キャッシュ１２０は、１つ又は複数のランクに区分化された書き込みキャッシュを含み、そこで、各々のランクは、１つ又は複数のストレージ・トラックを含む。キャッシュ１２０は、当技術分野において既知の又は将来開発される、いずれのキャッシュであってもよい。
【００１７】
動作中、各ランクにおけるストレージ・トラックは、そのストレージ・トラックに書き込みが行われた後、「フォアグラウンド」デステージ・プロセスにおいて、メモリ１１０にデステージされる。即ち、フォアグラウンド・デステージ・プロセスは、ホスト（図示せず）がキャッシュ１２０のランクにおける種々のストレージ・トラックにアクティブに書き込みを行っている間、ストレージ・トラックをランクからメモリ１１０にデステージする。特定のストレージ・トラックは、１つ又は複数のホストがその特定のストレージ・トラックに書き込むことを望む（これは、デステージ競合として知られる）ときにはデステージされず、かつ、キャッシュ１２０は、ほぼ一杯の状態とほぼ空の状態との間での大きな変動（これは、振動として知られる）を受けないことが理想的である。デステージ競合の数を低減させ、ストレージ・トラックがキャッシュ１２０内に存在する時間を低減させるために、プロセッサ１３０は、キャッシュ１２０におけるデステージ・スキャン時間を管理するための方法を実行するように構成される。
【００１８】
種々の実施形態において、プロセッサ１３０は、プロセッサ１３０によって実行されたときに、プロセッサ１３０に、キャッシュ１２０においてデステージ・スキャン時間を管理するための方法を実行させるコンピュータ可読コードを含む、デステージ・スキャン時間管理モジュール１３１０を含む、又はこれにアクセスすることができる。デステージ・スキャン時間管理モジュール１３１０においてそのコンピュータ可読コードを実行するとき、プロセッサ１３０は、第１のスレッドを用いて、キャッシュ１２０におけるストレージ・トラックをスキャンするための所望のスキャン時間を判断し、第２のスレッドを用いて、判断した所望のスキャン時間に基づいて、キャッシュ１２０におけるストレージ・トラックの実際のスキャン時間を制御するように構成される。１つの実施形態において、第１のスレッド及び第２のスレッドは、それぞれ、所望のスキャン時間を判断する際、及び、実際のスキャン時間を制御する際、連続的に又は実質的に連続的に機能する。
【００１９】
第１のスレッドを用いて所望のスキャン時間を判断するとき、プロセッサ１３０は、連続的に、実質的に連続的に、又は所定の間隔で、デステージ競合についてキャッシュ１２０を監視し、キャッシュ１２０にデステージ競合が発生している場合には、所定の時間だけ所望のスキャン時間を増加させるように構成される。１つの実施形態においては、プロセッサ１３０がキャッシュ１２０におけるデステージ競合を検出するたびに、所定の時間の増加は、１００ミリ秒である。他の実施形態においては、プロセッサ１３０がキャッシュ１２０におけるデステージ競合を検出するたびに、所定の時間の増加は、１００ミリ秒より短い（例えば、約１０ミリ秒から約９９ミリ秒までの）時間である。さらに別の実施形態においては、プロセッサ１３０がキャッシュ１２０におけるデステージ競合を検出するたびに、所定の時間の増加は、１００ミリ秒より長い（例えば、１０１ミリ秒から約１秒までの）時間である。このように、所定の時間の増加は、システム１００の具体的な用途の必要性に従って調整することができる。
【００２０】
プロセッサ１３０はまた、連続的に、実質的に連続的に、又は所定の間隔で、振動についてキャッシュ１２０を監視し、キャッシュ１２０に振動が発生している場合には、所定の時間だけ所望のスキャン時間を減少させるように構成される。１つの実施形態においては、プロセッサ１３０は、キャッシュに振動が発生しているとプロセッサ１３０が判断したとき、５０パーセント（５０％）だけ所望のスキャン時間を減少させるように構成される。別の実施形態においては、プロセッサ１３０は、キャッシュ１２０に振動が発生しているとプロセッサ１３０が判断したとき、５０パーセントを下回る（例えば、約１０％から約４９％までの）量だけ所望のスキャン時間を減少させるように構成される。さらに別の実施形態においては、プロセッサ１３０は、キャッシュ１２０に振動が発生しているとプロセッサ１３０が判断したとき、５０パーセントを上回る（例えば、約５１％から約９０％までの）量だけ所望のスキャン時間を減少させるように構成される。
【００２１】
別の実施形態においては、プロセッサ１３０は、連続的に、実質的に連続的に、又は所定の間隔で、キャッシュ１２０内に格納されたデータ量を監視し、キャッシュ１２０が所定量を上回るデータ量を格納している場合、所定の時間だけ所望のスキャン時間を減少させるように構成される。１つの実施形態において、プロセッサ１３０は、キャッシュ１２０が、キャッシュ１２０の総ストレージ容量の７０パーセント（７０％）に等しいデータ量を格納しているとプロセッサ１３０が判断したとき、所望のスキャン時間を減少させるように構成される。別の実施形態においては、プロセッサ１３０は、キャッシュ１２０がキャッシュ１２０の総ストレージ容量の７０パーセントを上回る（例えば、約７１％から約９５％までの）データ量を格納しているとプロセッサ１３０が判断したとき、所望のスキャン時間を減少させるように構成される。さらに別の実施形態においては、プロセッサ１３０は、キャッシュ１２０がキャッシュ１２０の総ストレージ容量の７０パーセントを下回る（例えば、約１０％から約６９％までの）データ量を格納しているとプロセッサ１３０が判断したとき、所望のスキャン時間を減少させるように構成される。これらの実施形態の各々において、プロセッサ１３０は、キャッシュ１２０が所定量を上回るデータ量を格納しているとプロセッサ１３０が判断したとき、５０パーセント（５０％）だけ、５０パーセントを下回る（例えば、約１０％から約４９％までの）量だけ、又は５０パーセントを上回る（例えば、約５１％から約９０％までの）量だけ、所望のスキャン時間を減少させるように構成される。
【００２２】
種々の実施形態において、プロセッサ１３０は、キャッシュにデステージ競合が発生していず、かつ、大量の振動が発生していない又はキャッシュが所定のデータ量を上回るデータ量を格納していない場合、現在の所望の時間を維持するように構成される。上記の説明により、プロセッサ１３０は、プロセッサ１３０がキャッシュ１２０におけるデステージ競合を検出したときに、僅かな時間だけ所望のスキャン時間を増加させ、キャッシュ１２０に振動が発生している及び／又はキャッシュ１２０が所定のデータ量を上回るデータ量を格納しているとプロセッサ１３０が判断したとき、比較的多くの時間、所望のスキャン時間を減少させるように構成されることが明らかである。種々の実施形態において、プロセッサ１３０は、キャッシュ１２０の実際のスキャン時間を制御する際に、第２のスレッドが所望のスキャン時間を用いることを可能にするように構成される。
【００２３】
第２のスレッドを利用してキャッシュ１２０の実際のスキャン時間を制御するとき、プロセッサ１３０は、プロセッサ１３０がキャッシュ１２０の前回のスキャンを実行するのにかかった時間を判断するように構成される。さらに、プロセッサ１３０は、既に完了したキャッシュ１２０の現在のスキャンの部分を完了するのにかかった時間を判断し、この時間をキャッシュ１２０の前回のスキャンの時間に加算する。例えば、キャッシュ１２０の前回のスキャンが７５０ミリ秒かかり、キャッシュ１２０の現在のスキャンの部分が２６０ミリ秒かかった場合には、前回のスキャンの開始から現在時刻までの合計時間は、１０１０ミリ秒即ち１．０１秒である。
【００２４】
プロセッサ１３０はさらに、キャッシュ１２０の現在のスキャンの残りの部分を完了するのにかかるであろう時間を推定し、この時間を、前回のスキャンの開始から現在時刻までの時間に加算する。１つの実施形態においては、完了する必要があるキャッシュ１２０の現在のスキャンの残りの部分を推定するとき、プロセッサ１３０は、現在のスキャンに対する推定合計時間から、完了した現在のスキャンの部分を減算して、第１の因子を作成する。推定合計時間は、スキャンされる残りのストレージ・トラックの推定数、スキャンされるキャッシュ１２０の推定される残りの百分率、及び類似の推定に基づくことができ、これらの各々は、例えば前回のスキャンにおいてスキャンされたストレージ・トラックの総数に基づいて推定することができる。例えば、プロセッサ１３０が、前回の例における２６０ミリ秒は現在のスキャンを完了するのにかかる合計時間の３分の１であると推定する場合、プロセッサ１３０は、キャッシュ１２０の現在のスキャンの残りの部分を完了するのにかかる時間は５２０ミリ秒（即ち、２６０ミリ秒×２＝５２０ミリ秒）であると推定する。この例において、第１の因子は１５３０ミリ秒、即ち１．５３秒（即ち、７５０ｍｓ＋２６０ｍｓ＋５２０ｍｓ＝１５３０ｍｓ）である。
【００２５】
別の実施形態において、完了する必要があるキャッシュ１２０の現在のスキャンの残りの部分を推定するときに、プロセッサ１３０は、前回のスキャンの開始から現在時刻までの時間（即ち、上記の例においては１０１０ミリ秒）を第１の因子から減算し、この量を第１の因子で除算する（即ち、（１５３０ｍｓ−１０１０ｍｓ）／１５３０ｍｓ）ように構成される。次いで、この計算の結果に、第１のスレッドから得られる現在の所望の時間を乗算する（即ち、所望の時間×［（１５３０ｍｓ−１０１０ｍｓ）／１５３０ｍｓ］）。次いで、この結果を、前回のスキャンの開始から現在時刻までの合計時間に加算して、第１の因子を得る。
【００２６】
プロセッサ１３０は、次いで、第１の因子を現在の所望の時間の２倍（即ち、現在の所望の時間×２）で除算して基準スキャン因子を求めるように構成され、この基準スキャン因子を用いて、次回の実際のスキャン時間が早すぎるかどうかを予測することができる。基準スキャン因子が１より小さい場合、プロセッサ１３０は、次回の実際のスキャン時間が早すぎる可能性が高いと判断し、次回のスキャンについての次回の実際のスキャン時間を増加させる。１つの実施形態においては、次回の実際のスキャン時間を増加させるために、プロセッサ１３０は、キャッシュ１２０におけるストレージ・トラックをスキャン及び／又はデステージしているデステージ・タスクの数を減少させる。キャッシュ１２０におけるデステージ・タスクの数を減少させることは、ストレージ・トラックがスキャン及び／又はデステージされる速度を低減させる効果をもたらし、このことは、キャッシュ１２０の実際のスキャンを実行するのにかかる時間を増加させる。
【００２７】
基準スキャン因子が１より大きい場合、プロセッサ１３０は、次回の実際のスキャン時間が所望のスキャン時間より長くかかる可能性が高いと判断し、次回のスキャンについてのスキャン時間を変更しない。即ち、プロセッサ１３０は、キャッシュ１２０におけるストレージ・トラックをスキャン及び／又はデステージしているデステージ・タスクの数を増減せず、これにより、次回のスキャン時間についての時間は、現在のスキャン時間についての時間と実質的に同じままとなる。
【００２８】
ここで図２を参照すると、図２は、キャッシュ（例えば、キャッシュ１２０）についての所望のスキャン時間を判断するための方法２００の１つの実施形態のフロー図である。少なくとも図示される実施形態においては、方法２００は、キャッシュを監視すること（ブロック２０５）、及び、キャッシュにデステージ競合が発生しているかどうかを判断すること（ブロック２１０）によって開始する。
【００２９】
キャッシュにデステージ競合が発生している場合、方法２００は、所定の時間だけ所望のスキャン時間を増加させること（ブロック２１５）を含む。１つの実施形態において、キャッシュにおいてデステージ競合が検出されるたびに、所定の時間の増加は、１００ミリ秒である。他の実施形態においては、キャッシュにおいてデステージ競合が検出されるたびに、所定の時間の増加は、１００ミリ秒より短い（例えば、約１０ミリ秒から約９９ミリ秒までの）時間である。さらに他の実施形態においては、キャッシュにおいてデステージ競合が検出されるたびに、所定の時間の増加は、１０１ミリ秒より長い（例えば、１０１ミリ秒から約１秒までの）時間である。次いで、方法２００は、増加されたスキャン時間を方法３００（下記を参照されたい）に与え、キャッシュの監視（ブロック２０５）に戻る。
【００３０】
キャッシュにデステージ競合が発生していない場合、方法２００は、キャッシュに振動が発生しているかどうかを判断すること（ブロック２２０）をさらに含む。方法２００は、キャッシュに振動が発生している場合、所定の時間だけ所望のスキャン時間を減少させること（ブロック２２５）を含む。１つの実施形態においては、キャッシュに振動が発生しているとき、所望のスキャン時間は、５０パーセント（５０％）だけ減少される。別の実施形態においては、キャッシュに振動が発生している場合、所望のスキャン時間は、５０パーセントを下回る（例えば、約１０％から約４９％までの）量だけ減少される。さらに別の実施形態においては、キャッシュに振動が発生している場合、所望のスキャン時間は、５０パーセントを上回る（例えば、約５１％から約９０％までの）量だけ減少される。次いで、方法２００は、減少されたスキャン時間を方法３００（下記を参照されたい）に与え、キャッシュの監視（ブロック２０５）に戻る。
【００３１】
方法２００は、キャッシュに振動が発生していない場合、現在の所望のスキャン時間を維持すること（ブロック２３０）を含む。即ち、キャッシュにデステージ競合が発生していず、かつ、大量の振動も発生していない場合、現在の所望のスキャン時間が維持される。次いで、方法２００は、キャッシュの監視（ブロック２０５）に戻る。
【００３２】
ここで図３を参照すると、図３は、キャッシュ（例えば、キャッシュ１２０）の実際のスキャン時間を制御するための方法３００の１つの実施形態のブロック図である。少なくとも図示される実施形態において、方法３００は、プロセッサ（例えば、プロセッサ１３０）がキャッシュの前回のスキャンを実行するのにかかった時間を判断すること（ブロック３０５）によって開始する。
【００３３】
方法３００は、キャッシュの現在のスキャンのうち既に完了した部分を完了するのにかかった時間を判断すること（ブロック３１０）、及び、この時間を、キャッシュの前回のスキャンを実行するのにかかった時間に加算すること（ブロック３１５）によって続行する。方法３００は、キャッシュの現在のスキャンの残りの部分を完了するのにかかるであろう時間を推定すること（ブロック３２０）、及び、この時間を、ブロック３１５において計算された前回のスキャンの開始から現在時刻までの時間に加算すること（ブロック３２５）をさらに含む。１つの実施形態において、完了する必要があるキャッシュの現在のスキャンの残りの部分を推定することは、現在のスキャンについての推定合計時間から現在のスキャンの完了した部分を減算して、第１の因子を作成することを含む。推定合計時間は、キャッシュにおいてスキャンされる残りのストレージ・トラックの推定数、スキャンされるキャッシュの推定される残りの百分率、及び類似の推定に基づくことができ、これらの各々は、例えば前回のスキャンにおいてスキャンされたストレージ・トラックの総数に基づいて推定することができる。
【００３４】
別の実施形態において、完了する必要があるキャッシュの現在のスキャンの残りの部分を推定することは、前回のスキャンの開始から現在時刻までの時間を、第１の因子から減算し、この量を第１の因子で除算することを含む。次いで、この計算の結果に、上述の方法２００から得られる現在の所望の時間を乗算する。次いで、この結果を前回のスキャンの開始から現在時刻までの合計時間に加算して、第１の因子を得る。
【００３５】
方法３００は、第１の因子を現在の所望の時間の２倍（即ち、現在の所望の時間×２）で除算して、基準スキャン因子を求めること（ブロック３３０）をさらに含む。方法３００は、基準スキャン因子が１より小さい場合、次回の実際のスキャン時間が早すぎる可能性が高いと判断すること（ブロック３４０）、及び、次回のスキャンについての次回の実際のスキャン時間を増加させること（ブロック３４５）を含む。１つの実施形態において、キャッシュにおけるデステージ・タスクの数を減少させることは、ストレージ・トラックがスキャン及び／又はデステージされる速度を低減させる効果をもたらし、このことは、キャッシュの実際のスキャンを実行するのにかかる時間の量を増加させるので、次回の実際のスキャン時間を増加させることは、キャッシュにおけるストレージ・トラックをスキャン及び／又はデステージするデステージ・タスクの数を減少させることを含む。次いで、方法３００は、プロセッサ（例えば、プロセッサ１３０）がキャッシュの前回のスキャンを実行するのにかかった時間を判断すること（ブロック３０５）に戻る。
【００３６】
方法３００は、基準スキャン因子が１より大きいか又は１に等しい場合、次回の実際のスキャン時間が所望のスキャン時間より長くかかる可能性が高いと判断すること（ブロック３５０）、及び、次回のスキャンについてのスキャン時間を変更しないこと又は変更を避けること（ブロック３５５）を含む。即ち、キャッシュにおけるストレージ・トラックをスキャン及び／又はデステージするデステージ・タスクの数は増減せず、その結果、次回のスキャン時間についての時間が、現在のスキャン時間についての時間と実質的に同じままとなる。次いで、方法３００は、プロセッサ（例えば、プロセッサ１３０）がキャッシュの前回のスキャンを実行するのにかかった時間を判断すること（ブロック３０５）に戻る。
【００３７】
本発明の上述の説明において、少なくとも１つの例示的な実施形態が提示されたが、膨大な数の変形が存在することを認識すべきである。
【００３８】
当業者により認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００３９】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又は物理的コンピュータ可読ストレージ媒体とすることができる。物理的コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、結晶、高分子、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又はこれらのいずれかの適切な組み合わせとすることができるが、これらに限定されるものではない。物理的コンピュータ可読ストレージ媒体の例として、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、フラッシュ・メモリ、光ファイバ、ＣＤ−ＲＯＭ、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられるが、これらに限定されるものではない。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらに関連して用いるためのプログラムを収容又は格納することが可能ないずれかの有形媒体とすることができる。
【００４０】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、無線周波（ＲＦ）等、又はこれらのいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。本発明の態様についての動作を実行するためのコンピュータ・コードは、「Ｃ」プログラミング言語又は他の類似のプログラミング言語などのいずれかの静的言語で書くことができる。コンピュータ・コードは、全体をユーザのコンピュータ上で実行することができ、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行することができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）若しくはコンバージド・ネットワークを含むがこれらに限定されるものではない、いずれかのタイプのネットワーク若しくは通信システムを通じてユーザのコンピュータに接続することができ、又は（例えば、インターネット・サービス・プロバイダを用い、インターネットを通じて）外部コンピュータに接続をすることができる。
【００４１】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようになる。
【００４２】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するためのプロセスを提供するようにすることもできる。
【００４３】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【符号の説明】
【００４４】
１００：システム
１１０：メモリ
１２０：キャッシュ
１３０：プロセッサ
１４０：バス
１３１０：デステージ・スキャン時間管理モジュール
【図１】
0005875056.tif 000002
【図２】
0005875056.tif 000003
【図３】
0005875056.tif 000004