上記説明した試験プログラムおよび試験方法に対する具体的な実施形態を説明する前に、試験の対象となる対象装置の具体例について説明する。
図1は、試験の対象となる対象装置の具体例に相当するストレージ装置を示す図である。
図1に示すストレージ装置300は、複数(図1の例では6つ)のディスク装置310を内蔵している。これらのディスク装置310は、それぞれがデータを記憶する装置である。なお、ディスク装置の種類としては、HDD(Hard Disk Drive)やSSD(Solid State Disk)などが存在する。そして図1に示すディスク装置310にはどの種類のディスク装置も採用可能である。
また、ストレージ装置300は、複数(図1の例では3つ)のコントローラモジュール(CM)320を備えている。
CM320には、チャネルアダプタ(CA)330とデバイスアダプタ(DA)340とダイレクトメモリアクセス(DMA)コントローラ350が備えられている。更に後述するように、CM320には、CPUやメモリなども備えられているので、このCPUで動作されるプログラムの内容によってCM320は種々の処理を実行することができる。つまり、図1に示すストレージ装置300は情報処理装置の一種である。
CA330は、上位装置であるホスト400に接続されている。そしてCM320は、CA330を介してホスト400から、書込み命令や、その書込み命令に従ってディスク装置310に書き込まれるデータを受け取る。また、CM320はCA330を介してホスト400から読出し命令を受け取り、その読出し命令に従ってディスク装置310から読み出されたデータをCA330を介してホスト400へ送る。
DA340はディスク装置310に接続されている。そしてCM320はDA340を介してディスク装置310にアクセスすることでデータをディスク装置310と遣り取りする。
DMAコントローラ350は、CM320の相互接続に用いられる装置である。即ち、各CM320はDMAコントローラ350を介して、必要に応じてデータを相互に転送する。データの転送が必要になる場合とは、例えば、あるCM320に接続されていないディスク装置310に対するアクセスの命令をこのCM320が受け取った場合などである。
なお、図1に示す、CM320とホスト400との1対1の接続関係、およびCM320とディスク装置310との1対2の接続関係は単なる一例であって、CA330やDA340で物理的に対応可能な範囲内であればCM320の設定によって接続関係は変更可能である。
次に、CM320の構造の詳細について説明する。
図2は、CMの構造の詳細を示す図である。
CM320は、上述したCA330、DA340、DMAコントローラ350の他に、CPU360、メモリ370、チップセット380、バスブリッジ390を備えている。チップセット380はノースブリッジ381とサウスブリッジ382を含んでいる。
更に、CM320は、複数のPCIバス391、フラッシュROM392、スーパーI/O393、コンパクトフラッシュ(登録商標)394、システム監視回路395、LANコントローラ396も備えている。
チップセット380にはPCIバス391を介して、CPU360、バスブリッジ390、システム監視回路395、LANコントローラ396が接続されている。更に、バスブリッジ390にはPCIバス391を介して、CA330、DA340、DMAコントローラ350が接続されている。
一方、メモリ370は、チップセット380のノースブリッジ381に直接接続されている。また、フラッシュROM392、スーパーI/O393、コンパクトフラッシュ(登録商標)394は、チップセット380のサウスブリッジ382に直接接続されている。
フラッシュROM392はBIOSを記憶した記憶素子である。スーパーI/O393は、このストレージ装置300を外部から操作するための操作端末500が接続されるインターフェースである。コンパクトフラッシュ(登録商標)394は、CPU360に各種の動作を実行させるプログラムを記憶した記憶素子である。本実施形態では、このコンパクトフラッシュ(登録商標)394に、試験プログラムの一実施形態が記憶されている。システム監視回路395はCM320内で生じた各種の状態情報を集めて出力するものである。
本実施形態では、PCIバス391の負荷を変動させながらチップセット380の動作を確認する試験が行われる。ここで、本実施形態の試験プログラムの起動手順について説明する。まずCM320に電源が投入されることでフラッシュROM392のBIOSが起動する。このBIOSはコンパクトフラッシュ(登録商標)394から診断システムモニタをメモリ370上にローディングし、その後、制御を診断システムモニタに渡す。診断システムモニタがメモリ370上にローディングされてCPU360で実行されるとCM320が診断システムとして立ち上がる。立ち上がった診断システムは、操作端末500に診断システムの操作画面を表示する。操作者は、この操作画面から、本実施形態の試験プログラムの起動を指示する操作を行う。その結果、試験プログラムがコンパクトフラッシュ(登録商標)394からメモリ370上にローディングされる。そして、そのローディングされた試験プログラムがCPU360で実行される。
このようにローディングされた本実施形態の試験プログラムについて以下説明する。
図3は、メモリ上にローディングされた試験プログラムを示す図である。
図3に示すように、試験プログラム100はメモリ370上にローディングされている。そして、試験プログラム100は、CPU360によって実行されることにより、本実施形態の試験方法をCM320に実行させるものである。
試験プログラム100は、CPU360によって実行されることにより、メモリ370上にサポートI/Oテーブル610と装置構成テーブル620と負荷率変動タイミングテーブル650とエラーリスト690を構築する。これらのテーブルやリストの詳細については後述する。
本実施形態の試験プログラム100は、CM320内のチップセット380が正常に動作するかを確認するためのものである。即ち、本実施形態の試験プログラム100によって実行される本実施形態の試験方法ではCM320が試験的に動作させられることになる。そして、この試験方法では、CM320の試験的動作に際して、CM320内の各PCIバス391における負荷率が変動する。ここで、負荷率が100%の動作状態とは、PCIバス391に接続されているIO装置やメモリの能力も込みでPCIバス391が転送可能な最大のデータ転送量を実現している動作状態を言う。このため、実際に特定の負荷率が得られる動作状態は装置のハードウェア構成に依存することとなる。
図4は、本実施形態の試験プログラムの実行によって実現する本実施形態の試験方法を表すフローチャートである。
本実施形態の試験方法では、チップセットの動作を確認するための試験処理に先立って、まず、試験対象となる実際の装置(本実施形態ではCM320)におけるチップセット構成(ハードウェア構成)を認識する認識処理が実行される(ステップS101)。その後、その認識されたチップセット構成に基づいて、各PCIバス391における負荷率の変動タイミングを決定する自動決定処理が実行される(ステップS102)。さらに本実施形態では、各PCIバス391について、実際のデータ転送動作における負荷率を測定する負荷率測定処理が実行される(ステップS103)。
本実施形態の試験方法では、このような準備的な各処理が終了した後、試験処理が実行される(ステップS104)。この試験処理では、チップセットの動作を確認するためにCM320が試験的に動作させられる。また、この試験処理では、上記ステップS102で決定された変動パターンに従って各PCIバス391における負荷率が変動させられる。そして、試験処理が終了したら、試験結果をチェックするチェック処理が実行される(ステップS105)。
上述したステップS101は、情報処理装置のハードウェア構成を確認する構成確認処理の一例に相当する。また、ステップS102およびステップS103は、確認されたハードウェア構成に含まれている各ハードウェア要素に対する負荷の変動パターンを決定する決定処理の一例に相当する。これらステップS102およびステップS103のうちステップS102では、変動パターンのうちの変動タイミングが決定され、ステップS103では変動パターンのうちの、負荷率に対応する具体的な負荷動作が決定される。なお、本実施形態では、負荷の変動順序については操作で設定される方式が採用されている。しかし、変動パターンを決定する決定処理としては、変動順序も含めて自動決定する処理も採用可能である。この場合、変動順序は、例えばハードウェア要素の数などに応じて、要素数が多い場合には負荷率が粗く変動する変動順序に決めるといったように決定される。以下では、負荷の変動順序については操作で設定される方式を前提として説明を続ける。
上述したステップS104は、決定された変動パターンで各ハードウェア要素を動作させる動作処理の一例に相当する。さらに、上述したステップS105は、各ハードウェア要素の動作が正常であるか否かを確認する動作確認処理の一例に相当する。
本実施形態の試験方法では、このような一連の処理が実行される。以下では、これらの各処理について順次に説明していく。
図5は、認識処理の手順を表すフローチャートである。
この認識処理では、ストレージ装置のコントローラモジュールやパーソナルコンピュータなどといった情報処理装置のシステム上に備えられている機能を利用してハードウェア構成が認識される。この機能は、情報処理装置上でBIOSなどがハードウェア構成を確認するために用意された機能である。この機能の詳細は本件開示の本旨ではないので詳細説明は省略するが、概略としては以下説明する機能となっている。即ち、システム上にはいくつかのレジスタが用意されていて、これらのレジスタに、システムのバスに接続されている各ハードウェア(IO装置)からIDなどが送られて来て格納される。また、各レジスタには、バスにおけるハードウェアの全接続箇所を空間として表したPCIコンフィグレーション空間上の各箇所が割り当てられている。そして、これらのレジスタに格納されている値を検索することによってハードウェア構成を認識することが出来る。なお、PCIコンフィグレーション空間上の各箇所は、バス番号とデバイス番号とファンクション番号との組み合わせによって特定される。
認識処理が開始されると、まず、チップセット上のPCIバスブリッジが検索される(ステップS201)。このPCIバスブリッジの検索は、具体的には、PCIコンフィグレーション空間のバス番号が「0」かつPCIヘッダーレジスタの値が「0x01」となっているハードウェアの検索である。このようにPCIバスブリッジが検索されると、各PCIバスブリッジについて、セカンダリバス番号とサブオーディネート番号を各々のレジスタから得ることが出来る。セカンダリバス番号は、PCIバスブリッジ配下のバス番号範囲の先頭番号を表している。また、サブオーディネート番号は、PCIバスブリッジ配下のバス番号範囲の末尾番号を表している。
次に、システムのバスに接続されている各ハードウェアが検索される(ステップS202)。この検索に際しては、試験プログラム内に予め保持されているサポートI/Oテーブルが参照される。このサポートI/Oテーブルは、この試験プログラムにアクセス用のコマンドなどが用意されている(即ちサポートされている)IO装置を示したテーブルである。このテーブルに示されたIO装置は、試験プログラムに用意されたコマンドによって、PCIバスの負荷率を変動させるためのアクセスが可能である。
図6は、サポートI/Oテーブルを示す図である。
サポートI/Oテーブル610には、装置分類611とベンダID612とデバイスID613が対応付けられて格納されている。装置分類611は、IO装置をCAやDMA等というように機能で分けた分類(即ち装置種類)を表している。ベンダID612は、IO装置を製造したベンダを特定するIDである。デバイスID613は、IO装置の機種を特定するIDである。
このようなサポートI/Oテーブル610が図5のステップS202で参照される。そして、システム内の各レジスタに格納されているIDのうち、このサポートI/Oテーブル610に格納されているIDと同じIDが検索される。
この検索は、具体的には、PCIコンフィグレーション空間上の箇所を特定する、バス番号、デバイス番号、およびファンクション番号のそれぞれが昇順に変更されながら、各箇所に対応するレジスタに格納されているIDが読み出される。そして、読み出されたIDが、サポートI/Oテーブル610に格納されているIDと同じであるか確認される。IDが同じであった場合には、サポートされているIO装置が検索で見つかったことになる。なお、この検索で見つかったIO装置については、当然ながら、そのIO装置のIDが格納されていたレジスタに割り当てられているバス番号が自動的に取得されている。
その後、検索で見つかった各IO装置についてバス番号が、ステップS201で検索されたPCIバスブリッジ配下のバス番号範囲と比較されることにより、各IO装置がどのPCIバスブリッジの配下の装置であるかが認識される(ステップS203)。そして、このような認識結果に基づいて装置構成テーブルが生成される。
図7は、装置構成テーブルを示す図である。
装置構成テーブル620には、バス分類621と装置種類622とバス番号623とデバイス番号624とファンクション番号625が対応付けられて格納されている。
バス分類621は、検索で見つかったPCIバスブリッジを区別するために割り当てられる番号である。このバス分類621は、システム内のPCIバスをPCIバスブリッジ毎に分類した番号とも言える。このバス分類621の「1」はCPU直結のPCIバスに固定で割り当てられる。バス分類621の「2」以降は、検索で見つかった各PCIバスブリッジに順次に割り当てられる。
装置種類622は、図6に示すサポートI/Oテーブル610における装置分類611に相当する情報である。図5のステップS202で見つかったIO装置について図6に示すサポートI/Oテーブル610から装置分類611が読み出されてこの装置構成テーブル620の装置種類622として格納される。
バス番号623とデバイス番号624とファンクション番号625との組み合わせは、上述したように、PCIコンフィグレーション空間上の箇所を特定するものである。
ここで、図2に示す具体例に当て嵌めて、ハードウェア構成の認識例を説明する。
図8は、認識された構成を示す図である。
図2に示すCM320に対するハードウェア構成の認識の場合、図5のステップS201での検索でチップセット380上には3つのPCIバスブリッジが見つかる。これらのPCIバスブリッジの配下のバス番号範囲は、それぞれ、「1」〜「10」、「11」〜「20」、「21」〜「30」となっている。図8に示す例では、これらのPCIバスブリッジのうち、バス番号範囲が「1」〜「10」である第1のPCIバスブリッジに対してバス分類「2」が割り当てられている。即ち、この第1のPCIバスブリッジ配下のPCIバス391_2についてバス分類「2」が割り当てられていることになる。この第1のPCIバスブリッジ配下のPCIバス391_2には、バスブリッジ390を経由して、CA330とDMAコントローラ350が接続されている。そして、これらCA330およびDMAコントローラ350はいずれもPCIコンフィグレーション空間のバス番号「6」に対応していることが認識されている。
チップセット380上のPCIバスブリッジのうち、バス番号範囲が「11」〜「20」である第2のPCIバスブリッジにはバス分類「3」が割り当てられている。即ち、この第2のPCIバスブリッジ配下のPCIバス391_3についてバス分類「3」が割り当てられていることになる。この第2のPCIバスブリッジ配下のPCIバス391_3には、バスブリッジ390を経由してDA340が接続されている。そして、このDA340はPCIコンフィグレーション空間のバス番号「12」に対応していることが認識されている。
チップセット380上のPCIバスブリッジのうち、バス番号範囲が「21」〜「30」である第3のPCIバスブリッジにはバス分類「4」が割り当てられている。即ち、この第3のPCIバスブリッジ配下のPCIバス391_4についてバス分類「4」が割り当てられていることになる。この第3のPCIバスブリッジ配下のPCIバス391_4には、直接にLANコントローラ396が接続されている。そして、このLANコントローラ396はPCIコンフィグレーション空間のバス番号「21」に対応していることが認識されている。
バス分類「1」は当然ながらCPU360に直結のPCIバス391_1に割り当てられている。このCPU360に直結のPCIバス391_1に接続されているハードウェアとして認識処理で認識されるのはCPU360である。
以上説明したように、本実施形態では、各PCIバスに接続されている各IO装置が認識されるが、試験で負荷変動を生じさせる対象であるハードウェア要素は各PCIバスである。このため、各PCIバスには別々の負荷変動が与えられる。一方、各IO装置は、各PCIバスに対してCPU360が負荷変動を生じさせる手段(アクセス対象)として認識されている。従って、図8に示す例であれば、バス分類「2」のPCIバス391_2に接続されているCA330およびDMAコントローラ350は互いに同一の負荷変動で動作する(アクセスされる)ことになる。また図8は、各PCIバスと、各PCIバスに負荷変動を生じさせる手段との対応例も表していることになる。なお、バス分類「1」のPCIバス391_1に接続されているハードウェアはCPU360であるが、CPU360がCPU360を負荷変動の手段にすることは出来ない。そこで、バス分類「1」だけは例外として、CPU360がメモリ370をアクセスすることで負荷変動を生じさせる。
このようにハードウェア構成が認識された場合の装置構成テーブルは以下のようになる。
図9は、図8に示すハードウェア構成の認識例における装置構成テーブルを示す図である。
装置構成テーブル620の装置種類622には、「CPU」、「CA」、「DMA」、「DA」、「LAN」という5種類が示されている。そして、バス分類621としては、「CPU」に「1」、「CA」および「DMA」に「2」、「DA」に「3」、「LAN」に「4」が対応付けられている。また、バス番号623としては、「CPU」に「0」、「CA」および「DMA」に「6」、「DA」に「12」、「LAN」に「21」が対応付けられている。
このように作成された装置構成テーブル620が参照されることによって、例えばバス分類「2」のPCIバスには「CA」および「DMA」がバス番号「6」に接続されている等ということが確認される。そして、そのように確認された「CA」および「DMA」がバス分類「2」のPCIバスに負荷変動を与える手段として認識される。但し、上述したように「CPU」だけは例外として処理されて、負荷変動を与える手段はメモリと認識される。
図4のステップS101に示す認識処理では、以上説明したようにハードウェア構成が認識される。
以上で認識処理についての説明を終了し、以下、図4のステップS102に示す自動決定処理について説明する。
負荷率の変化順序についてはユーザの操作(図2に示す操作端末500による操作)によって共通の変動順序が与えられているという前提で、この自動決定処理では、各PCIバスにおける負荷率の変動タイミングが、互いにバラバラになるように決定される。自動決定処理の詳細を説明する前に、ユーザの操作によって与えられる負荷率の変化順序について説明する。
図10は、負荷率の変化順序の例を示す図である。
図10には、本実施形態の試験プログラム中に予め組み込まれていて負荷率の変化順序の候補を示している負荷率変動順序リスト630が示されている。この負荷率変動順序リスト630には、負荷率の具体的な変動順序632と、各変動順序632を区別するための変動順序番号631とが対応付けられて記載されている。
具体的には、1番目の変動順序としては、100%,90%,…,10%,0%,10%,20%,…,90%,100%,…というように、10%ずつ負荷率が周期的に変動していく変動順序が示されている。また、2番目の変動順序としては、100%,80%,…,0%,20%,…,80%,100%,…というように、20%ずつ周期的に負荷率が変動していく変動順序が示されている。更に、3番目の変動順序としては、100%,60%,30%,60%,100%,…というように周期的に負荷率が変動していく変動順序が示されている。なお、変動順序の記載形式は、図10では説明の便宜上、人間にとって理解しやすい説明的な記載形式が用いられているが、実際にはCPUが情報処理によって認識可能な記載形式が用いられている。本実施形態では、このような負荷率変動順序リスト630に示されている具体的な変動順序632から、図2に示す操作端末500による操作で、試験に用いられる変動順序が1つ選択される。そして、各PCIバスでは同一の変動順序で負荷が変動する。なお、本件開示における負荷の変動パターンとしては、このような同一の変動順序の変動パターン以外にも、図10に示すような複数の変動順序をハードウェア要素毎に別々に割り当てた変動パターンも採用可能である。但し、本実施形態の以下の説明では、1つ選択された変動順序が各PCIバスにおける負荷の変動順序として共通に用いられるものとする。
次に、このように選択されている変動順序を前提として、各PCIバスにおける負荷率の変動タイミングの組み合わせを自動的に決定する自動決定処理の詳細について説明する。
本実施形態における試験のように、各PCIバスの負荷を変動させながらチップセットの動作を確認する負荷試験では、各PCIバスで別々の負荷率が生じている動作状況が試験中に生じることが望ましい。つまり、各PCIバスでは、なるべくバラバラのタイミングで負荷率が変動することが望ましい。一方で、負荷変動の制御はシンプルであることも望ましい。そこで、本実施形態の自動決定処理では、負荷の変動パターンにおける変動タイミングとして、複数の定期的な変動タイミングの組み合わせが用いられる。これらの変動タイミング相互では変動が非同期となるような組み合わせとなっている。そして、このような複数の変動タイミングが各PCIバスに割り当てられる。これにより、各PCIバスにおける負荷変動の制御がシンプルである一方でPCIバスの相互ではバラバラのタイミングで負荷が変動することとなる。
更に、変動順序で現れるいずれかの負荷率を各PCIバスに割り当てて得られる負荷率のセットについては、PCIバスに割り当て可能な全てのセットが負荷変動によって少なくとも1回は実現されることが望ましい。そのため本実施形態では、例えば図10に示す1番目の変更順序の場合でPCIバスが4つであるとすると、11×11×11×11=14641通りのセット全てが実施されるような変動タイミングが求められる。
以下、フローチャートを参照して自動決定処理の具体的な手順を説明する。また、以下の説明では、図10に示す1番目の変更順序で4つのPCIバスに対して負荷を変動させるための変動タイミングを適宜に具体例として用いる。
図11は、自動決定処理のフローチャートである。
この自動決定処理が開始されるとステップS301で、定期的な変動タイミングの組み合わせ(即ち変動間隔の組み合わせ)について初期値が設定される。本実施形態では、初期値に限らず、変動間隔の組み合わせとしては素数の組み合わせが用いられる。これにより、変動タイミングの相互では変動が非同期となる。ここでは、4つのPCIバスに対するの変動タイミング(即ち変動間隔)txの初期値の一例として、t1=1,t2=3,t3=5,t4=7を想定する。
次に、ステップS302では、各種の変数が初期化される。即ち、経過時間を表した変数であるタイムカウンタtimeは、time=1に初期化される。また、各PCIバスにおける負荷率を表した変数busxについては、いずれのPCIバスについても「100」に初期化される。更に、複数のPCIバスにおける負荷率のセットのうち負荷変動で出現済み(実施済み)のセットの数を表す実施数は「0」に初期化される。そして、負荷変動で出現済み(実施済み)のセットを記録する記録表はクリアされる。
このような初期化が終わるとステップS303〜ステップS309で、タイムカウンタをカウントアップしながら、変動で出現する(実施される)負荷率のセットが確認される。
ステップS303では、各PCIバスについて、タイムカウンタの値が示す経過時間が変動のタイミングに一致しているかどうかが確認される。具体的には、タイムカウンタの値を各PCIバスにおける変動間隔txで割った余りが「0」であるかどうかで判断される。例えば、ステップS301で説明した初期値の変動間隔で、かつ、タイムカウンタの値が「63」であると、t1、t3、t4の各PCIバスで経過時間が変動のタイミングに一致することとなる。
このようなステップS303での確認で、経過時間が変動のタイミングに一致するPCIバスが1つもなかった場合(ステップS304;No)には、ステップS309でタイムカウンタの値が「1」繰り上がる。そして、ステップS303に処理が戻る。
一方、ステップS303での確認で、経過時間が変動のタイミングに一致するPCIバスが存在した場合(ステップS304;Yes)には、ステップS305で、該当するPCIバスにおける負荷率が変更される。負荷率の変更の順序は、上述したように操作で設定されているので、その設定された順序に従った次の負荷率y%が変数busxに代入される。
その後、ステップS306で、今回の負荷率のセットと同じセットが、実施済みのセットの記録に含まれているか否かが確認される。そして、今回の負荷率のセットが未実施のセットである場合には、ステップS307で、今回のセットが実施済みのセットの記録表に追加されるとともに実施数の値が「1」繰り上がる。ここで記録表の例について説明する。
図12は、実施済みの負荷率のセットを記録した記録表を示す図である。
図12に示すように、記録表635には、バス分類「1」のPCIバスからバス分類「4」のPCIバスまでの各PCIバスそれぞれの負荷率636,637,638,639がセットで記録されている。この記録表635の格段が各セットを表している。
このような記録表635に図11のステップS307で今回のセットが追加されると、その後、ステップS308で、全てのPCIバスについて「1回は負荷率が変動し、かつ負荷率が100%」という状態になっているか否かが判定される。このステップS308の判定は、即ち、ステップS303〜ステップS309で負荷率のセットの出現を確認している負荷変動のパターンが完全に1周して初期に戻ったか否かを判定している。
ステップS308の判定で、何れかのPCIバスについて「未だ1回も負荷率が変動していない」か、あるいは、「負荷率が100%未満」と判定された場合にはステップS309に進む。ステップS309ではタイムカウンタの値が「1」繰り上がる。そして、ステップS303に処理が戻る。
一方、ステップS308の判定で、全てのPCIバスについて「1回は負荷率が変動し、かつ負荷率が100%」という状態になっていると判定された場合には、負荷変動のパターンが完全に1周したことになるのでステップS310に進む。ステップS310では、PCIバスに割り当て可能な全てのセットが負荷変動によって出現した(実施された)か否かが判定される。この判定は、実施数が全セット数に達しているか否かによって簡単に判定可能である。そして、ステップS310で、全てのセットが出現したと判定された場合には、現在設定されている変動間隔の組み合わせが、各PCIバスに割り当てられる変動間隔として決定されて自動決定処理は終了する。一方、ステップS310で、未出現のセットが残っていると判定された場合には、現在設定されている変動間隔の組み合わせに従った負荷変動では全セットの実施はできないことを意味する。このため、未出現のセットが残っていると判定された場合には、変動間隔の組み合わせが、現在の設定とは異なる組み合わせに変更され、その後、ステップS302に処理が戻る。
このような自動決定処理によって変動間隔の色々な組み合わせが試される結果、負荷率の全セットが実施可能な変動間隔の組み合わせが決定されることとなる。
図13は、自動決定処理で決定された変動間隔の組み合わせの例を示す図である。
ここでは、変動間隔の組み合わせの決定結果640が、上述した負荷率変動順序リスト630に対応付けて示されている。また、ここに示す例はPCIバスが4つである場合の例である。即ち、バス分類「1」のPCIバスからバス分類「4」のPCIバスまでの各PCIバスに割り当てられる変動間隔641,642,643,644の組み合わせが決定結果640として示されている。具体的には、10%ずつ負荷率が変動していく1番目の変動順序に対応した変動間隔641,…,644は、「1秒」、「13秒」、「19秒」、「23秒」となっている。また、20%ずつ負荷率が変動していく2番目の変動順序に対応した変動間隔641,…,644は、「1秒」、「7秒」、「11秒」、「13秒」となっている。更に、3番目の変動順序に対応した変動間隔641,…,644は、「1秒」、「3秒」、「5秒」、「7秒」となっている。
なお、図11に示す自動決定処理は、具体的な試験対象が未定でも、PCIバスの数と負荷の変更順序が与えられれば実行可能である。このため、図12に示すような決定結果を、種々のPCIバス数と種々の変更順序との各組合わせについて予め用意しておくことが出来る。この場合には、上述した認識処理で認識されたPCIバスの数と、上述した操作で選択された変更順序との組合わせに対応した決定結果の変動間隔が各PCIバスに割り当てられることとなる。
以上で自動決定処理の説明を終了し、以下、図4のステップS103に示す負荷率測定処理について説明する。
本実施形態における負荷率測定処理では、上述した認識処理で認識された全てのIO装置に対するアクセスとCPUからメモリへのアクセスとが同時に実行されている状態で、メモリおよびIO装置毎に最大の転送量が測定される。より正確に言えば、最大の転送量が実現していると考えられるアクセス動作状態で、アクセス回数とこの回数のアクセスに要した時間とが測定される。更に、この負荷率測定処理では、上述した負荷の変更順序で必要とされる各負荷率に相当するアクセス動作状態も、算出あるいは測定によって求められる。以下、メモリアクセスと各IO装置に対するアクセスについて、順に、負荷率測定処理の詳細を説明する。
メモリアクセスでは、CPUからメモリに対する4バイトのライト処理あるいリード処理(以下、これらを総称してライト/リード処理と称する)がx回連続で実行されて、このX回のライト/リード処理に要した時間が測定される。時間の測定は、1回目の処理開始直前の時刻とx回終了の時刻をCPUのクロックカウント数で確認することによって実行される。このような測定によって、PCIバスの最大転送量におけるx回のメモリアクセスに要する時間tが測定されることになる。
なお、CPU中にキャッシュが存在するので、このキャッシュ止まりのアクセスではなくて確実にメモリに対するアクセスが生じるように、本実施形態では以下のような処置がとられている。即ち、x回のライト/リード処理によってアクセスされる試験領域がキャッシュの2倍以上の領域となるようにx回の具体的回数が決められている。そして、この試験領域の先頭から順に、キャッシュのラインバウンダリ間隔と同じ間隔毎の各アドレスに対してライト/リード処理が実行される。
また、メモリアクセスによる負荷変動は、y回のライト/リード処理とディレイ処理とが交互に実行されることで実現される。
図14は、負荷率100%での動作状態を示す図である。
負荷率100%の場合には、メモリ370に対するy回のライト/リード処理がディレイなしに繰り返し実行される。
図15は、負荷率が100%未満の場合の動作状態を示す図である。
負荷率が100%未満の場合には、メモリ370に対するy回のライト/リード処理が実行される度に一定時間のディレイが実行される。このディレイの長さTは、上記で測定されたx回のメモリアクセスに要する時間tと負荷率z%に基づいて下記の式で算出される。
T={t/(x*z/100)ー(t/x)}*y
このように、CPUに接続されたPCIバスについては、実際のメモリアクセスによる実際の負荷(即ちアクセスに要した時間t)が、上述したようなx回の予備的なメモリアクセスの実行によって確認される。そして、その確認された負荷に基づいて、CPUに接続されたPCIバスに対する負荷変動における具体的な負荷動作(即ちy回の動作に対するディレイの長さT)が決定される。このように負荷動作が決定されることにより、試験対象装置における具体的なハードウェアにおける負荷変動を精度良く実現することができる。
次に、DAおよびCAに対するアクセスにおける負荷率測定処理の詳細を説明する。
DAおよびCAに対するアクセスは、ライトコマンドあるいリードコマンド(以下、これらを総称してライト/リードコマンドと称する)が並べられたコマンドチェーンによって実行される。そして、PCIバスにおける最大転送量は、ディレイの無いコマンドチェーンが用いられて測定される。
図16は、ディレイの無いコマンドチェーンを示す図である。
コマンドチェーン660中には1番目から最終までの所定数のコマンド661が並べられている。最大転送量の測定では、このコマンドチェーン660が約1秒間の測定時間に亘って繰り返しCPUで作成される。そして、実際に実行できたコマンド661の回数xが求められる。
また、DAおよびCAに対するアクセスでの負荷変動は、ディレイコマンドを含んだコマンドチェーンが実行されることで実現される。
図17は、ディレイコマンドを含んだコマンドチェーンを示す図である。
このコマンドチェーン665には、図16に示すコマンドチェーン660が有するコマンド661と同数のコマンド661が含まれている。また、コマンド661のn個毎にディレイ662が加えられている。負荷率測定処理では、このようなディレイコマンドを含んだコマンドチェーン665によって実際に実現する負荷率が測定される。
負荷率の測定に先立って、最大転送量でのコマンド661の実行回数xに基づいて、各負荷率に対する期待範囲が以下のように設定される。
負荷率90%に対する期待範囲は、x*0.90以上x*0.99以下である。
負荷率80%に対する期待範囲は、x*0.80以上x*0.89以下である。
負荷率70%に対する期待範囲は、x*0.70以上x*0.79以下である。
負荷率60%に対する期待範囲は、x*0.60以上x*0.69以下である。
負荷率50%に対する期待範囲は、x*0.50以上x*0.59以下である。
負荷率40%に対する期待範囲は、x*0.40以上x*0.49以下である。
負荷率30%に対する期待範囲は、x*0.30以上x*0.39以下である。
負荷率20%に対する期待範囲は、x*0.20以上x*0.29以下である。
負荷率10%に対する期待範囲は、x*0.10以上x*0.19以下である。
次に、コマンドチェーン665として、コマンド661の1個毎に1クロック分のディレイ662が入るコマンドチェーン665が用意される。そして、最大転送量の測定と同様の測定時間に亘って繰り返しコマンドチェーン665がCPUで作成される。また、この測定時間で実際に実行されたコマンド661の回数が求められる。このコマンドチェーン665について求められた実行回数がいずれかの負荷率の期待範囲に含まれている場合には、このコマンドチェーン665がこの負荷率の実行用として登録される。
このような測定は、ディレイ時間が1クロック分ずつ増やされながら繰り返される。そしてコマンド661の実行回数がx*0.10未満になったら、ディレイ時間が1クロックに戻されるとともにディレイの間隔(すなわちディレイ間のコマンド661数n)が1つ増やされる。このようにディレイ時間およびディレイの間隔が変更されながら、全ての期待範囲について負荷率の実行用のコマンドチェーン665が得られるまで測定が繰り返される。
DAおよびCAに対するアクセスにおける負荷率測定処理では、以上説明した手順によって、各負荷率を実現するためのコマンドチェーンが求められる。
次に、DMAコントローラおよびLANコントローラに対するアクセスにおける負荷率測定処理について説明する。
この負荷率測定処理では、CPUからDMAコントローラおよびLANコントローラに対して、送信コマンドあるいは受信コマンドが約1秒間の測定時間tに亘って連続で発行される。このようなコマンド発行により、PCIバスの最大転送量が実現する。そして、この測定時間t中に実際に実行されたコマンドの回数xが求められる。
このように求められた回数xと測定時間tに基づいて、コマンド1回あたりの実行時間t’(ms)が、t’=t/xで求められる。更に、各負荷率z%におけるコマンド1回毎のディレイ時間Tが、T={(100−z)*t’}/zで求められる。
図18は、負荷率z%を実現するコマンド実行パターンを示す図である。
コマンド実行パターン680中では、コマンド実行681とディレイ実行682とが交互に繰り返されている。例えば、最大転送量での1秒間の測定時間における実行回数が100回であった場合には、コマンド実行681の1回あたりの実行時間は10msとなる。そして、例えば負荷率20%におけるディレイ実行682の時間は、{(100−20)*10}/20=40msとなる。
但し、ディレイ時間がシステムの1クロック(例えば16.7ms)よりも短い場合には、コマンド実行681の1回毎にディレイ実行682が入るコマンド実行パターン680ではディレイの精度が悪いので、以下説明するコマンド実行パターンが用いられる。
図19は、負荷率z%を実現する別のコマンド実行パターンを示す図である。
このコマンド実行パターン685では、複数回のコマンド実行681に対して1回のディレイ実行682が入る。例えば、1秒間における最大転送量での実行回数が100回であり、かつ、負荷率60%である場合には、コマンド実行681の1回に対するディレイ実行682の時間は、{(100−60)*10}/60=6.66msとなる。この場合は、1回のディレイ実行682におけるディレイ時間が1クロック以上となるように、3回のコマンド実行681に対して1回のディレイ実行682が入るのがよい。
以上説明したように、負荷率測定処理では、最大転送量での負荷が求められるとともに、各負荷率を実現するための動作状態も求められる。
以上で負荷率測定処理の説明を終了し、以下、図4のステップS104に示す試験処理について説明する。
この試験処理では、上述した変動順序での各PCIバスの負荷変動を管理するために負荷率変動タイミングテーブルが用いられる。
図20は、負荷率変動タイミングテーブルを表す図である。
負荷率変動タイミングテーブル650には、バス分類の番号651と、各PCIバスにおける変動間隔652と、変動順序を表した番号653と、現在の負荷状態(負荷率)654とが対応づけられて格納されている。変動順序を表した番号653は、上述したようにユーザの操作で設定されたものである。また、各PCIバスにおける変動間隔652は、上述した自動決定処理で決定されたものである。そして、現在の負荷状態(負荷率)654は試験処理の進行に伴って書き換えられていく。
図21は、試験処理におけるタスク構造を示す図である。
試験処理700は、試験制御部(タスク)710と試験部(タスク)720とを有している。試験制御部(タスク)710は、図20に示す負荷率変動タイミングテーブル650を用いて試験全体の処理を制御するものである。また、試験制御部(タスク)710は、エラー発生の監視も行う。一方、試験部(タスク)720は、各PCIバスにおける負荷状態を作るものである。この試験部(タスク)720は、CPU試験部(タスク)721とDA試験部(タスク)722とCA試験部(タスク)723とDMA試験部(タスク)724とLAN試験部(タスク)725とを有している。
CPU試験部(タスク)721は、CPUの負荷動作、即ちメモリアクセスを実行するものである。
DA試験部(タスク)722とCA試験部(タスク)723とDMA試験部(タスク)724とLAN試験部(タスク)725は、それぞれ、DA、CA、DMAコントローラ、LANコントローラに対するアクセスを実行するものである。
このようなタスク構造における試験処理の実行は以下のようになる。
図22は、図21に示すタスク構造における試験処理の実行手順を示す図である。
試験制御部(タスク)710は、まず、全試験部721,…,725に対して、テスト開始の指示を出す。この指示を受けて各試験部721,…,725では同時にテストが開始され、各PCIバスに対して同時に負荷が与えられる。各試験部721,…,725は、図9に示す装置構成テーブル620を参照することにより、アクセスを実行する対象を確認する。
その後、試験制御部(タスク)710は、図20に示す負荷率変動タイミングテーブル650を参照しながら、試験時間の経過に従って、変動間隔652に達したバス分類に属する試験部721,…,725に対して負荷変動を指示する。即ち、負荷率変動タイミングテーブル650の現在の負荷状態654に示されている負荷率に対し、変動順序番号653が表す変動順序に従って次の負荷率を該当試験部に指示する。そして、現在の負荷状態654に示されている負荷率を、指示した負荷率に書き換える。負荷率を指示された試験部721,…,725は、上述した負荷率測定処理で求められた各負荷率の動作状態でアクセスを実行する。各試験部721,…,725により各負荷率の動作状態でアクセスが実行されている間、試験制御部(タスク)710はエラー発生を監視している。そして、エラー発生が認められた場合には、エラーリストにエラーを記録する。
図23は、エラーリストを示す図である。
エラーリスト690には、発生したエラーの種類を表すエラー番号691と、エラーの発生時間692と、エラーが発生したときの各バス分類における負荷率693,…,696が対応づけられて記録される。
このようなエラーリスト690に、必要に応じてエラーの内容が記録されながら、図22に示すように、試験制御部(タスク)710の指示に従って各試験部721,…,725で各負荷率の動作状態が実行される。
各PCIバスにおける負荷率の全ての組み合わせが出現するために十分な試験時間が経過した後で試験制御部(タスク)710は、各試験部721,…,725に対して試験終了を指示する。
このような手順で試験処理が実行される。その後、図4のステップS105に示すチェック処理では、図23に示すエラーリスト690が参照されて、エラー発生の有無や内容がチェックされる。
以上説明したように、本実施形態によれば、試験対象の装置がどのようなハードウェア構成であっても、ハードウェア構成に応じた負荷変動試験を実施することができる。
なお、本実施形態では、試験対象の装置内で試験プログラムが実行されるが、本件開示の試験プログラムは、試験対象の装置とは別の情報処理装置上で実行されて試験対象の装置の負荷変動試験を実施するものであってもよい。
以下、上述した形態を含む種々の形態に関し、更に以下の付記を開示する。
(付記1)
情報処理装置で実行されることにより試験対象装置を試験的に動作させる試験プログラムにおいて、
前記試験対象装置のハードウェア構成を確認する構成確認処理と、
前記確認処理で確認されたハードウェア構成に基づいて、該ハードウェア構成に含まれている各ハードウェア要素に対する負荷の変動パターンを決定する決定処理と、
前記確認処理で確認されたハードウェア構成に含まれている各ハードウェア要素を、前記決定処理で決定された変動パターンで動作させる動作処理と、
前記動作処理での前記各ハードウェア要素の動作が正常であるか否かを確認する動作確認処理とを前記情報処理装置に実行させることを特徴とする試験プログラム。
(付記2)
前記決定処理が、前記ハードウェア要素に対して予備的な動作を実行させることにより、該ハードウェア要素における実際の動作で生じる実際の負荷を確認し、各ハードウェア要素に対する負荷の変動パターンにおける具体的な負荷動作を、その確認した負荷に基づいて決定する処理であることを特徴とする付記1記載の試験プログラム。
(付記3)
前記決定処理が、負荷の変動パターンにおける変動タイミングとして、複数の定期的な変動タイミングの組み合わせであって該変動タイミング相互では変動が非同期となるような組み合わせを用い、該組み合わせに含まれる各変動タイミングを各ハードウェア要素に割り当てる処理であることを特徴とする付記1または2記載の試験プログラム。
(付記4)
情報処理装置で実行されることにより試験対象装置を試験的に動作させる試験方法において、
前記試験対象装置のハードウェア構成を確認する構成確認処理と、
前記構成確認処理で確認されたハードウェア構成に基づいて、該ハードウェア構成に含まれている各ハードウェア要素に対する負荷の変動パターンを決定する決定処理と、
前記構成確認処理で確認されたハードウェア構成に含まれている各ハードウェア要素を、前記決定処理で決定された変動パターンで動作させる動作処理と、
前記動作処理での前記各ハードウェア要素の動作が正常であるか否かを確認する動作確認処理とを有することを特徴とする試験方法。
(付記5)
前記決定処理が、前記ハードウェア要素に対して予備的な動作を実行させることにより、該ハードウェア要素における実際の動作で生じる実際の負荷を確認し、各ハードウェア要素に対する負荷の変動パターンにおける具体的な負荷動作を、その確認した負荷に基づいて決定する処理であることを特徴とする付記4記載の試験方法。
(付記6)
前記決定処理が、負荷の変動パターンにおける変動タイミングとして、複数の定期的な変動タイミングの組み合わせであって該変動タイミング相互では変動が非同期となるような組み合わせを用い、該組み合わせに含まれる各変動タイミングを各ハードウェア要素に割り当てる処理であることを特徴とする付記4または5記載の試験方法。