JP2015141656A - 試験方法、プログラム及びシステム - Google Patents

試験方法、プログラム及びシステム Download PDF

Info

Publication number
JP2015141656A
JP2015141656A JP2014015260A JP2014015260A JP2015141656A JP 2015141656 A JP2015141656 A JP 2015141656A JP 2014015260 A JP2014015260 A JP 2014015260A JP 2014015260 A JP2014015260 A JP 2014015260A JP 2015141656 A JP2015141656 A JP 2015141656A
Authority
JP
Japan
Prior art keywords
read
value
write
writing
exclusive
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
JP2014015260A
Other languages
English (en)
Inventor
鈴木 健太郎
Kentaro Suzuki
健太郎 鈴木
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 JP2014015260A priority Critical patent/JP2015141656A/ja
Publication of JP2015141656A publication Critical patent/JP2015141656A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】排他読み出し命令の排他性を検証する。【解決手段】本試験方法は、記憶装置の所定の領域に対して第1の値を書き込む処理と、所定の領域に対して第1の値とは異なる第2の値を書き込む処理とを実行し、第2の値を書き込む処理の開始から所定時間後に、所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、排他無しの読み出し命令の後に、排他読み出し命令を、所定の領域又は所定の領域内の複数箇所に対して実行し、排他無しの読み出し命令の読み出し結果に基づき、所定の領域に対して第2の値の書き込みが完了した状態であるか否かを判断し、所定の領域に対して第2の値の書き込みが完了していない状態であると判断された場合、排他読み出し命令の読み出し結果が、同じ値であるか判断する処理を含む。【選択図】図1

Description

本発明は、記憶装置に対する命令の試験技術に関する。
複数のクラスタ(例えば計算機)で共有する記憶装置へ排他的アクセスを行う場合には、従来は、ロック制御命令を実行し、各データ転送の完了を待ってから次の転送命令を行うため、タイムラグが大きいという問題があった。
ある文献では、複数のクラスタで外部記憶装置を共有し、各クラスタと外部記憶装置との間で書込み(Write)及び読み出し(Read)のデータ転送を行うシステムにおいて、排他読み出し転送命令(単に、排他読み出し命令又は排他有り読み出し命令とも呼ぶ。)を導入することが提案されている。
外部記憶装置から、この排他読み出し転送命令によってデータを読み出している間、該当領域へのデータ書き込みは抑止される。また、外部記憶装置からこの排他読み出し転送命令に応じてデータを読み出す際に、該当領域がデータ書き込み中であれば、該当領域からのデータ読み出しは抑止される。そして、抑止された命令は、他のデータ読み出し又は書き込み処理が完了後に実行される。
なお、一般的な読み出し転送命令(単に読み出し命令とも呼ぶ。また、排他無し読み出し命令とも呼ぶ。)であれば、外部記憶装置から、この排他無し読み出し転送命令によってデータを読み出している間、該当領域へのデータ書き込みは抑止されず、また、外部記憶装置からこの排他無し読み出し転送命令に応じてデータを読み出す際に、該当領域がデータ書き込み中であっても、該当領域からのデータ読み出しは抑止されない。
しかしながら、排他読み出し転送命令が、上で述べたように排他的に読み出しを行っているか否かを検証する技術は存在していなかった。
特開2010−86010号公報
従って、本発明の目的は、一側面によれば、排他読み出し命令の排他性を検証するための試験技術を提供することである。
本発明に係る試験方法は、(A)記憶装置の所定の領域に対して第1の値を書き込む処理と、所定の領域に対して第1の値とは異なる第2の値を書き込む処理とを実行し、(B)第2の値を書き込む処理の開始から所定時間後に、所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、(C)排他無しの読み出し命令の後に、排他読み出し命令を、所定の領域又は所定の領域内の複数箇所に対して実行し、(D)排他無しの読み出し命令の読み出し結果に基づき、所定の領域に対して第2の値の書き込みが完了した状態であるか否かを判断し、(E)所定の領域に対して第2の値の書き込みが完了していない状態であると判断された場合、排他読み出し命令の読み出し結果が、同じ値であるか判断する処理を含む。
一側面によれば、排他読み出し命令の排他性を検証できるようになる。
図1は、第1の実施の形態に係るシステムの概要を示す図である。 図2は、排他無しReadデータ格納領域に格納されるデータのフォーマット例を示す図である。 図3は、排他Readデータ格納領域に格納されるデータのフォーマット例を示す図である。 図4は、Writeデータ格納領域に格納されるデータのフォーマット例を示す図である。 図5は、第1の実施の形態の概要を説明するための図である。 図6は、第1の実施の形態の概要を説明するための図である。 図7は、第1の実施の形態の概要を説明するための図である。 図8は、Write/Read競合の判定のための読み出しパターンを表すテーブルを表す図である。 図9は、Writeクラスタである第2のクラスタによって実行される処理の処理フローを示す図である。 図10は、Readクラスタである第1のクラスタによって実行される処理の処理フローを示す図である。 図11は、照合データテーブルのフォーマット例を示す図である。 図12は、Readクラスタである第1のクラスタによって実行される処理の処理フローを示す図である。 図13は、比較例を説明するための図である。 図14は、比較例を説明するための図である。 図15は、比較例を説明するための図である。 図16は、第1の実施の形態に係るタイムチャートを示す図である。 図17は、第2の実施の形態に係るWriteデータ格納領域におけるデータフォーマット例を示す図である。 図18は、第2の実施の形態に係る排他Readデータ領域におけるデータフォーマット例を示す図である。 図19は、第2の実施の形態の概要を説明するための図である。 図20は、第2の実施の形態におけるWriteクラスタである第2のクラスタによって実行される処理の処理フローを示す図である。 図21は、第2の実施の形態に係るReadクラスタである第1のクラスタによって実行される処理の処理フローを示す図である。 図22は、第2の実施の形態に係るReadクラスタである第1のクラスタによって実行される処理の処理フローを示す図である。 図23は、コンピュータの機能ブロック図である。
[実施の形態1]
図1に本実施の形態に係るシステムの一例を示す。本実施の形態では、計算機である第1のクラスタCL1と、計算機である第2のクラスタCL2とが、ネットワーク100等によって外部記憶装置200に接続されている。クラスタの数は2に限定されるものではなく、より多くのクラスタを含む場合もある。
第1のクラスタCL1は、Readの処理を行うクラスタであり、Readクラスタ制御部101と、排他無しRead命令実行部102と、排他Read命令実行部103と、Readデータ照合部104と、命令時間測定部105と、待ち時間経過管理部106と、待ち時間変更部107と、データ記憶部108とを有する。データ記憶部108は、照合データテーブル1081と、待ち時間変更テーブル1082と、実行時間格納領域1083と、待ち時間格納領域1084と、照合結果格納領域1085と、排他無しReadデータ格納領域1086と、排他Readデータ格納領域1087とを含む。
第2のクラスタCL2は、Writeの処理を行うクラスタであり、Writeクラスタ制御部121と、Write命令実行部122と、データ記憶部123とを有する。データ記憶部123は、Writeデータ格納領域1231を含む。
外部記憶装置200は、Write/Readデータ領域201と、書き込みフラグ領域202とを含む。
Readクラスタ制御部101は、第1のクラスタCL1による処理を制御する。排他無しRead命令実行部102は、排他無しRead命令、すなわち一般的なRead命令を、排他無しReadデータ格納領域1086に格納されているデータに従って、Write/Readデータ領域201に対して実行する。
排他Read命令実行部103は、排他Read命令を、排他Readデータ格納領域1087に格納されているデータに従って、Write/Readデータ領域201に対して実行する。Readデータ照合部104は、照合データテーブル1081、排他無しReadデータ格納領域1086及び排他Readデータ格納領域1087に格納されているデータを用いて照合処理を行って、照合結果を照合結果格納領域1085に格納する。
命令時間測定部105は、排他Read命令実行部103によって実行された排他Read命令の処理時間を計測し、排他Readデータ格納領域1087に格納する。
待ち時間経過管理部106は、待ち時間格納領域1084に格納されている待ち時間の経過を計測する。待ち時間変更部107は、所定の事象に応じて待ち時間格納領域1084に格納されている待ち時間を変更する処理を行う。
Writeクラスタ制御部121は、第2のクラスタCL2による処理を制御する。Write命令実行部122は、Writeデータ格納領域1231に格納されているデータに従って、Write命令をWrite/Readデータ領域201に対して実行する。
なお、書き込みフラグ領域202は、Readクラスタ制御部101及びWriteクラスタ制御部121によって変更及びチェックされる。
排他無しReadデータ格納領域1086は、例えば図2に示すようなデータフォーマットでデータを格納する。本実施の形態では、3回排他無しRead命令を実行するが、1回目、2回目及び3回目の各々について、Write/Readデータ領域201における排他無しRead命令の開始アドレス、転送データ長(例えば数バイト)、及び読み込みデータとを格納するようになっている。開始アドレスは、1回目は、Write/Readデータ領域201の先頭アドレス、2回目は、予め定められた中央アドレス、3回目は、末尾アドレスとなっている。また、転送データ長は、3回とも同じ長さである。読み込みデータについては、処理を実行した際に書き込まれる。開始アドレスは、おおよそのアドレスでよい。特に、中央アドレスは、中央でなくてもよく、開始アドレスと末尾アドレスの間にあればよい。
排他Readデータ格納領域1087は、例えば図3に示すようなデータフォーマットでデータを格納する。本実施の形態では、3回排他Read命令を実行するが、1回目、2回目及び3回目の各々について、Write/Readデータ領域201における排他Read命令の開始アドレス、転送データ長(例えば数バイト)、読み込みデータ、及び排他Read命令の実行時間を格納するようになっている。開始アドレスは、排他無しRead命令の場合と同様に、1回目は、Write/Readデータ領域201の先頭アドレス、2回目は、予め定められた中央アドレス、3回目は、末尾アドレスとなっている。また、転送データ長は、排他無しRead命令の場合と同様に、3回とも同じ長さである。読み込みデータについては、処理を実行した際に書き込まれる。また、実行時間についても、命令時間計測部105によって命令実行毎に書き込まれる。
また、Writeデータ格納領域1231は、例えば図4に示すようなデータフォーマットでデータを格納する。すなわち、本実施の形態では、少なくとも2パターンの書き込みを行うので、パターンA及びパターンBの各々について、Write/Readデータ領域201における先頭アドレスと、転送データ長(例えば数十KB程度)と、同一値の転送データ(例えば「1111111・・・・」又は「22222222・・・・」)とを含む。本実施の形態では、先頭アドレス及び転送データ長については、パターンA及びパターンBで同じであるが、転送データの値については異なる値とする。これによって、いずれのパターンを書き込み中であるか又は書き込み完了したかを区別できるようになる。なお、より多くのパターンを書き込む場合には、そのパターンの分を追加する。
なお、Write/Readデータ領域201に対してWrite命令を単独で実行した場合の実行時間WT1と、Write/Readデータ領域201に対して排他Read命令の1回分を単独で実行した場合の実行時間RT1とを予め測定しておき、実行時間格納領域1083に格納しておく。
次に、図5乃至図8を用いて、本実施の形態の概要を説明する。本実施の形態では、第2のクラスタCL2によって、パターンAで「1111111・・・・」を書き込んだ後、パターンBで「22222222・・・・」を書き込むという処理を繰り返す。
そして、パターンBの書き込み開始から所定時間後に、第1のクラスタCL1によって、排他無しRead命令を実行する。そうすると、図5に模式的に示すように、Write/Readデータ領域201の途中まで「22222222・・・・」の書き込みを行っている状態で、排他無しRead命令を実行するので、先頭アドレスの読み出し結果は「2」であるが、まだ「2」を書き込む前なので、中央アドレスの読み出し結果は「1」であり、末尾アドレスの読み出し結果も「1」である。
このような状態であれば、排他無しRead命令の直後に排他Read命令を実行して、適切に排他が行われれば、「22222222・・・・」の書き込み完了まで、排他Read命令の実行は抑止される。その後、図6に示すように、Write/Readデータ領域201には、「22222222・・・・」が書き込み完了となるので、先頭アドレスの読み出し結果は「2」となり、中央アドレスの読み出し結果は「2」となり、末尾アドレスの読み出し結果も「2」となる。このような結果が得られれば、排他Read命令の抑止が行われたことが検証できる。
一方、パターンBを書き込み終わる直前ぐらいに、排他無しRead命令を実行すると、3回目の排他無しRead命令を実行することには、図7に示すように、Write/Readデータ領域201には、「22222222・・・・」が書き込み完了となるので、先頭アドレスの読み出し結果は「2」であり、中央アドレスの読み出し結果は「2」となり、末尾アドレスの読み出し結果も「2」となる。この直後に、排他Read命令が実行されても、排他Read命令の抑止が発生せずに、書き込み命令に対する抑止のみが効いて図6に示したような読み出しが行われる可能性がある。すなわち、所定時間の設定が不適切であると、排他Read命令の検証が完全には行われないことになる。
本実施の形態では、図5に示すような、パターンA書き込み完了後パターンBの書き込み途中に排他無しRead命令が出力された場合、及びパターンB書き込み完了後パターンAの書き込み途中に排他無しRead命令が出力された場合を、Write/Read競合(以下、簡易的に競合)と呼び、排他無しRead命令の読み出し結果からWrite/Read競合の発生を確認できた場合にのみ、排他Read命令の読み出し結果に基づき検証を行うものとする。
具体的には、図8に示すような読み出しパターンによって、Write/Read競合の有無が判定できる。すなわち、先頭アドレス、中央アドレス及び末尾アドレスの読み出し結果が同一値であれば、競合はなく、それ以外では競合が発生している。先頭アドレス及び中央アドレスの読み出し結果が同一値で、末尾アドレスの読み出し結果が異なる値であれば、Write/Readデータ領域201の後半で競合が発生するので、排他Read命令の出力が遅延すると、1つのパターンの書き込みが完了してしまう可能性があり、正しく検証できない状況になりかねない。一方、中央アドレス及び末尾アドレスの読み出し結果が同一値であって、先頭アドレスの読み出し結果と異なる場合には、Write/Readデータ領域201の前半で競合が発生するので、多少の遅延があっても競合のままで排他Read命令が行われる。従って、可能な限り、Write/Readデータ領域201の前半で競合が発生している状態が好ましい。従って、以下に述べる処理フローでは、競合の位置を決定する所定時間(すなわち待ち時間)の調整をも行う。
次に、図9乃至図15を用いて排他Read命令の検証を行う際の処理内容を説明する。
まず、第2のクラスタCL2による処理を、図9を用いて説明する。
Writeクラスタ制御部121は、Write命令実行部122に対して、Writeデータ格納領域1231のデータに従って、初期書き込み処理を実行させる(図9:ステップS1)。すなわち、Writeデータ格納領域1231に規定されているパターンAを、外部記憶装置200のWrite/Readデータ領域201に転送させる。これによって、Write/Readデータ領域201の初期状態を「1111111・・・・」が書き込まれている状態にする。
また、Writeクラスタ制御部121は、Writeパターンを切り替える(ステップS2)。パターンAを書き込んだ場合には、パターンBを次に書き込むように切り替えを行う。
そして、Writeクラスタ制御部121は、外部記憶装置200の書き込みフラグ領域202における書き込みフラグをオンに設定する(ステップS3)。この書き込みフラグによって排他無しRead命令の待ち時間の計測が開始される。
さらに、Writeクラスタ制御部121は、Write命令実行部122に、Write命令を実行させる(ステップS5)。すなわち、Writeデータ格納領域1231に規定されている次のパターンを、外部記憶装置200のWrite/Readデータ領域201に転送させる。これによって、Write/Readデータ領域201に、例えば「22222222・・・・」を書き込み始める。
その後、Writeクラスタ制御部121は、書き込みフラグ領域202における書き込みフラグがオフにセットされるのを待機する(ステップS7)。書き込みフラグは、Readクラスタである第1のクラスタCL1によって、一連の処理が終了するとオフに設定されるので、このタイミングまで待機する。
書き込みフラグのオフを検出すると、Writeクラスタ制御部121は、Writeパターンを切り替える(ステップS9)。
そして、Writeクラスタ制御部121は、試験処理を終了するのか否かについて判断する(ステップS11)。例えば、書き込み回数を計数しておき、所定の回数実行したか否かを判断する。
試験処理終了でない場合には、処理はステップS3に戻る。一方、試験処理終了であれば、処理を終了する。
次に、Readクラスタである第1のクラスタCL1の処理内容について、図10乃至図16を用いて説明する。
まず、Readクラスタ制御部101は、実行時間格納領域1083に格納されている排他Read命令の実行時間RT1及びWrite命令の実行時間WT1を用いて、照合データテーブル1081を生成する(図10:ステップS21)。
具体的には、図11に示すような照合データテーブルを生成する。照合データテーブルは、競合状態及びデータ読み出し状態に応じた排他Read命令の実行時間tの値域を格納するものである。
具体的には、競合状態(すなわち競合あり/競合無し)と、排他Readの読み出しデータとの組み合わせ毎に、排他Read命令の実行時間tの許容される値域とが登録されるようになっている。本実施の形態では、競合ありの場合には、1回目の排他Read命令の実行時間tは、下限値RT1×0.9及び上限値(RT1+WT1)×1.1で設定される。これは、競合が発生している場合には、Write命令の実行が終了するまで1回目の排他Read命令の実行は抑止されるので、マージンを考えると上で述べたような上限値が設定される。但し、何らかの理由でRT1が長く測定されている場合もあるので下限値は短めに設定されている。一方、競合有りの場合の2回目及び3回目の排他Read命令の実行時間tと、競合無しの場合の排他Read命令の実行時間tとは、その実行の抑止はないので、マージンを考えてRT1のプラスマイナス10%以内と設定されている。このような上限値下限値については、実験などによって異なる値を設定すべき場合もある。
なお、後に述べる照合処理では、排他Readの読み出しデータが、照合データテーブル1081に示す組み合わせ以外の場合にも、異常状態と判断される。
次に、Readクラスタ制御部101は、例えばWT1に基づき、待ち時間の初期値(WT1/2)を設定する(ステップS23)。Readクラスタ制御部101は、書き込みフラグ領域202における書き込みフラグがオンになるまで待機する(ステップS25)。そして、書き込みフラグのオンを検出すると、Readクラスタ制御部101は、待ち時間経過管理部106に、待ち時間格納領域1084に格納されている待ち時間だけ計測させる(ステップS27)。
待ち時間経過管理部106による所定の待ち時間の計測が完了すると、Readクラスタ制御部101は、排他無しRead命令実行部102に対して、排他無しReadデータ格納領域1086に格納されているデータに従って排他無しRead命令を実行させる(ステップS29)。すなわち、先頭アドレス、中央アドレス及び末尾アドレスの3カ所について、排他無しRead命令を実行し、読み出しデータを、排他無しReadデータ格納領域1086へ書き込む。
さらに、Readクラスタ制御部101は、排他Read命令実行部103に対して、排他Readデータ格納領域1087に格納されているデータに従って排他Read命令を実行させる(ステップS31)。すなわち、先頭アドレス、中央アドレス及び末尾アドレスの3カ所について、排他Read命令を実行し、読み出しデータを、排他Readデータ格納領域1087へ書き込む。
そして、Readデータ照合部104は、排他無しReadデータ格納領域1086に書き込まれている読み出しデータから、Write命令と排他無しRead命令の競合が発生しているか否かを判断する(ステップS33)。図8に示す読み出しパターンのいずれに該当して、競合が発生しているのか否かを判断する。競合有り無しだけではなく、待ち時間の調整のために、前半に競合が発生しているのか、後半に競合が発生しているのかをも特定しておく。
競合がある場合には、処理は端子Bを介して図12のステップS37に移行する。一方、競合がない場合には、処理は端子Aを介して図12のステップS35に移行する。
競合がない場合には、待ち時間が長すぎることが想定される。従って、Readデータ照合部104は、待ち時間変更部107に対して処理を指示し、待ち時間変更部107は、例えば、現在の待ち時間−(現在の待ち時間×α)(αは例えば0.5)によって待ち時間を変更し、待ち時間格納領域1084に格納する(ステップS35)。そして処理はステップS41に移行する。
一方、競合があった場合には、Readデータ照合部104は、競合がWrite/Readデータ領域201の前半で発生していたか否かを判断する(ステップS37)。ステップS33で説明したように、図8に示す読み出しパターンのいずれかに該当するのかが分かれば、前半か後半であるかを判断できる。
前半であれば、処理はステップS41に移行する。一方、後半であれば、Readデータ照合部104は、待ち時間変更部107に対して処理を指示し、待ち時間変更部107は、例えば、現在の待ち時間−(現在の待ち時間×α)(αは例えば0.5)によって待ち時間を変更し、待ち時間格納領域1084に格納する(ステップS39)。これによって、より安定的に競合を発生させるように、競合位置を前倒しすることができるようになる。そして処理はステップS41に移行する。
そして、Readデータ照合部104は、排他Readデータ格納領域1087に格納されており且つ排他Read命令で得られたデータ(読み出しデータ及び実行時間)に対して、照合データテーブル1081を用いて照合処理を実行し、照合結果格納領域1085に格納する(ステップS41)。すなわち、照合データテーブル1081において、競合有り、競合無しのいずれかの行に設定されている条件に、今回の読み出しデータ及び実行時間が合致しているか否かを判断する。すなわち、読み出しデータが、「1」又は「2」で揃っていれば正常であり、揃っていなければ異常である。さらに、正常であっても、各回の実行時間が、照合データテーブル1081において規定されている上限値と下限値の範囲内に収まっているか否かを判断する。収まっていれば正常であり、収まっていなければ異常である。
照合処理の結果が正常であれば(ステップS43:Yesルート)、Readデータ照合部104は、照合結果格納領域1085に「正常」を表すデータを格納する(ステップS46)。そして処理はステップS47に移行する。一方、照合処理の結果が異常であれば(ステップS43:Noルート)、Readデータ照合部104は、照合結果格納領域1085に「異常」を表すデータを格納する(ステップS45)。そして処理はステップS47に移行する。
その後、Readクラスタ制御部101は、試験処理を終了するのか否かを判断する(ステップS47)。例えば、照合処理の回数を計数しておき、所定回数に達したか判断する。試験処理を終了しない場合には、Readクラスタ制御部101は、書き込みフラグ領域202の書き込みフラグをオフに設定する(ステップS49)。これによって、第2のクラスタCL2に対して書き込みパターンの切り替えを行わせて処理を再開させる。そして処理は端子Cを介して図9のステップS25に移行する。
一方、試験処理終了であれば、Readクラスタ制御部101は、照合結果格納領域1085に格納されている照合結果を読み出し、異常なしであれば(ステップS51:Noルート)、試験実行者などに正常終了を通知する(ステップS53)。そして処理を終了する。一方、異常ありであれば(ステップS51:Yesルート)、試験実行者などに異常終了を通知する(ステップS55)。試験実行者への通知は、例えばメールを送信するようにしても良いし、表示装置への表示出力などであっても良い。さらに、何回か照合処理を行っている場合には、いずれの照合処理(何回目かなど)において異常と判定されたのか、先頭アドレス、中央アドレス、末尾アドレスのいずれについて異常と判定されたのか、異常の原因は読み出しデータなのか実行時間なのかといったデータを、通知するようにしても良い。
このような処理を実行することによって、Write命令の実行中に、排他Read命令が実行されたことを確認の上、読み出し結果を検証することができるようになる。
なお、排他無しRead命令を実行せずに排他Read命令の検証を行うことも考えられる。例えば図13に示すように、第2のクラスタCL2によって「1111111・・・・」を書き込むWrite命令を出力し、「22222222・・・・」を書き込むWrite命令を出力し、「1111111・・・・」を書き込むWrite命令を出力するといった処理を繰り返す。
そして、図14に示すように、排他Read命令を、「1111111・・・・」を書き込んでいる途中の適切なタイミングで出力できれば、排他Read命令の実行が、Write命令の実行完了まで抑止されて、適切な読み出し結果「1111111・・・・」が得られるようになる。
しかしながら、適切なタイミングであったか否かを検証することはできない。タイミングが遅れてしまえば、図15に示すように、「1111111・・・・」の書き込み完了直後に、排他Read命令が実行されたとすると、排他Read命令の抑止は行われないが、読み出し結果は、図14と同じ「1111111・・・・」となる。排他Read命令による読み出し結果「1111111・・・・」が得られれば、Write命令の抑止は行われたことが分かるが、排他Read命令の抑止は確認できない。
一方、本実施の形態では、排他Read命令の抑止があるか否かを、Write命令と排他Read命令に先行する排他無しRead命令との競合を確認することで、確認できる。
より具体的には、図16に模式的に示すようになる。すなわち、Writeクラスタである第2のクラスタCL2によって、書き込みフラグがオンに設定された後に、Write命令が実行される。書き込みフラグがオンに設定されると、Readクラスタである第1のクラスタCL1により、設定された待ち時間だけ待機した後、排他無しRead命令が、先頭アドレス(1)、中央アドレス(2)及び末尾アドレス(3)について実行される。なお、先頭アドレス(1)の読み出しの時には、Write/Readデータ領域201には、「2」が中央あたりまで書き込まれているので、「2」が読み出される。また、中央アドレス(2)の読み出しの時には、Write/Readデータ領域201には、「2」が中央過ぎあたりまで書き込まれているが末尾までは書き込まれておらず、「2」が読み出される。さらに、末尾アドレス(3)の読み出しの時には、Write/Readデータ領域201には、「2」が末尾に近いところまで書き込まれているが末尾までは書き込まれておらず、「1」が読み出される。これによって、競合が発生していることが、後の照合処理において判明する。
この状態で、排他Read命令を実行すると、適切な制御が行われていれば、排他Read命令の実行は、Write命令の終了まで抑止される。従って、排他Read命令によって、先頭アドレス(11)の読み出しは、Write/Readデータ領域201に「2」が書き込み完了となった後に行われる。さらに、中央アドレス(12)の読み出し、末尾アドレス(13)の読み出しが行われる。このように、先頭アドレス(11)の読み出しの実行時間は、中央アドレス(12)及び末尾アドレス(13)の読み出し実行時間より長くなる。
その後、データ照合において、Write命令の読み出し結果から競合が発生していたか否かを判定すると共に、排他Read命令の読み出し結果の照合処理が行われて、正常に試験が行われたか異常が発生したかを判定する。その後試験を再度実行するのであれば、第1クラスタCL1が、書き込みフラグをオフに設定する。この書き込みフラグのオフを検出して、第2クラスタCL2は、書き込みフラグをオンに設定すると共に、書き込みパターンを切り替えて、Write命令を実行するようになる。
これに対して、待ち時間が長すぎる場合には、排他無しRead命令の読み出し結果によって競合無しを認識できるので、排他Read命令の読み出し結果を評価せずに、待ち時間を短縮することで対処できるようになる。
なお、書き込みパターンについては、2パターンの繰り返しではなく、3パターン以上の書き込みパターンを切り替えて用いるようにしても良い。また、競合発生を前半、後半ということを認識するために3カ所Readを行っているが、待ち時間の調整を試行錯誤的に行うのであれば、先頭アドレスと末尾アドレスを読み出すようにしても良い。また、排他無しRead命令について先頭アドレスを読み出すのは、主に現在どのような値をWrite命令で書き込んでいるのかを特定するためであるので、他の手法にてWrite命令で書き込んでいる値を特定できれば、先頭アドレスの読み出しも省略できる。なお、読み出す箇所を増加させるようにして、待ち時間の調整を精密に行うようにしても良い。
排他Read命令については、一部を読み出すようにしているが、Write/Readデータ領域201全体を読み出すようにしても良い。また、読み出す箇所を増加させても良い。
なお、上で述べた処理フローに従えば、中央アドレスを先頭アドレスに近づけることにより、Write命令の発行からRead命令の発行を早めることができ、Write命令の開始アドレス付近で排他Read命令を競合させるような試験も可能となる。
一方、中央アドレスを末尾アドレスに近づけることによりWrite命令の発行からRead命令の発行を遅らせることができ、Write命令の終了アドレス付近で排他Read命令を競合させるような試験も可能である。
また、上で述べた処理フローでは、排他無しRead命令及び排他Read命令を実行する毎に、照合を行っていた。しかし、複数回排他無しRead命令及び排他Read命令の組み合わせを実行する場合には、待ち時間の調整のみを各回で行って、読み出し結果を別に保持しておくことで照合を最後にまとめて行うようにしても良い。
[実施の形態2]
本実施の形態では、Write命令実行中の排他Read命令の実行抑止だけではなく、排他Read命令実行中のWrite命令の実行抑止を行う場合について説明する。但し、Write命令実行中の排他Read命令の実行抑止については、第1の実施の形態より簡易に判定するものとする。
図1に示した第1の実施の形態の構成を、第2の実施の形態においてもほぼそのまま採用する。但し、照合データテーブル1081及び命令時間測定部105については用いない。また、本実施の形態に係るWriteデータ格納領域1231には、図17に示すようなデータフォーマットでデータが格納される。具体的には、パターンCが追加されており、パターンCは、Write/Readデータ領域201の末尾アドレスに対して、数バイト程度の例えばパターンAと同一の値の転送データを書き込むための書き込みパターンである。なお、パターンCは、Write/Readデータ領域201の末尾アドレスに対して、数バイト程度の例えばパターンAと同一の値の転送データを書き込み、次に中央アドレスに、同様の転送データを書き込み、さらに先頭アドレスに、同様の転送データを書き込むような書き込みパターンである場合もある。書き込む値はパターンAと同じでなくても良い。具体的には、パターンBと異なっていればよい。
また、排他Readデータ格納領域1087には、例えば図18に示すようなデータフォーマットでデータが格納される。図18の例では、Write/Readデータ領域201の先頭アドレスと、転送データ長(Write/Readデータ領域の全域)と、排他Read命令での読み込みデータとが含まれるようになっている。排他Read命令での読み出しデータは、実行後に書き込まれる。
ここで、図19を用いて第2の実施の形態の概要を説明する。排他無しRead命令を3回実行する時点までは、第1の実施の形態と同様である。しかし、本実施の形態では、Write/Readデータ領域201全体について排他Read命令を実行する。このような場合であっても、正常であれば、排他Read命令の実行は、Write命令実行が完了するまで抑止される。
さらに、本実施の形態では、書き込みパターンをパターンCに切り替え、末尾アドレス(21)に対して「1」を書き込むためのWrite命令を実行する。ここでも、正常であれば、排他Read命令の実行完了まで、このWrite命令の実行は抑止される。末尾アドレス(21)にWrite命令を実行するのは、排他Read命令中にWrite命令の実行が抑止されなかった場合、末尾アドレスであれば、排他Read命令完了時に、異なる値「1」が読み出されるため、後の照合処理で検出できるようになる。なお、このようにWrite/Readデータ領域201の一部のみにWrite命令が実行されるので、データ照合が終了した後には、初期の書き込み処理を再度を行って、Write/Readデータ領域201に「1111111・・・・」が書き込まれるようにする。照合処理では、排他Read命令実行によって読み出された値が全て同じ値となっているか否かを判断する。
以上のような処理を行うため、図20乃至図22を用いて具体的な処理内容を説明する。
まず、図20を用いてWriteクラスタである第2のクラスタCL2によって実行される処理を説明する。
Writeクラスタ制御部121は、Write命令実行部122に対して、Writeデータ格納領域1231のデータに従って、初期書き込み処理を実行させる(図20:ステップS101)。すなわち、Writeデータ格納領域1231に規定されているパターンAを、外部記憶装置200のWrite/Readデータ領域201に転送させる。これによって、Write/Readデータ領域201の初期状態を「1111111・・・・」が書き込まれている状態にする。
また、Writeクラスタ制御部121は、Writeパターンを切り替える(ステップS103)。パターンAを書き込んだ場合には、パターンBを次に書き込むように切り替えを行う。
そして、Writeクラスタ制御部121は、外部記憶装置200の書き込みフラグ領域202における書き込みフラグをオンに設定する(ステップS105)。この書き込みフラグによって排他無しRead命令の待ち時間の計測が開始される。
さらに、Writeクラスタ制御部121は、Write命令実行部122に、Write命令を実行させる(ステップS107)。すなわち、Writeデータ格納領域1231に規定されている次のパターンを、外部記憶装置200のWrite/Readデータ領域201に転送させる。これによって、Write/Readデータ領域201に、例えば「22222222・・・・」を書き込み始める。
その後、Writeクラスタ制御部121は、Writeパターンを切り替える(ステップS109)。パターンBを書き込んだ場合には、パターンCを次に書き込むように切り替えを行う。本実施の形態では、末尾アドレスにパターンAと同じ値「1」を書き込むように設定する。
そして、Writeクラスタ制御部121は、Write命令実行部122に、切り替え後の書き込みパターンCでWrite命令を実行させる(ステップS107)。上で述べたように、正常であれば、排他Read命令によって、このWrite命令の実行は抑止される。
その後、Writeクラスタ制御部121は、書き込みフラグ領域202における書き込みフラグがオフにセットされるのを待機する(ステップS113)。書き込みフラグは、Readクラスタである第1のクラスタCL1によって、一連の処理が終了するとオフに設定されるので、このタイミングまで待機する。
書き込みフラグのオフを検出すると、Writeクラスタ制御部121は、試験処理を終了するのか否かについて判断する(ステップS115)。例えば、書き込み回数を計数しておき、所定の回数実行したか否かを判断する。試験処理終了であれば、処理を終了する。
試験処理終了でない場合には、Writeクラスタ制御部121は、Writeパターンを切り替える(ステップS117)。例えばパターンAに切り替える。そして、処理はステップS101に戻る。
次に、Readクラスタである第1のクラスタCL1の処理内容について、図21及び図22を用いて説明する。
まず、Readクラスタ制御部101は、書き込みフラグ領域202における書き込みフラグがオンになるまで待機する(図21:ステップS121)。そして、書き込みフラグのオンを検出すると、Readクラスタ制御部101は、待ち時間経過管理部106に、待ち時間格納領域1084に格納されている待ち時間だけ計測させる(ステップS123)。
待ち時間経過管理部106による所定の待ち時間の計測が完了すると、Readクラスタ制御部101は、排他無しRead命令実行部102に対して、排他無しReadデータ格納領域1086に格納されているデータに従って排他無しRead命令を実行させる(ステップS125)。すなわち、先頭アドレス、中央アドレス及び末尾アドレスの3カ所について、排他無しRead命令を実行し、読み出しデータを、排他無しReadデータ格納領域1086へ書き込む。
さらに、Readクラスタ制御部101は、排他Read命令実行部103に対して、排他Readデータ格納領域1087に格納されているデータに従って、Write/Readデータ領域201の全域に対して排他Read命令を実行させる(ステップS127)。また、排他Read命令によって読み出されたデータを、排他Readデータ格納領域1087へ書き込む。
そして、Readデータ照合部104は、排他無しReadデータ格納領域1086に書き込まれている読み出しデータから、Write命令と排他無しRead命令の競合が発生しているか否かを判断する(ステップS129)。図8に示す読み出しパターンのいずれに該当して、競合が発生しているのか否かを判断する。競合有り無しだけではなく、待ち時間の調整のために、前半に競合が発生しているのか、後半に競合が発生しているのかをも特定しておく。
競合がある場合には、処理は端子Eを介して図22のステップS133に移行する。一方、競合がない場合には、処理は端子Dを介して図22のステップS131に移行する。
競合がない場合には、待ち時間が長すぎることが想定される。従って、Readデータ照合部104は、待ち時間変更部107に対して処理を指示し、待ち時間変更部107は、例えば、現在の待ち時間−(現在の待ち時間×α)(αは例えば0.5)によって待ち時間を変更し、待ち時間格納領域1084に格納する(ステップS131)。そして処理はステップS137に移行する。
一方、競合があった場合には、Readデータ照合部104は、競合がWrite/Readデータ領域201の前半で発生していたか否かを判断する(ステップS133)。ステップS131で説明したように、図8に示す読み出しパターンのいずれかに該当するのかが分かれば、前半か後半であるかを判断できる。
前半であれば、処理はステップS137に移行する。一方、後半であれば、Readデータ照合部104は、待ち時間変更部107に対して処理を指示し、待ち時間変更部107は、例えば、現在の待ち時間−(現在の待ち時間×α)(αは例えば0.5)によって待ち時間を変更し、待ち時間格納領域1084に格納する(ステップS135)。これによって、より安定的に競合を発生させるように、競合位置を前倒しすることができるようになる。そして処理はステップS137に移行する。
そして、Readデータ照合部104は、排他Readデータ格納領域1087に格納されており且つ排他Read命令によって読み出されたデータが全て同一値であるか否かを判断する照合処理を実行し、照合結果格納領域1085に格納する(ステップS137)。全て同一値、具体的には「2」であれば、Write命令による排他Read命令の実行抑止及び排他Read命令によるWrite命令の実行抑止が検証されることになるので、正常と判断される。一部でも異なる値が読み出されていれば異常と判断される。
照合処理の結果が正常であれば(ステップS139:Yesルート)、Readデータ照合部104は、照合結果格納領域1085に「正常」を表すデータを格納する(ステップS143)。そして処理はステップS145に移行する。一方、照合処理の結果が異常であれば(ステップS139:Noルート)、Readデータ照合部104は、照合結果格納領域1085に「異常」を表すデータを格納する(ステップS141)。そして処理はステップS145に移行する。
その後、Readクラスタ制御部101は、試験処理を終了するのか否かを判断する(ステップS145)。例えば、照合処理の回数を計数しておき、所定回数に達したか判断する。試験処理を終了しない場合には、Readクラスタ制御部101は、書き込みフラグ領域202の書き込みフラグをオフに設定する(ステップS147)。これによって、第2のクラスタCL2に対して書き込みパターンの切り替えを行わせて処理を再開させる。処理終了でなければパターンAに切り替えて初期書き込みを行わせる。そして処理は端子Fを介して図21のステップS121に移行する。
一方、試験処理終了であれば、Readクラスタ制御部101は、照合結果格納領域1085に格納されている照合結果を読み出し、異常ありであれば(ステップS149:Yesルート)、試験実行者などに異常終了を通知する(ステップS153)。そして処理を終了する。一方、異常なしであれば(ステップS149:Noルート)、試験実行者などに正常終了を通知する(ステップS151)。試験実行者への通知は、例えばメールを送信するようにしても良いし、表示装置への表示出力などであっても良い。さらに、何回か照合処理を行っている場合には、いずれの照合処理(何回目かなど)において異常と判定されたのか、先頭アドレス、中央アドレス、末尾アドレスのいずれについて異常と判定されたのか、異常の原因は読み出しデータなのか実行時間なのかといったデータを、通知するようにしても良い。
このような処理を実行することによって、Write命令の実行中に、排他Read命令が実行されたことを確認でき、さらに排他Read命令実行中にはWrite命令が実行されないことを検証することができるようになる。
さらに、競合の有無を判定したり、読み出し結果の照合を行う処理については、Readクラスタではなく、Writeクラスタで実行するようにしても良い。
以上述べた実施の形態は例にすぎず、本発明はこれらに限定されるものではない。
さらに、図1に示した機能ブロック図は一例であって、プログラムモジュール構成やファイル構成とは一致しない場合もある。処理フローについても、処理結果が変わらない限り、処理順番を入れ替えたり、並列実行する場合もある。
なお、上で述べたクラスタは、コンピュータ装置であって、図23に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
また、クラスタは、単にプロセッサとメモリを含む処理装置である場合もある。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る試験方法は、(A)記憶装置の所定の領域に対して第1の値を書き込む処理と、所定の領域に対して第1の値とは異なる第2の値を書き込む処理とを実行し、(B)第2の値を書き込む処理の開始から所定時間後に、所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、(C)排他無しの読み出し命令の後に、排他読み出し命令を、所定の領域又は所定の領域内の複数箇所に対して実行し、(D)排他無しの読み出し命令の読み出し結果に基づき、所定の領域に対して第2の値の書き込みが完了した状態であるか否かを判断し、(E)所定の領域に対して第2の値の書き込みが完了していない状態であると判断された場合、排他読み出し命令の読み出し結果が、同じ値であるか判断する処理を含む。
このように排他無しの読み出し命令によって、所定の領域に対して第2の値の書き込みが完了していない状態であると確認できれば、排他読み出し命令の実行抑止が適切に行われているか否かを判定できるようになる。
なお、上記試験方法は、(F)所定の領域に対して第2の値の書き込みが完了している状態であると判断された場合には、所定時間を短縮する処理をさらに含むようにしても良い。所定時間が長すぎたため短縮するものである。
さらに、上で述べた排他無しの読み出し命令を実行する処理が、所定の領域内の複数箇所に対して排他無しの読み出し命令を実行する処理である場合もある。この場合、上で述べた第2の値の書き込みが完了した状態である否かを判断する処理が、排他無しの読み出し命令の、複数箇所に対する読み出し結果が一致するか否かを判断する処理を含むようにしても良い。このようにすれば、第2の値の書き込みが完了した状態を確実に判定できる。
さらに、上記試験方法は、(G)排他読み出し命令の処理時間を計測し、(H)排他読み出し命令の処理時間が、所定の条件を満たしているか否かを判断する処理をさらに含むようにしても良い。このようにすれば、時間的な観点においても、排他読み出し命令が適切に実行されたか否かを検証できるようになる。
さらに、上で述べた排他無しの読み出し命令を実行する処理が、所定の領域において、第1の部分と、第1の部分より後ろの第2の部分と、第2の部分より後ろの第3の部分とに対して排他無しの読み出し命令を実行する処理を含むようにしても良い。このような場合、上で述べた第2の値の書き込みが完了した状態である否かを判断する処理が、第1の部分の読み出し結果と、第2の部分の読み出し結果及び第3の部分の読み出し結果とが同じであるか否かを判断する処理を含むようにしても良い。そして、上記試験方法が、第1の部分の読み出し結果と第2の部分の読み出し結果とは同じ値であるが、第3の部分の読み出し結果が異なっている場合には、所定時間を短縮する処理をさらに含むようにしても良い。適切な所定時間を設定できるようになる。
さらに、上記試験方法は、上で述べた第2の値を書き込む処理の後に、第2の値とは異なる第3の値を所定の領域の少なくとも一部に書き込むように指示する処理をさらに含むようにしても良い。これによって、排他読み出し命令による後続の書き込み命令の実行抑止を確認できるようになる。
なお、上で述べたような処理をプロセッサ又はコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータが、
記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理とを実行し、
前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
処理を含む試験方法。
(付記2)
前記所定の領域に対して前記第2の値の書き込みが完了している状態であると判断された場合には、前記所定時間を短縮する
処理をさらに含む付記1記載の試験方法。
(付記3)
前記排他無しの読み出し命令を実行する処理が、前記所定の領域内の複数箇所に対して排他無しの読み出し命令を実行する処理
であり、
前記第2の値の書き込みが完了した状態である否かを判断する処理が、
前記排他無しの読み出し命令の、前記複数箇所に対する読み出し結果が一致するか否かを判断する処理
を含む付記1又は2記載の試験方法。
(付記4)
前記排他読み出し命令の処理時間を計測し、
前記排他読み出し命令の処理時間が、所定の条件を満たしているか否かを判断する
処理をさらに含む付記1乃至3のいずれか1つ記載の試験方法。
(付記5)
前記排他無しの読み出し命令を実行する処理が、
前記所定の領域において、第1の部分と、前記第1の部分より後ろの第2の部分と、前記第2の部分より後ろの第3の部分とに対して前記排他無しの読み出し命令を実行する処理を含み、
前記第2の値の書き込みが完了した状態である否かを判断する処理が、
前記第1の部分の読み出し結果と、前記第2の部分の読み出し結果及び前記第3の部分の読み出し結果とが同じであるか否かを判断する処理を含み、
前記第1の部分の読み出し結果と前記第2の部分の読み出し結果とは同じ値であるが、前記第3の部分の読み出し結果が異なっている場合には、前記所定時間を短縮する処理
をさらに含む付記1乃至4のいずれか1つ記載の試験方法。
(付記6)
前記第2の値を書き込む処理の後に、前記第2の値とは異なる第3の値を前記所定の領域の少なくとも一部に書き込むように指示する処理
をさらに含む付記1乃至5のいずれか1つ記載の試験方法。
(付記7)
記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理を実行中に、
前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
処理を、処理装置に実行させるための試験プログラム。
(付記8)
第1の処理装置と、
第2の処理装置と、
前記第1の処理装置と前記第2の処理装置とに接続されている記憶装置と、
を有し、
前記第1の処理装置が、
前記記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理を実行し、
前記第2の処理装置が、
前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
前記第1の処理装置又は前記第2の処理装置が、
前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
システム。
101 Readクラスタ制御部
102 排他無しRead命令実行部
103 排他Read命令実行部
104 Readデータ照合部
105 命令時間測定部
106 待ち時間経過管理部
107 待ち時間変更部
108 データ記憶部
1081 照合データテーブル
1082 待ち時間変更テーブル
1083 実行時間格納領域
1084 待ち時間格納領域
1085 照合結果格納領域
1086 排他無しReadデータ格納領域
1087 排他Readデータ格納領域
121 Writeクラスタ制御部
122 Write命令実行部
123 データ記憶部
1231 Writeデータ格納領域
200 外部記憶装置
201 Write/Readデータ領域
202 書き込みフラグ領域

Claims (8)

  1. コンピュータが、
    記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理とを実行し、
    前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
    前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
    前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
    前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
    処理を含む試験方法。
  2. 前記所定の領域に対して前記第2の値の書き込みが完了している状態であると判断された場合には、前記所定時間を短縮する
    処理をさらに含む請求項1記載の試験方法。
  3. 前記排他無しの読み出し命令を実行する処理が、前記所定の領域内の複数箇所に対して排他無しの読み出し命令を実行する処理
    であり、
    前記第2の値の書き込みが完了した状態である否かを判断する処理が、
    前記排他無しの読み出し命令の、前記複数箇所に対する読み出し結果が一致するか否かを判断する処理
    を含む請求項1又は2記載の試験方法。
  4. 前記排他読み出し命令の処理時間を計測し、
    前記排他読み出し命令の処理時間が、所定の条件を満たしているか否かを判断する
    処理をさらに含む請求項1乃至3のいずれか1つ記載の試験方法。
  5. 前記排他無しの読み出し命令を実行する処理が、
    前記所定の領域において、第1の部分と、前記第1の部分より後ろの第2の部分と、前記第2の部分より後ろの第3の部分とに対して前記排他無しの読み出し命令を実行する処理を含み、
    前記第2の値の書き込みが完了した状態である否かを判断する処理が、
    前記第1の部分の読み出し結果と、前記第2の部分の読み出し結果及び前記第3の部分の読み出し結果とが同じであるか否かを判断する処理を含み、
    前記第1の部分の読み出し結果と前記第2の部分の読み出し結果とは同じ値であるが、前記第3の部分の読み出し結果が異なっている場合には、前記所定時間を短縮する処理
    をさらに含む請求項1乃至4のいずれか1つ記載の試験方法。
  6. 前記第2の値を書き込む処理の後に、前記第2の値とは異なる第3の値を前記所定の領域の少なくとも一部に書き込むように指示する処理
    をさらに含む請求項1乃至5のいずれか1つ記載の試験方法。
  7. 記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理を実行中に、
    前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
    前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
    前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
    前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
    処理を、処理装置に実行させるための試験プログラム。
  8. 第1の処理装置と、
    第2の処理装置と、
    前記第1の処理装置と前記第2の処理装置とに接続されている記憶装置と、
    を有し、
    前記第1の処理装置が、
    前記記憶装置の所定の領域に対して第1の値を書き込む処理と、前記所定の領域に対して前記第1の値とは異なる第2の値を書き込む処理を実行し、
    前記第2の処理装置が、
    前記第2の値を書き込む処理の開始から所定時間後に、前記所定の領域の少なくとも一部分に対して排他無しの読み出し命令を実行し、
    前記排他無しの読み出し命令の後に、排他読み出し命令を、前記所定の領域又は前記所定の領域内の複数箇所に対して実行し、
    前記第1の処理装置又は前記第2の処理装置が、
    前記排他無しの読み出し命令の読み出し結果に基づき、前記所定の領域に対して前記第2の値の書き込みが完了した状態であるか否かを判断し、
    前記所定の領域に対して前記第2の値の書き込みが完了していない状態であると判断された場合、前記排他読み出し命令の読み出し結果が、同じ値であるか判断する
    システム。
JP2014015260A 2014-01-30 2014-01-30 試験方法、プログラム及びシステム Pending JP2015141656A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014015260A JP2015141656A (ja) 2014-01-30 2014-01-30 試験方法、プログラム及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014015260A JP2015141656A (ja) 2014-01-30 2014-01-30 試験方法、プログラム及びシステム

Publications (1)

Publication Number Publication Date
JP2015141656A true JP2015141656A (ja) 2015-08-03

Family

ID=53771937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014015260A Pending JP2015141656A (ja) 2014-01-30 2014-01-30 試験方法、プログラム及びシステム

Country Status (1)

Country Link
JP (1) JP2015141656A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227670A (zh) * 2016-08-05 2016-12-14 成都广达新网科技股份有限公司 一种epon设备命令自动检测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227670A (zh) * 2016-08-05 2016-12-14 成都广达新网科技股份有限公司 一种epon设备命令自动检测方法

Similar Documents

Publication Publication Date Title
CN104217029B (zh) 一种配置文件的修改方法及装置
WO2016101503A1 (zh) 一种热补丁的实现方法和装置
US9690682B2 (en) Program information generating system, method, and computer program product
WO2019091319A1 (zh) 一种针对处理器的自动化测试方法
JP6409577B2 (ja) テスト選択プログラム、テスト選択方法、及びテスト選択装置
US20140149800A1 (en) Test method and test control apparatus
CN110825428A (zh) 一种状态机配置方法、装置、设备及可读存储介质
CN111124509B (zh) 一种服务器启动方法与装置
JP2018018373A (ja) 抽出装置および抽出方法
JP6643407B2 (ja) 欠陥関数を検査する方法、装置、サーバ及びプログラム
CN107894900B (zh) 一种mcu升级的方法及系统
JP2015141656A (ja) 試験方法、プログラム及びシステム
CN111352764A (zh) 一种芯片修复的方法、装置、设备及存储介质
CN111383704B (zh) 一种存储器内建自测试电路和对存储器的测试方法
US9317273B2 (en) Information processing apparatus and information processing method
JP5900336B2 (ja) エミュレータ検証システム、エミュレータ検証方法
WO2020262257A1 (ja) バグ同定支援装置、バグ同定支援方法及びプログラム
US20140245287A1 (en) Effective installation of application software product
US10540222B2 (en) Data access device and access error notification method
JP2018018197A (ja) ソースコード評価プログラム
JP2018022433A (ja) 制御プログラム、装置、及び方法
US11137988B2 (en) Program code generation device and computer readable medium
EP2730993A1 (en) Reset method and network device
JP2009288978A (ja) 多重割り込み処理装置
US10108438B2 (en) Machine readable instructions backward compatibility