(57)【特許請求の範囲】
【請求項１】
処理要求が入力される検証対象システムであって前記検証対象システムに入力された処理要求を一つずつ処理する少なくとも一つのイベント処理タスクと前記検証対象システムに入力された処理要求を一つ以上まとめて処理する少なくとも一つの周期処理タスクとを所定の処理順序で組み合わせた複数の処理タスクによって前記処理要求に対する処理を行う検証対象システムを定義するデータとして、前記複数の処理タスクの処理タスク毎の処理時間と、前記複数の処理タスクに含まれる周期処理タスク毎の起動周期とを指定する性能検証モデルを記憶する性能検証モデル記憶部と、
前記複数の処理タスクを模擬するための複数の模擬タスクを前記性能検証モデルに基づいて動作させるシミュレーション部と、
前記シミュレーション部による前記複数の模擬タスクの動作結果に基づいて前記検証対象システムの性能値を算出する性能値算出部と
を備えることを特徴とするシステム性能検証装置。
【請求項２】
前記システム性能検証装置は、さらに、
前記検証対象システムの性能の要求値を記憶する要求値記憶部と、
前記性能値算出部によって算出された性能値と前記要求値記憶部に記憶される要求値とを比較し、比較結果を出力する性能評価部とを備える
ことを特徴とする請求項１記載のシステム性能検証装置。
【請求項３】
前記シミュレーション部は、
前記複数の模擬タスクのうち先頭の模擬タスクに対して複数の処理要求を所定のタイミングで発生させ、発生させた処理要求毎に当該処理要求を発生させた発生時刻を記録し、
前記複数の模擬タスクのうちイベント処理タスクを模擬するための各イベント模擬タスクを各イベント模擬タスクの処理時間の経過毎に起動し、発生させた処理要求のうち起動したイベント模擬タスクによる処理を待つ処理要求が一つ以上存在する場合に当該処理要求に対する処理を当該起動したイベント模擬タスクに当該処理時間の経過毎に一つずつシミュレートさせ、
前記複数の模擬タスクのうち周期処理タスクを模擬するための各周期模擬タスクを当該周期模擬タスクの当該起動周期で起動し、発生させた処理要求のうち起動した周期模擬タスクによる処理を待つ処理要求が一つ以上存在する場合に当該一つ以上の処理要求に対する処理を当該起動した周期模擬タスクに当該起動周期毎にまとめてシミュレートさせ、
発生させた処理要求毎に、前記複数の模擬タスクのうち最終の模擬タスクによる処理が終了した終了時刻を記録し、
前記性能値算出部は、
前記シミュレーション部によって処理要求毎に記録された発生時刻と終了時刻とに基づいて、前記検証対象システムに処理要求が入力されてから、入力された処理要求に対する処理が終了するまでの外部応答時間を前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項１または請求項２記載のシステム性能検証装置。
【請求項４】
前記性能値算出部は、前記外部応答時間から前記複数の処理タスクの合計の処理時間を差し引いて得られる待ち時間を前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項３記載のシステム性能検証装置。
【請求項５】
前記性能値算出部は、前記待ち時間を前記複数の処理タスクの各処理タスクによる処理の開始待ち時間と各処理タスクの処理に伴うハードウェアによる処理待ち時間とを含む複数の時間に分けて算出する
ことを特徴とする請求項４記載のシステム性能検証装置。
【請求項６】
前記性能検証モデルは、前記複数の処理タスクのうち一つの処理タスクを入力側の処理タスクとして指定する共に、前記入力側の処理タスク以外の処理タスクであって前記入力側の処理タスクより後ろの処理タスクを出力側の処理タスクとして指定し、
前記シミュレーション部は、前記複数の模擬タスクのうち前記入力側の処理タスクを模擬するための入力側の模擬タスクに、処理要求毎に処理待ちの開始の時刻を入力時刻として記録させ、前記複数の模擬タスクのうち前記出力側の処理タスクを模擬するための出力側の模擬タスクに、処理要求毎に処理のシミュレートが終了した時刻を出力時刻として記録させ、
前記性能値算出部は、前記入力側の模擬タスクによって記録された各入力時刻と前記出力側の模擬タスクによって記録された各出力時刻とに基づいて、前記検証対象システムの前記入力側の処理タスクから前記出力側の処理タスクまでの処理に要するタスク間応答時間を前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項１から請求項５いずれかに記載のシステム性能検証装置。
【請求項７】
前記複数の模擬タスクの各模擬タスクは、処理待ちの処理要求を設定するための待ちキューを備え、
前記シミュレーション部は、前記複数の模擬タスクの各模擬タスクに、次の模擬タスクの待ちキューに処理要求を設定したときに当該待ちキューに設定されている処理要求の個数をキュー長として記録させ、
前記性能値算出部は、前記複数の模擬タスクの各模擬タスクによって記録された各キュー長に基づいて、前記検証対象システムの前記複数の処理タスクそれぞれのキュー長を前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項１から請求項６いずれかに記載のシステム性能検証装置。
【請求項８】
前記性能値算出部は、
前記シミュレーション部が前記複数の模擬タスクを動作させたシミュレーション時間と前記シミュレーション時間に処理された処理要求の個数とに基づいて、前記検証対象システムによる処理要求のスループットを前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項１から請求項７いずれかに記載のシステム性能検証装置。
【請求項９】
前記性能検証モデルは、前記複数の処理タスクの処理タスク毎に当該処理タスクが利用するハードウェアを指定し、
前記シミュレーション部は、前記複数の模擬タスクの各模擬タスクに、処理要求の処理をシミュレートするときに前記性能検証モデルが指定する当該ハードウェアの利用を記録させ、
前記性能値算出部は、前記複数の模擬タスクの各模擬タスクによる当該ハードウェアの利用の記録に基づいて、前記検証対象システムで使用される各ハードウェアの利用率を前記検証対象システムの性能値の一つとして算出する
ことを特徴とする請求項１から請求項８いずれかに記載のシステム性能検証装置。
【請求項１０】
前記検証対象システムは、新たな処理要求の処理の開始が前回の処理要求の処理の終了まで待たされない開放型の処理要求と、新たな処理要求の処理の開始が前回の処理要求の処理の終了まで待たされる閉鎖型の処理要求とが、前記処理要求として入力され、
前記性能検証モデルは、前記開放型の処理要求が前記検証対象システムに入力される入力周期を指定し、
前記シミュレーション部は、新たな開放型の処理要求を前記性能検証モデルに指定される前記入力周期で発生させ、新たな閉鎖型の処理要求を前回の閉鎖型の処理要求の処理の終了毎に発生させる
ことを特徴とする請求項１から請求項９いずれかに記載のシステム性能検証装置。
【請求項１１】
前記性能検証モデルは、前記複数の処理タスクの処理タスク毎に、新たな処理要求の処理の開始を前回の処理要求の処理の終了まで待たないシグナル呼び出しと、新たな処理要求の処理の開始を前回の処理要求の処理の終了まで待つメソッド呼び出しとのいずれかの呼び出し方法を指定し、
前記シミュレーション部は、前記性能検証モデルに基づいて前記複数の模擬タスクの模擬タスク毎に前記性能検証モデルに基づいて前記シグナル呼び出しまたは前記メソッド呼び出しとのいずれかの呼び出し方法で動作させる
ことを特徴とする請求項１から請求項１０いずれかに記載のシステム性能検証装置。
【請求項１２】
前記シミュレーション部は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供するプロセス又はスレッドを前記処理タスクとして模擬するためのタスクを前記模擬タスクとして動作させる
ことを特徴とする請求項１から請求項１１いずれかに記載のシステム性能検証装置。
【請求項１３】
前記シミュレーション部は、通信チャネルを前記処理タスクとして模擬するためのタスクを前記模擬タスクとして動作させる
ことを特徴とする請求項１から請求項１１いずれかに記載のシステム性能検証装置。
【請求項１４】
前記性能検証モデルは、前記複数の処理タスクの処理タスク毎の処理時間として当該処理タスクの状態別に処理時間を指定し、
前記シミュレーション部は、前記複数の模擬タスクの模擬タスク毎に当該模擬タスクの状態に対応する処理時間で各処理要求に対する処理をシミュレートさせる
ことを特徴とする請求項１から請求項１３いずれかに記載のシステム性能検証装置。
【請求項１５】
前記性能検証モデルは、前記複数の処理タスクの処理タスク毎の処理時間を指定する情報として当該処理時間を算出するための処理数と処理速度とを含み、
前記シミュレーション部は、前記複数の模擬タスクの模擬タスク毎に当該処理数と当該処理速度とに基づく処理時間で各処理要求に対する処理をシミュレートさせる
ことを特徴とする請求項１から請求項１４いずれかに記載のシステム性能検証装置。
【請求項１６】
前記性能値算出部は、前記検証対象システムの性能の種類毎に平均値と最小値と最大値との少なくともいずれかについて性能値を算出する
ことを特徴とする請求項１から請求項１５いずれかに記載のシステム性能検証装置。
【請求項１７】
性能検証モデル記憶部とシミュレーション部と性能値算出部とを備えるシステム性能検証装置を用いるシステム性能検証方法であって、
前記性能検証モデル記憶部は、処理要求が入力される検証対象システムであって前記検証対象システムに入力された処理要求を一つずつ処理する少なくとも一つのイベント処理タスクと、前記検証対象システムに入力された処理要求を一つ以上まとめて処理する少なくとも一つの周期処理タスクと、を所定の処理順序で組み合わせた複数の処理タスクによって前記処理要求に対する処理を行う検証対象システムを定義するデータとして、前記複数の処理タスクの処理タスク毎の処理時間と、前記複数の処理タスクに含まれる周期処理タスク毎の起動周期と、を指定する性能検証モデルを記憶する記憶であり、
前記シミュレーション部が、前記複数の処理タスクを模擬するための複数の模擬タスクを前記性能検証モデルに基づいて動作させ、
前記性能値算出部が、前記シミュレーション部による前記複数の模擬タスクの動作結果に基づいて前記検証対象システムの性能値を算出する
ことを特徴とするシステム性能検証方法。
【請求項１８】
請求項１７記載のシステム性能検証方法をコンピュータに実行させるためのシステム性能検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、検証対象システムの性能を検証するシステム性能検証装置、システム性能検証方法およびシステム性能検証プログラムに関するものである。
【背景技術】
【０００２】
組込みリアルタイムシステムは、計算機とコンソールからなる制御装置を中心にセンサ装置と駆動装置を備え、外部環境に対して適切な制御をかける。
近年の多機能・高性能の要求を実現するため、複数のシステムをネットワーク接続して運用することによって、システム単体での機能・性能の限界を克服する取り組みが盛んである。
以降では、組込みリアルタイムシステムをネットワークシステムで接続した形態を統合システムと呼ぶ。
【０００３】
統合システムは、複数のシステムをネットワーク接続して運用しながら全体としてはあたかも一つのシステムとして機能・性能を提供する必要がある。そのため、統合システムは、ネットワークを介した場合でもリアルタイムで動作することを特徴とする。
【０００４】
統合システムの実開発では、既に以下の点が課題になっている。
（１）実運用でのシステム構成（制御装置、センサ装置、駆動装置、通信装置など）が大規模であり、出荷前に実運用と同等の試験環境を整えるのが難しい。そのため、実運用の構成を想定した性能測定が困難である。
（２）システム設計段階でハードウェアの仕様（プロセッサ、通信メディアの処理速度や多重度など）およびソフトウェアの仕様が確定し、個別の開発が始まる。そのため、試験段階で性能要求の未達成が分かっても、ハードウェアを増設して対処することは困難である。
（３）低コストで多機能化を実現するため、多数のソフトウェアが一つのハードウェアに搭載される。そのため、多数のソフトウェアから性能のボトルネックとなるソフトウェアを特定するためには時間がかかる。
（４）システム内部やシステム間でメッセージを送受信する際に、負荷状況によって待ち時間が変動する。そのため、ソフトウェアおよびハードウェアの単体の処理性能を単純に積み上げただけでは性能を見積もることができない。
【０００５】
上記課題は開発プロセス上のソフトウェア・ハードウェア開発以降の下流工程に集中している。そのため、上記課題に対して上流工程のシステム設計で対処することが求められており、システム設計の段階で実運用の構成を想定した性能を見積もる必要がある。
具体的には、ソフトウェアの機能分担とハードウェアの割当を決定する際に、タスク構成（イベント処理タスク、周期処理タスク）、メッセージ送受信（シグナル送受信、メソッド呼び出し）、ハードウェア構成、性能計算の粒度という、性能に影響を及ぼす設計情報を用いて性能検証を行う技術が必要である。
【０００６】
従来の性能検証技術としては、待ち行列シミュレーション（例えば特許文献１、特許文献２、非特許文献１）、待ち行列理論（例えば非特許文献２）、ＲＭＡ（Ｒａｔｅ  Ｍｏｎｏｔｏｎｉｃ  Ａｎａｌｙｓｉｓ）（例えば、非特許文献３）が用いられることが多い。
【０００７】
これら従来技術の特徴を以下に示す。
・待ち行列シミュレーションは、「複数のイベント処理タスク、お互いにシグナル送受信あり、複数ハードウェア構成」または「複数の周期処理タスク、それぞれ独立に並行実行、複数ハードウェア構成」の場合の性能を計算できる。
・待ち行列理論は、「複数のイベント処理タスク、お互いにシグナル送受信あり、複数ハードウェア構成」の場合の性能を計算できる。しかし、周期処理タスクには対応していない。
・ＲＭＡは、「複数の周期処理タスク、それぞれ独立に並行実行、単一ハードウェア構成」の場合の性能を計算できる。しかし、シグナル送受信や複数ハードウェア構成には対応していない。
【０００８】
また、従来技術の計算手法と適用範囲は以下のとおりである。
・待ち行列シミュレーションは統計的手法に分類され、計算結果は誤差範囲を持ったものとなる。適用対象の動作を計算機上で模擬するので、実際の統合システムに適用する場合でも大規模・複雑な仕様を直接扱いやすい。
・待ち行列理論およびＲＭＡは解析的手法に分類され、計算結果は誤差範囲のない確定値となる。適用対象を数式で厳密に表現しなければならないため、実際の統合システムに適用する場合はその仕様を抽象化または限定する必要がある。
【０００９】
従来技術は以下のような課題を有する。
・待ち行列シミュレーションは、イベント処理タスクと周期処理タスクとの混在には対応していない。
・待ち行列理論は、周期処理タスクに対応していない。また、待ち行列理論は、実システムの仕様を抽象化または限定する必要がある。
・ＲＭＡは、シグナル送受信や複数のハードウェアの構成には対応していない。また、ＲＭＡは、実システムの仕様を抽象化または限定する必要がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１０−１４３４００号公報
【特許文献２】特開２００３−１７７９４３号公報
【非特許文献】
【００１１】
【非特許文献１】森戸  晋、逆瀬川浩孝  著、「システムシミュレーション」朝倉書店、２０００年発行
【非特許文献２】秋丸春夫、川島幸之助  著、「情報通信トラヒック−基礎と応用−」オーム社、１９９０年発行
【非特許文献３】Ｃ．  Ｌ．  Ｌｉｕ，  ”Ｓｃｈｅｄｕｌｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｇｒａｍｍｉｎｇ  ｉｎ  ａ  Ｈａｒｄ−Ｒｅａｌ−Ｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ，”  Ｊｏｕｒｎａｌ  ｏｆ  ＡＣＭ，  Ｖｏｌ．２０，  Ｎｏ．１，  ｐｐ．４６−６１，  Ｊａｎｕａｒｙ  １９７３．
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、例えば、イベント処理タスクと周期処理タスクとが混在する検証対象システムの性能を検証できるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明のシステム性能検証装置は、
処理要求が入力される検証対象システムであって前記検証対象システムに入力された処理要求を一つずつ処理する少なくとも一つのイベント処理タスクと前記検証対象システムに入力された処理要求を一つ以上まとめて処理する少なくとも一つの周期処理タスクとを所定の処理順序で組み合わせた複数の処理タスクによって前記処理要求に対する処理を行う検証対象システムを定義するデータとして、前記複数の処理タスクの処理タスク毎の処理時間と、前記複数の処理タスクに含まれる周期処理タスク毎の起動周期とを指定する性能検証モデルを記憶する性能検証モデル記憶部と、
前記複数の処理タスクを模擬するための複数の模擬タスクを前記性能検証モデルに基づいて動作させるシミュレーション部と、
前記シミュレーション部による前記複数の模擬タスクの動作結果に基づいて前記検証対象システムの性能値を算出する性能値算出部とを備える。
【発明の効果】
【００１４】
本発明によれば、例えば、イベント処理タスクと周期処理タスクとが混在する検証対象システムの性能を検証することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１におけるシステム性能検証装置１００の構成図。
【図２】実施の形態１における検証対象システムの設計情報の一例を示す表。
【図３】実施の形態１における性能検証モデル２００を構成する要素の一例を示す表。
【図４】実施の形態１における性能検証モデル２００の一例を示す概要図。
【図５】実施の形態１における性能検証モデル２００の負荷入力が開放型の負荷入力である場合のメッセージの流れを示す図。
【図６】実施の形態１における性能検証モデル２００の負荷入力が閉鎖型の負荷入力である場合のメッセージの流れを示す図。
【図７】実施の形態１における検証対象システムの性能の指標値の一例を示す表。
【図８】実施の形態１における検証対象システムの性能の指標値の具体例を示す図。
【図９】実施の形態１におけるシステム性能検証装置１００のシステム性能検証方法を示すフローチャート。
【図１０】実施の形態１におけるシステム性能検証装置１００のシステム性能検証方法を示すフローチャート。
【図１１】実施の形態１におけるタスク起動処理（Ｓ１２０）を示すフローチャート。
【図１２】実施の形態１におけるメッセージ送信処理（Ｓ１４０）を示すフローチャート。
【図１３】実施の形態１におけるシステム性能検証装置１００のハードウェア資源の一例を示す図。
【図１４】実施の形態３におけるタスクの追加属性を示す表。
【図１５】実施の形態４におけるタスクの追加属性およびハードウェアの追加属性を示す表。
【図１６】実施の形態５における検証対象システムの待ち時間についての指標値を示す表。
【発明を実施するための形態】
【００１６】
実施の形態１．
イベント処理タスクと周期処理タスクとが混在する検証対象システムの性能を検証する形態について説明する。
【００１７】
図１は、実施の形態１におけるシステム性能検証装置１００の構成図である。
実施の形態１におけるシステム性能検証装置１００の構成について、図１に基づいて説明する。
【００１８】
システム性能検証装置１００は、性能検証モデル２００に基づいて検証対象システムの動作をシミュレーションし、検証対象システムの性能を評価する装置である。
【００１９】
検証対象システムは性能を検証する対象のシステムである。
例えば、検証対象システムは、単独の装置、複数の装置を備える単独のシステムまたは複数のシステムを備える統合システムである。
また、組込みリアルタイムシステムをネットワークシステムで接続した統合システムは、検証対象システムの一例である。
【００２０】
性能検証モデル２００は、検証対象システムの動作に関する情報を定義したデータである。
【００２１】
システム性能検証装置１００は、シミュレーション部１１０、指標値算出部１２０、性能評価部１３０、性能検証モデル作成部１４０、性能要求値作成部１５０および装置記憶部１９０を備える。図中に置いて装置記憶部１９０は複数に分けて記載しているが、装置記憶部１９０は１つの記憶部であっても複数の記憶部であってもどちらでも構わない。
【００２２】
シミュレーション部１１０は、性能検証モデル作成部１４０によって作成される性能検証モデル２００に基づいて検証対象システムの動作をシミュレーションする。
【００２３】
指標値算出部１２０は、シミュレーション部１１０によるシミュレーション結果に基づいて検証対象システムの性能の指標値２１０を算出する。
【００２４】
性能評価部１３０は、指標値算出部１２０によって算出される検証対象システムの性能の指標値２１０と性能要求値作成部１５０によって作成される性能要求値２２０とを比較して検証対象システムの性能を評価し、性能評価結果２３０を生成する。
【００２５】
性能検証モデル作成部１４０は、利用者の入力に従って検証対象システムの性能検証モデルを生成する。
【００２６】
性能要求値作成部１５０は、利用者の入力に従って検証対象システムの性能要求値２２０の情報を生成する。
【００２７】
装置記憶部１９０は、システム性能検証装置１００で使用するデータを記憶する。
例えば、装置記憶部１９０は、性能検証モデル２００、シミュレーション結果、指標値２１０、性能要求値２２０および性能評価結果２３０を記憶する。
【００２８】
図２は、実施の形態１における検証対象システムの設計情報の一例を示す表である。
図２に示すように、検証対象システムの設計情報として、タスク構成、イベント処理タスク、周期処理タスク、メッセージ送受信、シグナル送受信、メソッド呼び出し、ハードウェア構成、性能計算の粒度などが挙げられる。
【００２９】
利用者は、図２に示すような検証対象システムの設計情報に基づいて性能検証モデル２００の情報や性能要求値２２０をシステム性能検証装置１００に入力する。
【００３０】
以下に、図２の記載内容の補足説明を行う。
タスク構成は、検証対象システムで実行するタスクの種類を指定する情報である。例えば、検証対象システムは、イベント処理タスクおよび周期処理タスクを実行する。
イベント処理タスクは、メッセージ（処理要求）を一つずつ処理するタスクである。
周期処理タスクは、メッセージを一つ以上まとめて周期的に処理するタスクである。
メッセージ送受信は、検証対象システムのタスクの呼び出し方法を指定する情報である。例えば、タスクの呼び出し方法には、シグナル送受信およびメソッド呼び出しがある。
シグナル送受信は、次のタスクにメッセージを渡した後、そのメッセージに対する応答を待たずに次のメッセージの処理を開始する方法である。
メソッド呼び出しは、次のタスクにメッセージを渡した後、そのメッセージに対する応答を待って次のメッセージの処理を開始する方法である。
ハードウェア構成は、検証対象システムで使用するハードウェアを指定する情報である。例えば、検証対象システムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、入出力装置（キーボード、ディスプレイ、プリンタなど）、通信装置などのハードウェアを使用する。
性能計算の粒度は、検証対象システムの性能値の計算に関する情報である。
【００３１】
図３は、実施の形態１における性能検証モデル２００を構成する要素の一例を示す表である。
図３に示すように、性能検証モデル２００は、タスク、ハードウェア、負荷入力、測定点、シーケンス、時間情報などの要素を含む。
【００３２】
利用者は、性能検証モデル２００の情報として図３に示すような要素についての情報をシステム性能検証装置１００に入力する。
性能検証モデル作成部１４０は、利用者に入力された情報に従って性能検証モデル２００を生成する。
【００３３】
以下に、図３の記載内容の補足説明を行う。
タスクは、検証対象システムで動作するタスクに関する情報である。
タスクは、属性として、種別、処理時間、多重度、優先度、ロック、ハードウェア、キュー種別、起動周期などを有する。
種別は、タスクの種別（イベント処理タスクまたは周期処理タスク）を示す情報である。
処理時間は、タスクが一つのメッセージを処理するために要する時間である。
多重度は、並列に処理することが可能なタスクの数を示す情報である。
優先度は、複数のタスクが同じハードウェアを使用する場合に各タスクがハードウェアを使用することができる優先順位を指定する情報である。
ロックは、タスク間でデータ等の排他制御が必要か否かを示す情報である。
ハードウェアは、タスクの処理で使用するハードウェアを示す情報である。
キュー種別は、メッセージを待機させるための待ちキューからメッセージを取り出す方法（シグナル送受信またはメソッド呼び出し）を指定する情報である。
起動周期は、周期処理タスクを起動する周期である。
【００３４】
ハードウェアは、検証対象システムが備えるハードウェアに関する情報である。
ハードウェアは、属性として、多重度やプリエンプト可否などを有する。
多重度は、複数のタスクから要求があった場合に並列に処理することが可能なタスクの数を示す情報である。
プリエンプト可否は、優先度が低いタスクから要求があった後に優先度が高いタスクから要求があった場合に優先度が高いタスクからの要求を先に処理するか否かを示す情報である。
【００３５】
負荷入力は、検証対象システムに対する外部からの処理要求に関する情報である。
負荷入力は、属性として、種別、到着間隔、入力数、外部遅延などを有する。
種別は、負荷入力の種別（開放型または閉鎖型）を指定する情報である。開放型の負荷入力は前の負荷入力に対する応答を待たずに次の負荷入力を行う方法であり、閉鎖型の負荷入力は前の負荷入力に対する応答を待って次の負荷入力を行う方法である。
到着間隔は、開放型の負荷入力が発生する周期を示す情報である。
入力数は、検証対象システムに一度に入力する負荷入力の数である。
外部遅延は、閉鎖型の負荷入力で前の負荷入力に対する応答があったときから次の負荷入力が発生するまでの遅延時間を示す情報である。
【００３６】
測定点は、シミュレーションにおいて時刻を計測するタイミングに関する情報である。
【００３７】
シーケンスは、複数のタスクの動作順序（タスクの並び順）に関する情報である。シーケンスは制御フローともいう。
シーケンスは、属性としてメッセージ送受信を有する。
メッセージ送受信は、タスクの並び順やタスクの種別などを指定する情報である。
【００３８】
時間情報は、シミュレーションの時間に関する情報である。
時間情報は、属性として、時間の単位やシミュレーション終了時刻などを有する。
時間の単位は、シミュレーションを行う時間（以下、「シミュレーション時間」という）の単位（分、時、日、月など）を指定する情報である。
シミュレーション終了時刻は、シミュレーションを終了する時刻である。
【００３９】
図４は、実施の形態１における性能検証モデル２００の一例を示す概要図である。
実施の形態１における性能検証モデル２００の一例の概要について、図４に基づいて説明する。
【００４０】
性能検証モデル作成部１４０は、例えば、図４に示すような内容の性能検証モデル２００を生成する。
【００４１】
図４に示す性能検証モデル２００は、「イベント処理タスク１→周期処理タスク１→周期処理タスク２→イベント処理タスク２」の順番（シーケンス）で負荷入力を処理することを指定している。イベント処理タスク１および周期処理タスク１はハードウェア１を共用し、周期処理タスク２およびイベント処理タスク２はハードウェア２を共用する。
また、性能検証モデル２００は、イベント処理タスク１の待ちキューにメッセージが設定された時刻（測定点１）と、周期処理タスク１の待ちキューにメッセージが設定された時刻（測定点２）と、イベント処理タスク２の待ちキューにメッセージが設定された時刻（測定点３）とを記録することを指定している。また、性能検証モデル２００は、測定点１から測定点２までの時間および測定点２から測定点３までの時間（タスク間応答時間）を測定することを指定している。
負荷入力（イベント処理タスク１の待ちキューへのメッセージの設定、測定点１）の時刻から負荷入力の終端（イベント処理タスク２による処理の終了）の時刻までの時間が検証対象システムの「外部応答時間」に相当する。
【００４２】
図５は、実施の形態１における性能検証モデル２００の負荷入力が開放型の負荷入力である場合のメッセージの流れを示す図である。
性能検証モデル２００の負荷入力が開放型の負荷入力である場合のメッセージの流れについて、図５に基づいて説明する。図５において、タスクの呼び出し方法は、メッセージを渡した先のタスクからの応答を待たずに次のメッセージの処理を開始するシグナル送受信であるものとする。
【００４３】
開放型の負荷入力は、前の負荷入力に対する応答を待たずに所定の到着間隔毎に発生する。
イベント処理タスク１は、負荷入力のメッセージが待ちキューに設定される度に待ちキューからメッセージを取り出し、取り出したメッセージを処理し、周期処理タスク１を呼び出すためのメッセージを周期処理タスク１の待ちキューに設定する。
周期処理タスク１は、所定の起動周期毎に動作し、起動周期の間に待ちキューに設定された１以上のメッセージをまとめて処理し、処理したメッセージ毎に周期処理タスク２を呼び出すためのメッセージを周期処理タスク２の待ちキューに設定する。また、周期処理タスク１は、メッセージ毎にイベント処理タスク１への応答を行う。
周期処理タスク２は、所定の起動周期毎に動作し、起動周期の間に待ちキューに設定された１以上のメッセージをまとめて処理し、処理したメッセージ毎にイベント処理タスク２を呼び出すためのメッセージをイベント処理タスク２の待ちキューに設定する。また、周期処理タスク２は、メッセージ毎に周期処理タスク１への応答を行う。
イベント処理タスク２は、負荷入力のメッセージが待ちキューに設定される度に待ちキューからメッセージを取り出し、取り出したメッセージを処理し、処理結果を出力する。また、イベント処理タスク２は、メッセージ毎に周期処理タスク２への応答を行う。
【００４４】
図６は、実施の形態１における性能検証モデル２００の負荷入力が閉鎖型の負荷入力である場合のメッセージの流れを示す図である。
性能検証モデル２００の負荷入力が閉鎖型の負荷入力である場合のメッセージの流れについて、図６に基づいて説明する。図６において、タスクの呼び出し方法は、メッセージを渡した先のタスクからの応答を待って次のメッセージの処理を開始するメソッド呼び出しであるものとする。
【００４５】
閉鎖型の負荷入力は、前の負荷入力に対する応答を待った後、所定の外部遅延の時間が経過したときに発生する。
イベント処理タスク１は、負荷入力のメッセージが待ちキューに設定されると待ちキューからメッセージを取り出し、取り出したメッセージを処理し、周期処理タスク１を呼び出すためのメッセージを周期処理タスク１の待ちキューに設定する。そして、イベント処理タスク１は、周期処理タスク１から応答があった後（周期処理タスク１から制御が戻った後）に次のメッセージを待ちキューから取り出す。
周期処理タスク１は、所定の起動周期毎に動作し、起動周期の間に待ちキューに設定された１以上のメッセージをまとめて処理し、処理したメッセージ毎に周期処理タスク２を呼び出すためのメッセージを周期処理タスク２の待ちキューに設定する。そして、周期処理タスク１は、周期処理タスク２から各メッセージに対する応答がある度にイベント処理タスク１への応答を行う。また、周期処理タスク１は、周期処理タスク２から全てのメッセージに対する応答があった後に待ちキューから新たに１以上のメッセージを取り出す。
周期処理タスク２は、所定の起動周期毎に動作し、起動周期の間に待ちキューに設定された１以上のメッセージをまとめて処理し、処理したメッセージ毎に周期処理タスク２を呼び出すためのメッセージを周期処理タスク２の待ちキューに設定する。そして、周期処理タスク１は、イベント処理タスク２から各メッセージに対する応答がある度に周期処理タスク１への応答を行う。また、周期処理タスク２は、イベント処理タスク２から全てのメッセージに対する応答があった後に待ちキューから新たに１以上のメッセージを取り出す。
イベント処理タスク２は、負荷入力のメッセージが待ちキューに設定されると待ちキューからメッセージを取り出し、取り出したメッセージを処理し、処理結果を出力する。また、イベント処理タスク２は、メッセージに対する処理が終了した場合、周期処理タスク２への応答を行う。そして、イベント処理タスク２は、待ちキューから次のメッセージを取り出す。
【００４６】
図７は、実施の形態１における検証対象システムの性能の指標値の一例を示す表である。
図７に示すように、検証対象システムの性能の指標値として、外部応答時間、タスク間応答時間、キュー長、サービス時間、利用率、待ち時間、スループットなどが挙げられる。
【００４７】
指標値算出部１２０は、シミュレーション結果に基づいて図７に示すような指標値を算出する。
利用者は、図７に示すような指標値について検証対象システムの性能要求値２２０をシステム性能検証装置１００に入力する。
性能評価部１３０は、利用者から入力された性能要求値２２０の情報を生成する。
【００４８】
以下に、図７の記載内容の補足説明を行う。
外部応答時間は、負荷入力が検証対象システムに入力されてから検証対象システムが負荷入力に対する処理結果を出力するまでの時間である。
タスク間応答時間は、メッセージが特定のタスクの待ちキューに設定されてからその特定のタスクまたは別のタスクでの処理が終了するまでの時間である。
キュー長は、タスクの待ちキューに設定された処理待ちの状態のメッセージの数である。
サービス時間は、タスクがメッセージを処理していた時間である。
利用率は、ハードウェアが使用された時間の割合である。
待ち時間は、他のタスクからの応答待ち、ハードウェアの空き待ち、メッセージの入力待ち、起動周期待ちなど、メッセージを処理するまでの時間である。
スループットは、検証対象システムが単位時間当たりに処理する負荷入力の数である。
【００４９】
図８は、実施の形態１における検証対象システムの性能の指標値の具体例を示す図である。
実施の形態１における検証対象システムの性能の指標値の具体例について、図８に基づいて説明する。
【００５０】
図８において、負荷入力Ａは「タスク１→タスク２」の順番で処理され、負荷入力Ｂは「タスク２→タスク１」の順番で処理されるものとする。
【００５１】
負荷入力Ａが検証対象システムに入力された場合、負荷入力Ａはタスク１で処理された後、タスク２で処理され、検証対象システムから負荷入力Ａの処理結果が出力される。
負荷入力Ａが入力されてから負荷入力Ａの処理結果が出力されるまでの時間が、負荷入力Ａに対する検証対象システムの外部応答時間である。
また、タスク１が負荷入力Ａに対する処理をしていた時間が負荷入力Ａに対するタスク１の処理時間であり、タスク２が負荷入力Ａに対する処理をしていた時間が負荷入力Ａに対するタスク２の処理時間である。
タスク１またはタスク２において負荷入力Ａに対する待ち時間が無かった場合、検証対象システムの外部応答時間は、タスク１のサービス時間とタスク２のサービス時間とを合計した時間に等しい。
【００５２】
負荷入力Ｂが検証対象システムに入力された場合、負荷入力Ｂはタスク２で処理された後、タスク１で処理され、検証対象システムから負荷入力Ｂの処理結果が出力される。但し、タスク２が負荷入力Ｂに対する処理を終了したときにタスク１が負荷入力Ａに対する処理をしている場合、タスク１が負荷入力Ａに対する処理を終了するまで、負荷入力Ｂについて待ち時間が発生する。
負荷入力Ｂが入力されてから負荷入力Ｂの処理結果が出力されるまでの時間が、負荷入力Ｂに対する検証対象システムの外部応答時間である。
また、タスク２が負荷入力Ｂに対する処理をしていた時間が負荷入力Ｂに対するタスク２の処理時間であり、タスク１が負荷入力Ｂに対する処理をしていた時間が負荷入力Ｂに対するタスク１の処理時間である。
このとき、検証対象システムの外部応答時間は、タスク２のサービス時間とタスク１での待ち時間とタスク１のサービス時間とを合計した時間に等しい。
【００５３】
図９および図１０は、実施の形態１におけるシステム性能検証装置１００のシステム性能検証方法を示すフローチャートである。
実施の形態１におけるシステム性能検証装置１００のシステム性能検証について、図９および図１０に基づいて説明する。
【００５４】
以下、イベント処理タスクと周期処理タスクとを区別する必要が無い場合、単に「タスク」という。
また、シグナル送受信とメソッド呼び出しとを区別する必要が無い場合、待ちキューにメッセージを設定する動作がタスクの呼び出しを意味するものとする。以下、待ちキューにメッセージを設定することを「メッセージの送信」ともいう。
【００５５】
シミュレーション時の時刻および時間は、現実の時刻および時間とは異なる論理的なものである。
【００５６】
Ｓ１０１において、シミュレーション部１１０は、性能検証モデル作成部１４０によって生成された性能検証モデル２００を装置記憶部１９０から読み出す。
シミュレーション部１１０は、シミュレーションのための初期化処理を行う。
【００５７】
例えば、シミュレーション部１１０は、以下のような初期化処理を行う。
・シミュレーション部１１０は、負荷入力の送信時刻やタスクの起動時刻などの時刻を管理するための管理テーブルを初期化する。
・シミュレーション部１１０は、外部応答時間やサービス時間などの指標値を初期化する。
・シミュレーション部１１０は、性能検証モデル２００に指定されているタスク（検証対象システムで動作するタスクを模擬するためのタスク）を生成し、生成したタスクの初期化（例えば、待ちキューの初期化）を行う。
・シミュレーション部１１０は、ロックやハードウェアを模擬するための管理テーブルを初期化する。
・シミュレーション部１１０は、シミュレーションの開始時刻を記録する。
Ｓ１０１の後、Ｓ１０２に進む。
【００５８】
Ｓ１０２において、シミュレーション部１１０は、開放型または閉鎖型の負荷入力の送信時刻であるか否かを判定する。
負荷入力の送信時刻である場合（ＹＥＳ）、Ｓ１１０に進む。
負荷入力の送信時刻でない場合（ＮＯ）、Ｓ１２０に進む。
【００５９】
Ｓ１１０において、シミュレーション部１１０は、性能検証モデル２００に指定されている情報に従って性能検証モデル２００に指定された入力数分の負荷入力について負荷入力のメッセージを制御フローの先頭のタスクに送信する。
【００６０】
さらに、シミュレーション部１１０は、負荷入力のメッセージを送信する次回の時刻（以下、「次回の送信時刻」という）を以下のように設定する。設定とは、所定の記憶領域（例えば、管理テーブル）に情報を記憶することを意味する（以下同様）。
・負荷入力が開放型の負荷入力である場合、シミュレーション部１１０は、開放型の負荷入力の次回の送信時刻として、現在時刻から性能検証モデル２００に指定された到着間隔（時間）が経過したときの時刻を設定する。
・負荷入力が閉鎖型の負荷入力である場合、シミュレーション部１１０は、前回に送信した閉鎖型の負荷入力のメッセージについて先頭のタスクから応答が出力されたときに、閉鎖型の負荷入力の次回の送信時刻を設定する。閉鎖型の負荷入力の次回の送信時刻は、先頭のタスクが応答を出力した応答時刻から性能検証モデル２００に指定された外部遅延（時間）が経過したときの時刻である。
Ｓ１１０の後、Ｓ１１１に進む。
【００６１】
Ｓ１１１において、シミュレーション部１１０は、Ｓ１１０で負荷入力のメッセージを送信した時刻を負荷入力の入力時刻として記録する。
また、シミュレーション部１１０は、先頭のタスクが性能検証モデル２００に測定点として指定されている場合、負荷入力の入力時刻と同じ時刻をこの測定点の入力時刻として記録する。
さらに、シミュレーション部１１０は、先頭のタスクの待ちキューに設定されているメッセージの数を先頭のタスクの待ちキューのキュー長として記録する。
Ｓ１１１の後、Ｓ１２０に進む。
【００６２】
Ｓ１２０において、シミュレーション部１１０は、起動時刻になったタスクを選択し、選択したタスクを起動する。
以下に、Ｓ１２０の詳細について説明する。
【００６３】
図１１は、実施の形態１におけるタスク起動処理（Ｓ１２０）を示すフローチャートである。
実施の形態１におけるタスク起動処理（Ｓ１２０）について、図１１に基づいて説明する。
【００６４】
Ｓ１２１において、シミュレーション部１１０は、起動時刻が現在時刻より以前の時刻を示すタスクのうち起動時刻が最も早いタスクを選択する。
選択したタスクが複数ある場合、シミュレーション部１１０は、性能検証モデル２００に指定された各タスクの優先度に従って優先度が最も高いタスクを選択する。
但し、選択したタスクと同じ種類のタスクが性能検証モデル２００に指定された多重度と同じ数だけ動作している場合、シミュレーション部１１０は他のタスクを選択する。
Ｓ１２１の後、Ｓ１２２に進む。
【００６５】
Ｓ１２２において、シミュレーション部１１０は、Ｓ１２１で選択したタスクを起動する。
以下、Ｓ１２２で起動したタスクを「起動タスク」という。
Ｓ１２２の後、Ｓ１２３に進む。
【００６６】
Ｓ１２３において、起動タスクは、自己の待ちキューからメッセージを取り出す。
起動タスクがイベント処理タスクである場合、起動タスクは待ちキューから先頭のメッセージを取り出す。
起動タスクが周期処理タスクである場合、起動タスクは待ちキューに設定されている全てのメッセージを取り出す。
Ｓ１２３の後、Ｓ１２４に進む。
【００６７】
Ｓ１２４において、起動タスクは、性能検証モデル２００にロックが指定されているか否かを判定する。
ロックが指定されている場合（ＹＥＳ）、Ｓ１２５に進む。
ロックが指定されていない場合（ＮＯ）、Ｓ１２６に進む。
【００６８】
Ｓ１２５において、起動タスクは、Ｓ１２３で取り出したメッセージについてロックを設定する。
Ｓ１２５の後、Ｓ１２６に進む。
【００６９】
Ｓ１２６において、起動タスクは、自己に割り当てるハードウェア（以下、「割り当てハードウェア」）が性能検証モデル２００に指定されているか否かを判定する。
割り当てハードウェアが指定されている場合（ＹＥＳ）、Ｓ１２７に進む。
割り当てハードウェアが指定されていない場合（ＮＯ）、タスク起動処理（Ｓ１２０）は終了する。
【００７０】
Ｓ１２７において、起動タスクは、割り当てハードウェアを割り当てられているタスクの数が性能検証モデル２００に指定された割り当てハードウェアの多重度より少ない場合、割り当てハードウェアを自己に割り当てる設定を行う。
割り当てハードウェアを割り当てられているタスクの数が性能検証モデル２００に指定された割り当てハードウェアの多重度と同じ数である場合、起動タスクは、性能検証モデル２００に指定された優先度およびプリエンプト可否に基づいて、割り当てハードウェアを自己に割り当てることが可能であるか否かを判定する。割り当てハードウェアを自己に割り当てることが可能である場合、起動タスクは、割り当てハードウェアを自己に割り当てる設定を行う。
つまり、割り当てハードウェアを割り当てられているタスクの優先度が自己の優先度より低く、割り当てハードウェアについてプリエンプトが可能である場合、起動タスクは割り当てハードウェアの割り当て先を優先度が低いタスクから自己のタスクに切り替える設定を行う。
Ｓ１２７により、タスク起動処理（Ｓ１２０）は終了する。
【００７１】
図９に戻り、システム性能検証方法の説明を続ける。
Ｓ１２０の後、Ｓ１３０に進む。
【００７２】
Ｓ１３０について説明する。
Ｓ１２０で起動された起動タスクがイベント処理タスクである場合、Ｓ１３１に進む。
Ｓ１２０で起動された起動タスクが周期処理タスクである場合、Ｓ１３２に進む。
【００７３】
Ｓ１３１において、起動タスク（イベント処理タスク）は、性能検証モデル２００で指定された処理時間を自己のサービス時間に加算する。
起動タスクは、自己が起動する次回の時刻（以下、「次回の起動時刻」という）として、現在時刻から性能検証モデル２００に指定された処理時間が経過したときの時刻を設定する。
Ｓ１３１の後、Ｓ１３３に進む。
【００７４】
Ｓ１３２において、起動タスク（周期処理タスク）は、Ｓ１２３で取り出したメッセージ分の処理時間を自己のサービス時間に加算する。メッセージ分の処理時間とは、メッセージの数と処理時間とを掛け合わせた時間である。
起動タスクは、次回の起動時刻として、現在時刻から性能検証モデル２００に指定された起動周期が経過したときの時刻を設定する。
Ｓ１３２の後、Ｓ１３３に進む。
【００７５】
Ｓ１３３において、シミュレーション部１１０は、少なくともいずれかのタスクが割り当てられているハードウェアを記録する。
Ｓ１３３の後、Ｓ１４０に進む。
【００７６】
Ｓ１４０において、起動タスクは、次のタスクにメッセージを送信する。
以下に、Ｓ１４０の詳細について説明する。
【００７７】
図１２は、実施の形態１におけるメッセージ送信処理（Ｓ１４０）を示すフローチャートである。
実施の形態１におけるメッセージ送信処理（Ｓ１４０）について、図１２に基づいて説明する。
【００７８】
Ｓ１４１において、起動タスクは、自己のタスクについてメッセージのロックが管理テーブルに設定されているか否かを判定する。
メッセージのロックが設定されている場合（ＹＥＳ）、Ｓ１４２に進む。
メッセージのロックが設定されていない場合（ＮＯ）、Ｓ１４３に進む。
【００７９】
Ｓ１４２において、起動タスクは、自己のタスクについてのメッセージのロックの解放を管理テーブルに設定する。
Ｓ１４２の後、Ｓ１４３に進む。
【００８０】
Ｓ１４３において、起動タスクは、自己のタスクについてハードウェアの割り当てが管理テーブルに設定されているか否かを判定する。
ハードウェアの割り当てが設定されている場合（ＹＥＳ）、Ｓ１４４に進む。
ハードウェアの割り当てが設定されていない場合（ＮＯ）、Ｓ１４５に進む。
【００８１】
Ｓ１４４において、起動タスクは、自己のタスクについてのハードウェアの割り当ての解放を管理テーブルに設定する。
Ｓ１４４の後、Ｓ１４５に進む。
【００８２】
Ｓ１４５において、起動タスクは、性能検証モデル２００に指定されている次のタスクにメッセージを送信する。但し、起動タスクが制御フローの最後のタスクである場合、次のタスクへのメッセージの送信は不要である。
起動タスクは、次のタスクの待ちキューに設定されているメッセージの数を次のタスクの待ちキューのキュー長として記録する。
起動タスクは、次のタスクが性能検証モデル２００に測定点として指定されている場合、メッセージを送信した時刻をこの測定点の入力時刻および出力時刻として記録する。
Ｓ１４５の後、Ｓ１４６に進む。
【００８３】
Ｓ１４５の後、各タスクは、以下のように動作する。
起動タスクがメソッド呼び出しのタスクであって次のタスクがシグナル送受信のタスクである場合、または起動タスクがメソッド呼び出しのタスクであると共に最後のタスクである場合、起動タスクは前のタスクに応答を行って停止し、制御は起動タスクから前のタスクに戻る。また、前のタスクがメソッド呼び出しのタスクである場合、前のタスクはさらに前のタスクに応答を行って停止し、制御は前のタスクからさらに前のタスクに戻る。また、さらに前のタスクに制御が戻った後も同様である。
起動タスクがシグナル送受信のタスクであって次のタスクがシグナル送受信のタスクである場合、または起動タスクがシグナル送受信のタスクであると共に最後のタスクである場合、起動タスクは停止する。
【００８４】
Ｓ１４６において、起動タスクは、性能検証モデル２００に指定された次のタスクの呼び出し方法がメソッド呼び出しであるか否かを判定する。
次のタスクの呼び出し方法がメソッド呼び出しである場合（ＹＥＳ）、Ｓ１４７に進む。
次のタスクの呼び出し方法がメソッド呼び出しでない場合（ＮＯ）、メッセージ送信処理（Ｓ１４０）は終了する。
【００８５】
Ｓ１４７において、起動タスクは、Ｓ１４５で送信したメッセージに対する応答が次のタスクから戻ってくるまで待機し、次のタスクから応答が戻ってきたときに停止する。但し、起動タスクがメソッド呼び出しのタスクである場合、起動タスクは、前のタスクに応答を行って停止する。
このとき、次のタスクは、さらに次のタスクの呼び出し方法がメソッド呼び出しである場合、さらに次のタスクから応答が戻ってくるまで待機する。さらに次のタスクについても同様である。このように、制御フローにおいてメソッド呼び出しはタスクの呼び出し関係を入れ子の関係にする。
Ｓ１４７により、メッセージ送信処理（Ｓ１４０）は終了する。
【００８６】
図９に戻り、システム性能検証方法の説明を続ける。
Ｓ１４０の後、Ｓ１５０に進む。
【００８７】
Ｓ１５０において、シミュレーション部１１０は、少なくともいずれかの負荷入力に対する制御フローが終了したか否かを判定する。制御フローの終了とは、最後のタスクが待ちキューからメッセージを取り出して停止することである。但し、先頭のタスクがメソッド呼び出しである場合には先頭のタスクから応答が戻ってくることである。
少なくともいずれかの負荷入力に対する制御フローが終了した場合（ＹＥＳ）、Ｓ１５１に進む。
いずれの負荷入力に対する制御フローも終了していない場合（ＮＯ）、Ｓ１５２に進む。
【００８８】
Ｓ１５１において、シミュレーション部１１０は、制御フローが終了した時刻を負荷入力の出力時刻として記録する。
また、シミュレーション部１１０は、制御フローの終了時が性能検証モデル２００に測定点として指定されている場合、制御フローが終了した時刻をこの測定点の出力時刻として記録する。
Ｓ１５１の後、Ｓ１５２に進む。
【００８９】
Ｓ１５２において、シミュレーション部１１０は、シミュレーションを開始してからシミュレーション時間が経過したか否かを判定する。
シミュレーション時間が経過した場合（ＹＥＳ）、シミュレーション部１１０はシミュレーションを終了する。処理はＳ１６０に進む。
シミュレーション時間が経過していない場合（ＮＯ）、Ｓ１０２に戻る。
【００９０】
Ｓ１６０において、指標値算出部１２０は、シミュレーション部１１０によるシミュレーション（Ｓ１０１からＳ１５２）の結果に基づいて、検証対象システムの性能の指標値２１０を算出する。
例えば、指標値算出部１２０は、以下のような性能項目の値について指標値２１０を算出する。このとき、指標値算出部１２０は、シミュレーションで負荷入力毎およびタスク毎に得られた結果を統計処理することにより、各性能項目の値の中心値（平均値）±誤差を指標値２１０として算出する。また、指標値算出部１２０は、性能検証モデル２００に指定された時間の単位を用いる。
・外部応答時間は、「負荷入力の出力時刻−負荷入力の入力時刻」の時間である。
・タスク間応答時間は、「測定点の出力時刻−測定点の入力時刻」の時間である。
・キュー長は、タスクへのメッセージ送信時のキュー長（タスクの待ちキューに溜まるメッセージの数）である。
・サービス時間は、タスクでのメッセージ処理時の処理時間の累積（タスクの処理時間を累積した時間）である。
・利用率は、タスクでのメッセージ処理時のハードウェアの利用数（単位時間当たりのハードウェアの割り当て回数）である。
・待ち時間は、「外部応答時間−サービス時間」である。
・スループットは、「制御フローが終了した負荷入力の数÷シミュレーション時間」である。
Ｓ１６０の後、Ｓ１７０に進む。
【００９１】
Ｓ１７０において、性能評価部１３０は、性能要求値作成部１５０によって生成された性能要求値２２０の情報を装置記憶部１９０から取得する。
性能評価部１３０は、取得した情報が示す性能要求値２２０とＳ１６０で算出された指標値２１０とを比較し、比較結果に基づいて性能要求を満たす性能項目と性能要求を満たさない性能項目とを判定する。例えば、Ｓ１６０に示した性能項目のうち待ち時間以外の性能項目は指標値２１０が性能要求値２２０より小さい場合に性能要求を満し、待ち時間は指標値２１０が性能要求値２２０より大きい場合に性能要求を満たす。
性能評価部１３０は、判定結果を示す性能評価結果２３０を生成し、生成した性能評価結果２３０を出力（ディスプレイへの表示など）する。
Ｓ１７０により、システム性能検証方法の処理は終了する。
【００９２】
図１３は、実施の形態１におけるシステム性能検証装置１００のハードウェア資源の一例を示す図である。
図１３において、システム性能検証装置１００（コンピュータの一例）は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、通信ボード９０５（通信装置）、ディスプレイ９１１（表示装置）、キーボード９１２、マウス９１３、ドライブ９１４、磁気ディスク装置９２０などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ
Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
ＲＯＭ９０３、ＲＡＭ９０４、磁気ディスク装置９２０およびドライブ９１４は記憶装置の一例である。キーボード９１２、マウス９１３および通信ボード９０５は入力装置の一例である。ディスプレイ９１１および通信ボード９０５は出力装置の一例である。
【００９３】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００９４】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【００９５】
プログラム群９２２には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム（例えば、システム性能検証プログラム）は、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００９６】
ファイル群９２３には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００９７】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する実施の形態の処理はＣＰＵ９０１、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
【００９８】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００９９】
実施の形態１において、開放型の負荷入力、閉鎖型の負荷入力、イベント処理タスク、周期処理タスク、シグナル送受信、メソッド呼び出し、ハードウェアの割り当て等は、性能検証モデル２００に任意の組み合わせで定義して構わない。
【０１００】
実施の形態１により、例えば、以下のような効果を奏することができる。
・検証対象システムの内部にイベント処理と周期処理とが混在する場合に、周期処理での遅延時間を正確に模擬することで、高い精度で性能を計算することができる。
・検証対象システムの内部にシグナル送受信とメソッド呼び出しとが混在する場合に、メソッド呼び出しでの制御フローが戻るまでの遅延時間を正確に模擬することで、高い精度で性能を計算することができる。
【０１０１】
実施の形態１において、例えば、以下のようなシステム性能検証装置１００について説明した。括弧内に実施の形態で使用した名称を記載する。
システム性能検証装置１００は、性能検証モデル記憶部（装置記憶部１９０）と、シミュレーション部１１０と、性能値算出部（指標値算出部１２０）とを備える。
性能検証モデル記憶部は、検証対象システムを定義するデータとして、複数の処理タスクの処理タスク毎の処理時間と、複数の処理タスクに含まれる周期処理タスク毎の起動周期とを指定する性能検証モデル２００を記憶する。検証対象システムは、処理要求を一つずつ処理する少なくとも一つのイベント処理タスクと処理要求を一つ以上まとめて処理する少なくとも一つの周期処理タスクとを所定の処理順序で組み合わせた複数の処理タスク（制御フロー）によって処理要求に対する処理を行うシステムである。
シミュレーション部１１０は、複数の処理タスクを模擬するための複数の模擬タスクを性能検証モデル２００に基づいて動作させる。
性能値算出部は、シミュレーション部１１０による複数の模擬タスクの動作結果に基づいて検証対象システムの性能値（指標値２１０）を算出する。
【０１０２】
システム性能検証装置１００は、要求値記憶部（シミュレーション部１１０）と、性能評価部１３０とを備える。
要求値記憶部は、検証対象システムの性能の要求値（性能要求値２２０）を記憶する。
性能評価部は、性能値算出部によって算出された性能値と要求値記憶部に記憶される要求値とを比較し、比較結果（性能評価結果２３０）を出力する。
【０１０３】
シミュレーション部１１０は、複数の模擬タスクのうち先頭の模擬タスクに対して複数の処理要求（負荷入力）を所定のタイミングで発生させ、発生させた処理要求毎に当該処理要求を発生させた発生時刻（入力時刻）を記録する。
シミュレーション部１１０は、複数の模擬タスクのうちイベント処理タスクを模擬するための各イベント模擬タスクを各イベント模擬タスクの処理時間の経過毎に起動する。シミュレーション部１１０は、発生させた処理要求のうち起動したイベント模擬タスクによる処理を待つ処理要求が一つ以上存在する場合に、当該処理要求に対する処理を当該起動したイベント模擬タスクに当該処理時間の経過毎に一つずつシミュレート（時刻の記録、メッセージの送信など）させる。
シミュレーション部１１０は、複数の模擬タスクのうち周期処理タスクを模擬するための各周期模擬タスクを当該周期模擬タスクの当該起動周期で起動する。シミュレーション部１１０は、発生させた処理要求のうち起動した周期模擬タスクによる処理を待つ処理要求が一つ以上存在する場合に、当該一つ以上の処理要求に対する処理を当該起動した周期模擬タスクに当該起動周期毎にまとめてシミュレートさせる。
シミュレーション部１１０は、発生させた処理要求毎に、複数の模擬タスクのうち最終の模擬タスクによる処理が終了した終了時刻（出力時刻）を記録する。
性能値算出部は、シミュレーション部１１０によって処理要求毎に記録された発生時刻と終了時刻とに基づいて、検証対象システムに処理要求が入力されてから、入力された処理要求に対する処理が終了するまでの外部応答時間を検証対象システムの性能値の一つとして算出する。
【０１０４】
実施の形態２．
実施の形態１では、特に、複数の組込みリアルタイムシステムをネットワークシステムで接続した統合システムを検証対象にする場合を説明した。
本実施の形態では、統合システムを構成する組込みリアルタイムシステムとネットワークシステムとのそれぞれを単独で検証対象にする場合について説明する。
【０１０５】
まず、組込みリアルタイムシステムを検証対象にする場合について説明する。
性能検証モデル２００は、タスクとして、ＯＳが提供するプロセスまたはスレッドを定義する。
性能検証モデル２００は、ハードウェアとして、各種プロセッサ（ＣＰＵ、ＤＳＰ、マイコンなど）を定義する。
性能検証モデル２００は、シグナル送受信として、プロセスまたはスレッド間の非同期通信を定義する。
性能検証モデル２００は、メソッド呼び出しとして、プロセスまたはスレッド間の同期通信を定義する。
システム性能検証装置１００は、このような性能検証モデル２００を用いてシミュレーションを行い、組込みリアルタイムシステム単独での指標値２１０を算出し、指標値２１０と性能要求値２２０とを比較し、性能評価結果２３０を出力する。
【０１０６】
組込みリアルタイムシステムは、専用のハードウェアを用いて構成されてリアルタイム処理を行うシステムである。
例えば、組込みリアルタイムシステムとして、携帯電話、通信モデム、自動車に搭載される制御装置、宇宙衛星に搭載される制御装置などが挙げられる。
但し、汎用のハードウェアを用いて構成されるシステムに対して実施の形態１を適用しても構わない。
【０１０７】
次に、ネットワークシステムを検証対象にする場合について説明する。
性能検証モデル２００は、タスクとして、論理的な通信チャネル（ＴＣＰ／ＵＤＰのポート、時分割通信のスロットなど）を定義する。
性能検証モデル２００は、ハードウェアとして、物理的な通信メディア（Ｅｔｈｅｒｎｅｔ（登録商標）、時分割通信路など）を定義する。
性能検証モデル２００は、シグナル送受信として、ネットワークシステムに接続される端末間の非同期通信を定義する。
性能検証モデル２００は、メソッド呼び出しとして、ネットワークシステムに接続される端末間の同期通信を定義する。
システム性能検証装置１００は、このような性能検証モデル２００を用いてシミュレーションを行い、ネットワークシステム単独での指標値２１０を計算し、指標値２１０と性能要求値２２０とを比較し、性能評価結果２３０を出力する。
【０１０８】
本実施の形態により、組込みリアルタイムシステム、ネットワークシステムまたはその他の個別のシステムを検証対象にして、実施の形態１と同様の効果を得ることができる。
【０１０９】
実施の形態３．
実施の形態１では、タスクの処理時間をシグナル送受信およびメソッド呼び出し毎に指定する方法を説明した。
本実施の形態では、タスクの処理時間をタスクの現在状態毎に指定する方法を説明する。以降の説明では、シグナル送受信とメソッド呼び出しとを区別せずにメッセージと呼ぶ。
【０１１０】
例えば、タスクは、装置の電源が入ったときに「初期状態」になり、初期化処理が終了したときに「通常状態」になり、故障が検出されて通常処理を持続できなくなると「保守状態」になる。
【０１１１】
図１４は、実施の形態３におけるタスクの追加属性を示す表である。図１４に示すように、タスクは、属性として状態毎に処理時間を有する。つまり、性能検証モデル２００は、タスクの状態毎に処理時間を指定する。
実施の形態１で説明したシステム性能検証方法（図９から図１２参照）において、タスクの処理時間を使用する処理では、タスクの現在状態を判定し、判定した現在状態に対応する処理時間を使用する。例えば、起動タスクは、タスクの現在状態に対応する処理時間を用いてサービス時間および次回の起動時刻を更新する（Ｓ１３１、Ｓ１３２参照）。
イベント処理タスクは、メッセージの種別に応じて新たな状態に遷移するか、または現在の状態に留まり、次のメッセージ処理におけるタスクの現在状態を決定する。イベント処理タスクは、タスクが起動されるたびにこのように動作する。
周期処理タスクは、タスクが起動されたときに待ちキューに格納されているすべてのメッセージについてイベント処理タスクと同様の動作を繰り返し、すべてのメッセージの処理が終了したら次の起動周期が来るまで停止する。
【０１１２】
本実施の形態により、実施の形態１の効果に加えて、以下に示す効果を得ることができる。
・検証対象システム内部の各要素に状態遷移がある場合に、状態ごとに異なる処理時間を正確に模擬することで、高い精度で性能を計算することができる。
【０１１３】
実施の形態４．
実施の形態１および実施の形態３では、タスクの処理時間を絶対値で指定する方法を説明した。
本実施の形態では、タスクの処理時間をタスクの処理数（例えば、実行する命令数）とハードウェアの処理レート（処理速度）とを組み合わせて指定する方法を説明する。但し、実施の形態３と同様に、タスクの状態毎に処理時間または処理数を指定してもよい。
【０１１４】
図１５は、実施の形態４におけるタスクの追加属性およびハードウェアの追加属性を示す表である。図１５に示すように、タスクは属性として処理数を有す、ハードウェアは属性として処理レートを有する。つまり、性能検証モデル２００は、タスクの処理数およびハードウェアの処理レートを指定する。
実施の形態１で説明したシステム性能検証方法（図９から図１２参照）において、タスクの処理時間を使用する処理では、タスクの処理数と、タスクを割り当てているハードウェアの処理レートとを用いて処理時間（＝処理数÷処理レート）を算出する。
【０１１５】
例えば、組込みリアルタイムシステムでは、処理数として命令演算数や浮動小数点演算数などを指定し、処理レートとしてＭＩＰＳ（Ｍｉｌｌｉｏｎ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）やＭＦＬＯＰＳ（Ｍｅｇａ  ｔｅｒａ  Ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｎｕｍｂｅｒ  Ｏｐｅｒａｔｉｏｎｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）などを指定する。
この場合、処理時間の計算式は「処理時間＝命令演算数÷ＭＩＰＳ」または「処理時間＝浮動小数点演算数÷ＭＦＬＯＰＳ」である。
【０１１６】
例えば、ネットワークシステムでは、処理回数としてパケットサイズ（バイト数、ワード数など）を指定し、処理レートとして通信帯域（Ｍｂｐｓ、ワード／秒など）を指定する。
この場合、処理時間の計算式は「処理時間＝バイト数÷Ｍｂｐｓ」または「処理時間＝ワード数÷ワード／秒」である。
【０１１７】
本実施の形態により、実施の形態１の効果に加えて、以下に示す効果を得ることができる。
・タスクの処理量を変えずにハードウェアの処理能力を増加または減少させ、性能要求値の達成／未達成を確認することで、ハードウェアの処理能力に対する要求を求めることができる。
・ハードウェアの処理能力を変えずにタスクの処理量を増加または減少させ、性能要求値の達成／未達成を確認することで、タスクの処理量への要求を求めることができる。
【０１１８】
実施の形態５．
実施の形態１では、外部応答時間からサービス時間を引いて待ち時間を計算する方法を説明した。
本実施の形態では、待ち時間を細分化して計算する方法を説明する。
【０１１９】
図１６は、実施の形態５における検証対象システムの待ち時間についての指標値を示す表である。図１６に示すように、検証対象システムの待ち時間はキューイング時間（開始待ち時間の一例）、ハードウェア待ち時間（処理待ち時間の一例）、ロック待ち時間（処理待ち時間の一例）、および周期満了時間（開始待ち時間の一例）に分けることができる。
キューイング時間は、メッセージが待ちキューに設定されてから待ちキューから取り出されるまでの待ち時間である。
ハードウェア待ち時間は、ハードウェアが割り当てられるまでの待ち時間である。
ロック待ち時間は、ロックを設定するとき（図１１のＳ１２４でロックの指定有り（ＹＥＳ）の場合）の待ち時間である。つまり、ロック待ち時間は、設定したいロックが他のタスクに占有（設定）されている場合にそのロックが解放されて空くまでの待ち時間である。
周期満了時間は、メッセージが待ちキューに設定されてから起動周期の次の開始時までの待ち時間である。
「待ち時間＝キューイング時間＋ハードウェア待ち時間＋ロック待ち時間＋周期満了時間」という関係式が成り立つ。
【０１２０】
実施の形態１で説明したシステム性能検証方法（図９から図１２参照）において、シミュレーション部１１０（または起動タスク）はメッセージを送信した時刻をエンキュー時刻として記録する。
イベント処理タスクは、待ちキューからメッセージを取り出した時刻をデキュー時刻として記録し、エンキュー時刻からデキュー時刻までの時間をキューイング待ち時間に累積する。
周期処理タスクは、待ちキューからメッセージを取り出した時刻をデキュー時刻として記録し、エンキュー時刻からデキュー時刻までの時間を周期満了時間に累積する。
タスク（イベント処理タスクまたは周期処理タスク）は、優先度およびプリエンプト可否に基づいてハードウェアを割り当てられるまで待った時間をハードウェア待ち時間に累積する。
タスクは、他のタスクに占有されているロックを設定する場合、そのロックが解放されて空くまでの待ち時間をロック待ち時間に累積する。
指標値算出部１２０は、統計処理によってキューイング時間、ハードウェア待ち時間、ロック待ち時間および周期満了時間それぞれの指標値（中心値±誤差）を算出する。
【０１２１】
本実施の形態により、実施の形態１の効果に加えて、以下に示す効果を得ることができる。
・待ち時間に占めるキューイング時間、ハードウェア待ち時間、ロック待ち時間または周期満了時間の割合を確認することで、タスクの処理滞留の原因を明確にする。
【０１２２】
実施の形態６．
実施の形態１では、統計処理により性能項目の値の中心値±誤差を指標値２１０として算出する方法を説明した。
本実施の形態では、中心値の代わりに平均値、最小値および最大値を使用して指標値２１０を算出し、指標値２１０ごとに達成／未達成を判定する方法を説明する。また、性能評価結果２３０として指標値ごとにデッドラインの完了の可否を出力する方法を説明する。
【０１２３】
指標値算出部１２０は、シミュレーションで記録した値の集合を用いて、性能項目ごとに平均値、最小値および最大値を算出する。また、指標値算出部１２０は、統計学での信頼区間の計算方法を用いて、それぞれの誤差を算出する。そして、指標値算出部１２０は、平均値、最小値または最大値と誤差とを用いて指標値２１０を算出する。
【０１２４】
性能評価部１３０は、以下の基準に従って指標値２１０ごとに達成／未達成を判定する。以下に示す基準において、「平均値＋誤差」または「平均値−誤差」は指標値２１０に相当する値である。
・外部応答時間の達成基準は「平均値＋誤差≦要求値」である。
・タスク間応答時間の達成基準は「平均値＋誤差≦要求値」である。
・キュー長の達成基準は「平均値＋誤差≦要求値」である。
・サービス時間の達成基準は「平均値＋誤差≦要求値」である。
・利用率の達成基準は「平均値＋誤差≦要求値」である。
・待ち時間の達成基準は「平均値＋誤差≦要求値」である。
・スループットの達成基準は「要求値≦平均値−誤差」である。
【０１２５】
性能要求値２２０の情報は、外部応答時間またはタスク間応答時間の要求値として、開始デッドラインおよび終了デッドラインを指定する。
性能評価部１３０は、以下の基準に従ってデッドラインの完了の可否を判定する。以下に示す基準において、「最小値−誤差」および「最大値＋誤差」は指標値２１０に相当する値である。
・外部応答時間のデッドライン完了可否基準は「開始デッドライン≦最小値−誤差」且つ「最大値＋誤差≦終了デッドライン」である。
・タスク間応答時間のデッドライン完了可否基準は「開始デッドライン≦最小値−誤差」且つ「最大値＋誤差≦終了デッドライン」である。
【０１２６】
本実施の形態により、実施の形態１と同様の効果を得ることができる。
【符号の説明】
【０１２７】
１００  システム性能検証装置、１１０  シミュレーション部、１２０  指標値算出部、１３０  性能評価部、１４０  性能検証モデル作成部、１５０  性能要求値作成部、１９０  装置記憶部、２００  性能検証モデル、２１０  指標値、２２０  性能要求値、２３０  性能評価結果、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ、９１２  キーボード、９１３  マウス、９１４  ドライブ、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
0005777550.tif 000002
【図２】
0005777550.tif 000003
【図３】
0005777550.tif 000004
【図４】
0005777550.tif 000005
【図５】
0005777550.tif 000006
【図６】
0005777550.tif 000007
【図７】
0005777550.tif 000008
【図８】
0005777550.tif 000009
【図９】
0005777550.tif 000010
【図１０】
0005777550.tif 000011
【図１１】
0005777550.tif 000012
【図１２】
0005777550.tif 000013
【図１３】
0005777550.tif 000014
【図１４】
0005777550.tif 000015
【図１５】
0005777550.tif 000016
【図１６】
0005777550.tif 000017