(57)【特許請求の範囲】
【請求項１】
プロセッサ・システムの最適化を支援する装置であって、
前記プロセッサ・システムに対するトレース情報と、該トレース情報に対応する性能情報とをメモリから読み出す情報取得手段と、
該読み出したトレース情報と性能情報とを分析する情報分析手段と、
該分析の結果に対応してシステム最適化の方法を出力する最適化方法出力手段とを備え、
前記プロセッサ・システムは、マルチ・プロセッサ組み込みシステムであるマルチタスク・システムであり、
前記最適化方法出力手段は、タスクによって発行されたシステムコールが、該発行されたシステムコールよりも処理時間の短い類似システムコールを有する場合に、該発行されたシステムコールを該類似システムコールに置き換えることを、前記システム最適化方法として出力する、ことを特徴とするプロセッサ・システム最適化支援装置。
【請求項２】
前記情報分析手段は、前記トレース情報と前記性能情報とに基づいて前記タスクによって発行されたシステムコールの発行回数を求め、
前記最適化方法出力手段は、前記発行回数に基づいて、置換え対象としての前記発行されたシステムコールを選択する、ことを特徴とする請求項１に記載のプロセッサ・システム最適化支援装置。
【請求項３】
プロセッサ・システムの最適化を支援する方法であって、
前記プロセッサ・システムに対するトレース情報と、該とレース情報に対応する性能情報とをメモリから読み出すステップと、
該読み出したトレース情報と性能情報とを分析するステップと、
該分析の結果に対応してシステム最適化の方法を出力するステップとを備え、
前記プロセッサ・システムは、マルチ・プロセッサ組み込みシステムであるマルチタスク・システムであり、
前記出力のステップにおいて、タスクによって発行されたシステムコールが、該発行されたシステムコールよりも処理時間の短い類似システムコールを有する場合に、該発行されたシステムコールを該類似システムコールに置き換えることを、前記システム最適化方法として出力する、ことを特徴とするプロセッサ・システム最適化支援方法。
【請求項４】
前記情報分析するステップにおいて、前記トレース情報と前記性能情報とに基づいて前記タスクによって発行されたシステムコールの発行回数を求め、
前記出力するステップにおいて、前記発行回数に基づいて、置換え対象としての前記発行されたシステムコールを選択する、ことを特徴とする請求項３に記載のプロセッサ・システム最適化支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばマルチタスク・オペレーティング・システム（ＯＳ）上で動作するアプリケーション・ソフトウェアに対応して、タスクの実行状況を示すトレース情報や、システムの性能情報を分析し、その分析結果に基づいてシステムの最適化方法を出力し、システム設計者によるシステム最適化を支援するシステム最適化支援装置、および支援方法に関する。
【背景技術】
【０００２】
マルチタスク・オペレーティング・システム（ＯＳ）上で動くアプリケーション・ソフトウェアや、マルチタスク・ＯＳを利用した組み込みシステムの評価においては、タスク遷移図などの評価ツールを用いて、複数のデータをつき合わせてシステムの性能を評価し、システム設計者などのノウハウを使ってシステムの最適化を行う必要があった。このため、例えばタスクが稼動していないアイドル時間や、タスクの実行時間と関連させてシステムの最適化作業を行うためには、システム設計者などのノウハウや人手に頼る必要があるという問題点があった。
【０００３】
このようなマルチタスクの性能向上などに関する従来技術としての特許文献１では、所定の条件が満たされる場合に所定のタスクの優先順位を変更するとともに、優先順位の変更のための条件を学習機能により使用環境に応じて最適化する実時間処理装置が開示されている。
【０００４】
次に特許文献２では、ＰＯＳサーバなどのデータ処理装置において、マルチタスクなどの多数のデータ処理手段の稼働率をリアルタイムで確認可能とするデータ処理装置が開示されている。
【０００５】
特許文献３では、タスクの停止時間をタスク自身が認識し、タスクの停止状況を視覚的に把握し、タスクの実行遅れに対して自動的な回復処理を行うためのタスク監視装置及びタスク監視方法が開示されている。
【０００６】
特許文献４では、マルチタスク・オブジェクト指向プログラムの動作内容をユーザにわかりやすくし、ユーザによるデバッグ、またはテストの作業効率を向上させることができる技術が開示されている。
【０００７】
特許文献５では、タスクの所要時間だけでなく、リソースの効率、仕事率などの能力、およびリソースの負荷を含むリソース処理状態を表示可能とする技術が開示されている。
【０００８】
さらに特許文献６では、タスクの所要時間、リソースの効率、仕事率、およびリソースの処理状態を表示し、かつ複数のタスクの処理量、処理率などを一元管理することができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平４−３６７０３５号公報  「複数タスクの実時間処理装置」
【特許文献２】特開平７−２８７６９３号公報  「データ処理装置」
【特許文献３】特開平９−１７９７５４号公報  「タスク監視装置及びタスク監視方法」
【特許文献４】特開平１０−２４０５７８号公報  「マルチタスク処理装置、マルチタスク処理方法およびマルチタスク処理表示方法
【特許文献５】特開２００３−３４５８６８号公報  「リソース管理装置、リソース管理方法及びリソース管理プログラム」
【特許文献６】特開２００４−５４３９６号公報  「リソース管理装置、リソース管理方法、リソース管理プログラム及び記録媒体」
【００１０】
しかしながらこのような特許文献１から特許文献６までの従来技術を用いても、例えばマルチタスク・ＯＳを利用した組み込みシステムの最適化作業において、ノウハウや人手に頼る必要があるという問題点を解決することはできなかった。例えば、タスク内の関数レベル、あるいはループレベルでのミクロの最適化を行うことも考えられるが、システム全体の最適化作業においては、ノウハウや人手に頼らざるをえないという問題点を解決することはできない。
【発明の開示】
【００１１】
本発明の目的は、上述の問題点に鑑み、例えばマルチタスク・オペレーティング・システムを用いた組み込みシステムのトレース情報や性能情報を分析し、その分析結果に対応してシステムの最適化方法を表示、出力することによって、ノウハウや、システム設計者の人手に頼ることなく、プロセッサ・システムの最適化を可能とする最適化支援装置、および支援方法を提供することである。
【００１２】
本発明のプロセッサ・システム最適化支援装置は、情報取得手段、情報分析手段、および最適化方法出力手段を備える。情報取得手段は、プロセッサ・システムに対するトレース情報と、そのトレース情報に対応する性能情報とをメモリから読み出すものである。
【００１３】
情報分析手段は、メモリから読み出されたトレース情報と性能情報とを分析し、その分析の結果として、例えばシステムの性能指標を求めるものである。システムの性能指標としては各種の指標を求めることができるが、その１つはマルチタスクを構成するタスクの実行率の平均値と、同一の優先度を有する各タスクの実行率とを比較して得られた値である同一優先度タスクの負荷比である。
【００１４】
最適化方法出力手段は、情報分析手段による分析の結果に対応して、システム最適化の方法を表示、出力するものである。この最適化方法出力手段は、メモリからさらにシステムの最適化に用いるべき方法のデータを取得し、そのデータと、情報分析手段による分析結果とに対応させて、システムの最適化方法を表示、出力することもできる。
【００１５】
本発明のプロセッサ・システム最適化支援方法は、このシステム最適化支援装置の動作に相当する方法を実行するものである。
【００１６】
このように本発明によれば、プロセッサ・システムに対するトレース情報と性能情報との分析結果に対応して、システム最適化の方法が表示、出力されることよって、プロセッサ・システムの最適化支援が行われる。
【００１７】
本発明によれば、例えばマルチ・プロセッサ用、あるいはシングル・プロセッサ用の組み込みシステムの最適化の方法が、プロセッサ・システム最適化支援装置によって表示、出力されることにより、最適化のために効果の無い作業を繰り返す必要がなくなり、また例えばシステム設計者の技術レベルに依存することなく、プロセッサ・システムの最適化が可能となり、マルチタスク・オペレーティング・システムを用いた組み込みシステムの設計効率の向上に寄与するところが大きい。
【図面の簡単な説明】
【００１８】
【図１】本発明のプロセッサ・システム最適化支援装置の原理構成ブロック図である。
【図２】第１の実施例におけるシステム最適化支援方法の基本的な機能ブロック図である。
【図３】第１の実施例におけるマルチ・プロセッサ・システムの構成例（その１）である。
【図４】第１の実施例におけるマルチ・プロセッサ・システムの構成例（その２）である。
【図５】最適化支援装置の基本構成ブロック図である。
【図６】トレース情報、および性能情報取得手順の説明図である。
【図７】トレース情報の例の説明図である。
【図８】性能情報の例の説明図である。
【図９】アイドル時間の説明図である。
【図１０】最大レディ状態時間の説明図である。
【図１１】最大処理完了時間の説明図である。
【図１２】プロセッサ間通信回数の説明図である。
【図１３】プロセッサ間通信待ち時間の説明図である。
【図１４】第１の実施例におけるシステム最適化支援処理の詳細フローチャートである。
【図１５】第１の実施例におけるシステム最適化支援処理の詳細フローチャート（続き）である。
【図１６】第１の実施例における性能指標データの例を示す図である。
【図１７】タスクの状態遷移の説明図である。
【図１８】第２の実施例におけるシステム最適化支援方法の基本的な機能ブロック図である。
【図１９】第２の実施例におけるマルチ・プロセッサ・システムの構成例（その１）である。
【図２０】第２の実施例におけるマルチ・プロセッサ・システムの構成例（その２）である。
【図２１】第２の実施例における性能指標と最適化方法の表示例である。
【図２２】第２の実施例における性能指標と最適化方法の表示処理のフローチャートである。
【図２３】第２の実施例におけるグラフと最適化方法の表示例である。
【図２４】第２の実施例におけるグラフと最適化方法の表示処理のフローチャートである。
【図２５】第２の実施例におけるタイムチャートと最適化方法の表示例である。
【図２６】第２の実施例におけるタイムチャートと最適化方法の表示処理のフローチャートである。
【図２７】第３の実施例における最適化支援方法の基本的な機能ブロック図である。
【図２８】第３の実施例におけるグラフと最適化方法の表示例（その１）である。
【図２９】第３の実施例におけるグラフと最適化方法の表示例（その２）である。
【図３０】第３の実施例におけるグラフと最適化方法の表示例（その３）である。
【図３１】第３の実施例におけるグラフと最適化方法の表示処理のフローチャートである。
【図３２】第３の実施例における性能指標データの例である。
【図３３】第４の実施例における最適化支援方法の基本的な機能ブロック図である。
【図３４】第４の実施例におけるグラフの表示例である。
【図３５】第４の実施例におけるグラフと最適化方法の表示例である。
【図３６】第５の実施例における最適化支援方法の基本的な機能ブロック図である。
【図３７】第５の実施例におけるマルチ・プロセッサ・システムの構成例（その１）である。
【図３８】第５の実施例におけるマルチ・プロセッサ・システムの構成例（その２）である。
【図３９】第５の実施例におけるデータテーブルの格納内容とシステム最適化方法の表示例である。
【図４０】第５の実施例における最適化支援処理の詳細フローチャートである。
【発明を実施するための形態】
【００１９】
図１は、本発明のプロセッサ・システム最適化支援装置の原理構成ブロック図である。同図において、最適化支援装置１は情報取得手段２、情報分析手段３、および最適化方法出力手段４を備える。情報取得手段２は、プロセッサ・システムに対するトレース情報と、そのトレース情報に対応する性能情報とをメモリから読み出すものである。
【００２０】
情報分析手段３は、読み出されたトレース情報と性能情報とを分析するものであり、分析の結果として、例えばシステムの性能指標を求めるものである。この性能指標は、例えば後述するアイドル時間、マルチタスク・システムにおけるタスク毎の最大レディ時間、最大処理完了時間、プロセッサ間通信回数、プロセッサ間通信待ち時間などである。
【００２１】
最適化方法出力手段４は、情報分析手段３の分析の結果に対応して、システム最適化の方法を出力するものであり、その出力結果は、例えばモニタに表示される。その表示結果に対応して、例えば組み込みシステムの設計者が最適化作業を行うことによって、システムの最適化が実現される。
【００２２】
最適化方法出力手段４は、メモリからさらにシステムの最適化に用いるべき方法のデータを読み出し、そのデータと情報分析手段３の分析結果とに対応させて、システムの最適化方法を出力することもできる。
【００２３】
以下本発明の実施形態について第１から第５の実施例に分けて説明する。図２は、第１の実施例におけるシステム最適化方法の基本的な機能ブロック図である。同図において、ステップＳ１でシステムのトレース情報と性能情報がメモリから取得され、ステップＳ２でそのトレース情報と性能情報とを分析した結果として、システムの性能を示す指標が出力される。この指標としては、システム全体のアイドル時間、例えばマルチタスクを構成するタスクの何れも処理を実行せず、アプリケーション・ソフトウェアも動作していない時間としてのアイドル時間や、タスク毎のプロセッサ間通信回数や、プロセッサ間通信時間などを示す指標であるが、その性能指標についてはさらに後述する。
【００２４】
図２のステップＳ３で、トレース情報と性能情報との分析結果としてのシステムの性能指標に基づいて、システムの最適化方法が出力され、ステップＳ４で、出力された最適化方法を用いてシステムの最適化が実施される。本実施形態においては、ステップＳ４における最適化の実施は、ステップＳ３で出力され、モニタなどに表示された最適化方法に基づき、さらにモニタに表示された性能指標などを用いて、システムの設計者などによって実施されるものとする。なお本発明の特許請求の範囲の請求項１における情報取得手段は図２のステップＳ１の処理、情報分析手段はステップＳ２の処理、最適化方法出力手段はステップＳ３の処理に対応する。
【００２５】
図３、図４は、第１の実施例におけるマルチ・プロセッサ・システムの構成例のブロック図である。図３は第１の構成例を示し、システムは２つのプロセッサ１０、１１、これらのプロセッサ間の通信を実行するためのプロセッサ間通信部１２、入力部１３、モニタ１４、メモリ１５、およびシステムの最適化方法を出力し、例えばシステム設計者によるシステム最適化を支援する最適化支援装置１６、およびこれらのブロックが接続されたバス１７によって構成されている。
【００２６】
図４の第２の構成例では、図３でメモリ１５が２つのプロセッサ１０、１１によって共用されるのに対して、プロセッサ１０対する専用メモリとしてメモリ１５が、プロセッサ１１に対する専用メモリとしてメモリ１９が備えられている点が図３の構成例と異なっている。
【００２７】
図５は、第１の実施例における最適化支援装置の構成ブロック図である。同図においてユーザアプリケーション２０、デバッグモジュール２１、リアル・タイム・オペレーティング・システム（ＲＴＯＳ）が言語ツール２３に与えられ、データ処理プログラムとしてのロードモジュールファイル２４が作成される。ここで、リアルタイム・オペレーティング・システム（ＴＲＯＳ）２２を用いる理由は、組み込みシステムではユーザが、例えばボタンを押した時点でオペレーティング・システムが動き出すことが必要であり、そのためリアル・タイム・オペレーティング・システムが用いられる。
【００２８】
ロードモジュールファイル２４は、開発処理を進めるための統合開発機構（ＩＤＥ）２５に与えられる。この環境の内部にはアナライザ２６とデバッガ２８が備えられ、その中間にはＲＴＯＳインターフェース・モジュール（ＲＩＭ）２７が備えられる。アナライザ２６とＲＩＭ２７とはＲＴＯＳアクセス・インターフェース（ＲＩＦ）によって接続され、またＲＩＭ２７とデバッガ２８とはターゲット・アクセス・インターフェース（ＴＩＦ）によって接続されている。
【００２９】
デバッガ２８は、メモリアクセス部２９を介して、ターゲット３０の内部のトレースメモリ３１にアクセスすることができる。ターゲット３０は、例えばプロセッサであり、その内部にはＲＴＯＳ２２、デバッグモジュール２１、ユーザアプリケーション２０が備えられている。
【００３０】
図６は、図５の最適化支援装置におけるトレース情報と性能情報取得手順の説明図である。ここでは、まずトレースメモリ３１に格納されているトレース情報の取得手順について説明する。アナライザ２６においてトレースメモリ３１に格納されているデータの取得要求が発生すると、（１）でユーザメモリ領域にあるトレースメモリ３１の内容を読み出すためにアナライザ２６からＲＩＭ２７にトレースログの取得が要求され、（２）でＲＩＭ２７によってトレースメモリ３１の内容を読み出す指示がデバッガ２８に与えられ、デバッガ２８から（３）でメモリアクセス部２９を介して、トレースメモリ３１に対するデータ・リードアクセスがなされる。
【００３１】
読み出されたトレースメモリ３１の内容、すなわちトレース情報は、メモリアクセス部２９を介して（４）でデバッガ２８に通知され、デバッガ２８から（５）でＲＩＭ２７に通知される。そしてＲＩＭ２７によって、アナライザ２６が必要とするデータが（６）でアナライザ２６に通知されて、トレースメモリのデータ取得が完了する。
【００３２】
あるプロセッサによって実行されるタスクと、他のプロセッサとの間の通信回数や、その通信時間などの性能情報のデータはターゲット３０、すなわちプロセッサの内部で図示しないメモリに格納され、例えばハードウェア・カウンタのカウント値に対応して、トレース情報と同様にアナライザ２６に通知されるものとする。
【００３３】
図７は、図５のトレースメモリ３１に格納されているトレース情報の例である。同図においてログタイプはログデータを取る形式を示し、このタイプによってトレースメモリに保存されるデータの内容が決定される。タイプイベントのＬＯＧ＿ＬＥＡＶＥはログの開始を、ＬＯＧ＿ＥＮＴＥＲはログの終了を意味する。タスクＩＤは、タイプイベントとしてのＬＯＧ＿ＬＥＡＶＥとＬＯＧ＿ＥＮＴＥＲに対して同一でも良いが、基本的には異なるものである。そして右側の下位時刻はそのタスクの開始時刻、上位時刻は終了時刻を意味する。
【００３４】
図８は性能情報の例である。同図において、例えば実行時間、プロセッサ間通信回数、プロセッサ間通信時間（積算）などの性能データは、それぞれのタスク、すなわちタスクＩＤに対応させてメモリに格納されているものとする。ここでタスクＩＤ＝０に対する実行時間は、例えばタスクＩＤ＝１から５のタスクの処理を実行するプロセッサにおいて、すべてのタスクの実行が行われていない時間を示し、タスク間のディスパッチなどＯＳの処理のための時間に相当する。
【００３５】
トレース情報や性能情報の分析によって得られるシステムの性能指標について図９から図１３を用いて説明する。図９において、システム内で実行されるタスクがタスクＡとタスクＢの２つであるとすると、これらの２つのタスクの実行が行われていないアイドル時間Ｔｉを積算した値がトレース情報取得開始時刻Ｔｓから終了時刻Ｔｅの間で求められ、性能指標の１つとしてのアイドル時間の値とされる。このアイドル時間の（Ｔｅ−Ｔｓ）に対する割合からシステム全体の最適化可能割合や実行率を知ることができる。なおここでタスクＡはタスクＢより優先度が高いが、アイドル時間の積算においてはこの優先度は無関係である。
【００３６】
図１０は、最大レディ状態時間の説明図である。同図においては、３つのタスク、すなわちタスクＣ、タスクＤ、およびタスクＥが生成されているが、優先度が高いタスクＣとタスクＤとの間でディスパッチが繰り返され、処理が実行されている。このため、優先度の低いタスクＥは実行可能状態を維持しているが、実行権を獲得できない状態が続いている。このようなタスク毎の実行可能状態（レディ状態）の時間をタスク毎に積算し、そのタスクが起動されて１回の処理が開始されてから終了するまでの生存時間内におけるレディ状態時間の積算値を求め、またそのような積算値の中でＴｓからＴｅまでの間の最大値を最大レディ状態時間として求める。ここでタスクＥの最大レディ状態時間はＴｅとＴｓとの差となる。
【００３７】
これに対して、例えばタスクＣの１回の処理が時刻Ｔｓの以前から行われ、Ｔｄ２で終了したとすると、レディ状態時間はＴｃ１とＴｄ１との差となる。１回の処理がＴｄ３までかかったとすれば、レディ状態時間はＴｃ１とＴｄ１の差とＴｃ２とＴｄ２との差を合計したものとなる。トレース情報取得開始時刻Ｔｓから終了時刻Ｔｅの間で、タスクの１回の処理の起動時から処理完了時までの生存時間内におけるレディ状態時間の積算値のうちで最大の値が、タスク毎の最大レディ状態時間として求められる。この最大レディ時間から、そのタスクが実行可能でありながら待ち状態となっていた最大時間を知ることができ、最適化の可否とその効果を知ることができる。
【００３８】
図１１は、タスク毎の最大処理完了時間の説明図である。ここで処理完了時間はタスクの１回の処理、すなわちタスクの起動時から処理完了時までの生存時間であり、前述のレディ状態時間を含むものである。そして時刻ＴｓからＴｅの間でタスクの起動から処理終了までの動作が複数回繰り返されている場合に、それらの動作に対応する処理完了時間の最大値がそのタスクに対する最大処理完了時間として求められる。図１１においてタスクＦが起動されてから他のタスクＧ、およびＯＳの処理が行われるアイドル時間を含めて、１回の処理が終了するまでの時間のうちで、ＴｓからＴｅの間での最大値、ここではＴｃが最大処理完了時間として求められる。この最大処理完了時間を知ることで、ディスパッチや割込み回数などと関連させて最適化方法を特定することができる。
【００３９】
図１２は、プロセッサ間通信回数の説明図である。例えばタスクＨは、起動されてから１回の処理を完了するまでの間に、他のプロセッサによって実行されているタスクとの通信を行うためにプロセッサ間通信を行うが、この回数を例えば時刻ＴｓからＴｅの間でカウントし、例えばＴｅとＴｓとの差で割ることによって、システム時間単位のプロセッサ間通信回数が性能指標として求められる。プロセッサ間の通信回数の増大につれてシステムの実行時間が大きくなるために、プロセッサ間通信回数を知ることによって、システム最適化の可否、およびその効果を知ることができる。
【００４０】
図１３は、プロセッサ間通信待ち時間の説明図である。同図においてまずタスクＪからタスクＫへのディスパッチ時に、タスクＪと他のプロセッサとの間での通信が開始され、次にタスクＫからタスクＬへのディスパッチ時に、タスクＫから他のプロセッサへの通信要求が生ずるが、この時点ではタスクＪからのプロセッサ間通信がまだ終了していないものとすると、その通信は待ち状態となる。タスクＪからの通信が終了し、優先度の最も高いタスクＪへのディスパッチが行われる時点で、タスクＫから他のプロセッサへの通信が可能となり、通信待ち時間は図で示されるＴｗとなる。このプロセッサ間通信待ち時間をどれだけ小さくできるかによって、最適化の可否、およびその効果を知ることができる。
【００４１】
図１４、図１５は、第１の実施例におけるシステム最適化支援処理の詳細フローチャートである。図１４において処理が開始されると、まずステップＳ１０で、例えば組み込みシステムがマルチ・プロセッサ・システムであるか、シングル・プロセッサ・システムであるかが判定される。ここではまずマルチ・プロセッサ・システムの場合について説明するものとして、ステップＳ１１でシステム全体のアイドル時間の割合が大きいか小さいかが判定され、小さい場合にはステップＳ１２でプロセッサ間通信回数が多いか否かが判定され、多い場合にはステップＳ１３でシステム最適化の方法として、プロセッサ間通信回数を削減するために、あるプロセッサに属するタスクを他のプロセッサに移動、もしくは統合するか、通信粒度、すなわち１回の通信量を拡大すべきことが出力されて、図１５で処理を終了する。
【００４２】
ステップＳ１２でプロセッサ間通信回数が少ない場合には、ステップＳ１４でプロセッサ間通信待ち時間が多いか少ないかが判定され、多い場合にはシステム最適化の方法として、プロセッサ間通信回数を削減するためにタスクを別のプロセッサに移動、もしくは統合するか、プロセッサ間通信間隔を拡大する方法が出力されて、処理を完了する。ここでプロセッサ間通信間隔の拡大の具体例として、タスク１が通信中でタスク２が待ち状態となる時には、タスク２と無関係のタクス３の処理を先行させることによって、タスク２の通信待ち時間を結果的に減少させることができる。
【００４３】
ステップＳ１１でシステム全体のアイドル時間が大きいと判定されると、ステップＳ１６で最大レディ状態時間が大きいか小さいかが判定される。このステップＳ１６以降の処理は基本的にタスク単位で行われるものである。この最大レディ状態時間の判定もタスク毎に実行される。
【００４４】
最大レディ状態時間が小さい場合には、ステップＳ１７でそのタスクの最大処理時間が大きいか小さいかが判定され、大きい場合にはステップＳ１８でここで対象としているタスクが、他のタスクとの間で依存関係があるか否かが判定され、ある場合にはステップＳ１９で対象タスクと他のタスクの間でのディスパッチ回数が多いか否かが判定され、多い場合にはステップＳ２０で対象タスクの処理中に複雑な割り込みがあるか否かが判定され、ある場合にはステップＳ２１で最適化方法として割り込み処理の見直しが出力され、処理を完了する。
【００４５】
ステップＳ１７で対象タスクの最大処理完了時間が小さいか、ステップＳ１９で対象タスクのディスパッチ回数が少ないか、ステップＳ２０で対象タスクの処理中に複雑な割り込みがない場合には、ステップＳ２８でタスクの分割や統合などのタスク再設計が最適化処理方法として出力されて、処理を終了する。例えば最大処理完了時間が小さい場合にはタスクが小さいことになり、タスクの統合が有効となる。
【００４６】
ステップＳ１６で最大レディ状態時間が大きいと判定されると、ステップＳ２５で対象タスクと他のタスクとの間に依存関係がないか否かが判定され、ある場合にはステップＳ２８の処理が行われて処理を終了する。ここで依存関係がなければタスクの分割が可能となる。
【００４７】
ステップＳ２５で他のタスクとの依存関係がないと判定されると、ステップＳ２６で対象タスクが属していないプロセッサにおいてアイドル時間の割合が大きいか否かが判定され、小さい場合にはステップＳ２８の処理が行われて、処理を終了する。
【００４８】
アイドル時間の割合が大きい場合には、ステップＳ２７で最適化方法として他のプロセッサへのタスクの移動、もしくは統合が出力されて処理を終了する。ここで他のプロセッサ側でアイドル時間の割合が大きい場合には、当然そのプロセッサ側へのタスクの移動が可能となるが、小さい場合にはそのような移動は不可能であり、ステップＳ２８の方法が出力されることになる。
【００４９】
ステップＳ１０でシングル・プロセッサ・システムと判定された場合、またステップＳ１４でプロセッサ間通信待ち時間が少ないと判定された場合には、図１５のステップＳ３０以降の処理が行われる。以降の処理においてはマルチ・プロセッサ・システムにおいてもプロセッサ単位の処理が行われる。
【００５０】
まずステップＳ３０でアイドル時間の割合が大きいか小さいかが判定され、小さい場合にはそのプロセッサに対応する最適化作業が不必要であることがステップＳ３６で出力され、処理を終了する。アイドル時間の割合が大きい場合には、ステップＳ３１からＳ３５で、図１４のステップＳ１７、ステップＳ１９からＳ２１、およびステップＳ２８と同様の処理が実行され、ステップＳ３４で割込み処理の見直しが、またステップＳ３５ではタスクの分割、統合などの再設計が必要であることがシステム最適化方法として出力されて、処理を終了する。
【００５１】
図１６は、第１の実施例における性能指標の例の詳細説明図である。同図の性能指標の一部は図８と同様であるが、タスクＩＤ＝０としてのシステム全体に対しては、すべてのタスク、すなわちタスクＩＤ＝１から５のタスクのすべてが動作していないことを示すアイドル・ルーチンの実行時間が示され、オペレーティング・システムの処理時間としての実行時間との差はオペレーティング・システムが動作していない時間を示す。最大レディ状態時間、最大処理完了時間、プロセッサ間通信回数、プロセッサ間通信待ち時間、および最も下のプロセッサ間通信時間（積算）については前述と同様であり、ディスパッチ回数は時刻ＴｓからＴｅまでの間のタスク間のディスパッチ回数を示し、また割込み回数は同じ時間の間の回数を示している。
【００５２】
レディ状態時間から未生成時間までの５つの性能指標については、図１４、図１５の処理フローチャートにおいても使用されていないため、それらの性能指標について図１７のタスクの状態遷移図を用いて簡単に説明する。同図においてタスクは基本的には実行状態（ランニング）と実行可能状態（レディ状態）との間でディスパッチとプリエンプトを繰り返すことになる。
【００５３】
実行を中断している状態として、待ち状態と、強制待ち状態（サスペンド）、および二重待ち状態（待ち−サスペンド）の３つの待ち状態がある。待ち状態は、例えばオペレー
ティング・システムによって待ちを指示され、実行を中断している状態であり、強制待ち状態は、例えば他のタスクから強制的に実行中断を指示されている状態であり、二重待ち状態、すなわち待ち−サスペンド状態は待ち状態と強制待ち状態（サスペンド状態）が重なった状態である。
【００５４】
タスクの状態としてはさらに、タスクが起動されていないか、または処理が終了した状態としての休止状態と、タスクが生成されていないか、削除された状態を示す未登録状態がある。
【００５５】
続いて第２の実施例について説明する。図１８は第２の実施例におけるシステム最適化支援方法の基本的な機能ブロック図である。同図を第１の実施例に対する図２と比較すると、ステップＳ４１、Ｓ４５、およびＳ４６の処理は図２のステップＳ１、Ｓ３、およびＳ４と同様であるが、第２の実施例においては図２のステップＳ２に対応する処理として、ステップＳ４２、Ｓ４３、またはＳ４４の処理が行われる点が異なっている。
【００５６】
ステップＳ４２ではトレース情報と性能情報の分析結果として、性能指標の値がステップＳ２と同様に求められる。ステップＳ４３では分析の結果として性能指標のグラフが作成され、ステップＳ４４では分析結果として性能指標のチャートが作成される。そしてステップＳ４５では性能指標の値、または作成されたグラフ、あるいはチャートに対応させて最適化方法の出力が行われる。なお、第２の実施例においては、トレース情報と性能情報とを統計的に分析し、その結果のグラフを作成し、作成されたグラフに基づいて最適化の方法を出力することも可能である。
【００５７】
図１９、および図２０は、第２の実施例におけるマルチ・プロセッサ・システムの構成例である。これらの図を第１の実施例における図３、図４と比較すると、指標表示装置３５、グラフ表示装置３６、およびチャート情報表示装置３７が最適化支援装置１６に対応するものとして示されている。
【００５８】
図２１は、第２の実施例における性能指標と最適化方法の表示例である。タスク１からタスク５の何れの実行も行われていない期間を示すアイドルルーチンの実行時間が１２０ｍｓであることが表示され、その性能指標に対応してタスクの分割、統合などのタスクの再設計が最適化方法として表示されている。またタスク３に対するプロセッサ間通信待ち時間が１００ｍｓであることを示す性能指標の表示に対応して、プロセッサ通信の間隔をあけるか、通信先のプロセッサに対象タスクを移動させる最適化方法が表示されている。さらにタスク５の実行時間が“０”であることを示す性能指標の表示に対応して、タスク設計の確認、あるいはタスク優先度を上げることが最適化方法として表示されている。
【００５９】
図２２は、図２１の表示例に対応する性能指標と最適化方法の表示処理の詳細フローチャートである。同図において処理が開始されると、ステップＳ５１で、例えばメモリ１５からトレース情報、および性能情報が取得され、ステップＳ５２で取得された情報が分析され、性能指標が求められ、その指標データがメモリ１５に格納される。そしてステップＳ５３で性能指標の値がメモリ１５に格納されている閾値データと比較される。この閾値データは、例えばユーザによって予めメモリ１５に格納されているものであり、例えばアイドルルーチンの実行時間として閾値５０ｍｓを示すデータが格納されているとすれば、図２１の表示状態に対応してアイドルルーチンの実行時間が閾値よりも大きいことが判明する。なお、閾値データとしては、例えばユーザの設定値が不適切な場合に使用されるデフォルト値も格納されている。
【００６０】
この比較はステップＳ５４で行われ、性能指標が閾値よりも小さい場合には、それ以上の処理を行うことなく、直ちに処理を終了する。閾値よりも大きい場合には、ステップＳ５５でメモリ１５に格納されている色データを用いて、閾値表示部、例えばアイドルルーチンの実行時間の表示部分に色をつける処理が行われ、ステップＳ５６でアイドルルーチンの実行時間が閾値よりも大きいことに対応する最適化方法の分析が行われ、ステップＳ５７で性能指標のデータと最適化方法のデータを用いて、性能指標と対応する最適化方法が表示されて、処理を終了する。なお請求項１６におけるシステムの最適化方法に関するデータは、例えばメモリ１５に格納されている閾値データに相当する。
【００６１】
図２３は、第２の実施例におけるグラフと最適化方法の表示例である。同図においては、グラフとしてプロセッサ０に属するタスクとしてのタスクＡからタスクＧのそれぞれが、他のプロセッサ、図１９ではプロセッサ１との間で行ったプロセッサ間通信の回数がグラフとして表示されている。
【００６２】
そして最適化方法として、タスクＤとプロセッサ１との間の通信回数が多く、このタスクを通信先プロセッサに移動させることによって、性能向上が期待できるとする最適化方法が表示されている。
【００６３】
図２４は、図２３の表示例に対応するグラフと最適化方法の表示処理の詳細フローチャートである。同図の処理は図２２とほぼ同様であり、図２２のステップＳ５５で指標表示部に色をつける処理が行われる代わりに、ステップＳ５８でグラフ表示部に色をつける処理が行われ、ステップＳ５７で最適化方法と性能指標が表示される代わりに、ステップＳ５９で最適化方法とグラフが表示される点だけが異なっている。
【００６４】
図２５は、第２の実施例におけるタイムチャートと最適化方法の表示例である。同図においてプロセッサ０側、およびプロセッサ１側でのタスク間のディスパッチ、すなわちタスク遷移状態を示すタスク遷移図と対応させて、１００ｍｓ付近の時刻でタスクＡからタスクＢへのディスパッチ、タスクＢからタスクＣへのディスパッチ、タスクＣからアイドル状態へのディスパッチの時点でプロセッサ間通信が行われていることが表示されている。
【００６５】
また最適化方法としては、１００ｍｓ付近にプロセッサ間通信が集中していることに対応して、通信間隔をあけるか、あるいは他のタスクと依存関係がない場合には通信先プロセッサにタスクを移動させる最適化方法が表示されている。
【００６６】
図２６は、図２５の表示例に対応する第２の実施例におけるチャートと最適化方法表示処理の詳細フローチャートである。同図も例えば図２２における処理と同様であるが、ステップＳ６１でチャート表示部に色をつける処理が行われ、ステップＳ６２で最適化方法とチャートが表示される点だけが異なっている。
【００６７】
第２の実施例における表示装置、例えば図１９における指標表示装置３５、グラフ表示装置３６、およびチャート情報表示装置３７の構成は第１の実施例における最適化支援装置１６の構成を示す図５と同様であり、またトレース情報と性能情報の取得手順についても図６と同様であり、その説明を省略する。
【００６８】
またトレース情報と性能情報の例は図７、図８と同様であり、用いられる各種の性能指標についても図９から図１３で説明したものと同じであり、さらに各種の性能指標データの例も図１６と同じであり、その説明を省略する。
【００６９】
図２７は、最適化支援方法の第３の実施例における基本的な機能ブロック図である。同図を第１の実施例に対する図２と比較すると、ステップＳ６１、およびＳ６６の処理は図２のステップＳ１、Ｓ４と同様であるが、図２７においてはステップＳ６１の処理の後にステップＳ６２、Ｓ６３、またはＳ６４の処理が行われる。ステップＳ６２では取得されたトレース情報と性能情報からシステム全体のタスク実行率のグラフが作成される。そしてこのグラフとともにステップＳ６５で最適化方法が出力され、ステップＳ６６で最適化が実施される。
【００７０】
あるいはステップＳ６１の処理の後に、ステップＳ６３で取得されたトレース情報と性能情報からタスク毎のタスク実行率のグラフが作成され、ステップＳ６５でそのグラフとともに最適化の方法が出力され、ステップＳ６６で最適化が実施される。
【００７１】
あるいはステップＳ６１の処理の後に、ステップＳ６４で取得されたトレース情報と性能情報から同一優先度タスクの負荷比グラフが作成され、ステップＳ６５でそのグラフとともに最適化方法が出力され、ステップＳ６６で最適化が実施される。
【００７２】
図２８は、第３の実施例におけるシステム全体のタスク実行率グラフ、およびそのグラフとともに表示される最適化方法の表示例である。ここでシステム全体のタスク実行率とはシングル・プロセッサ・システムではシステム時間（例えばＴｅ−Ｔｓの値とＯＳの処理時間との差）に対する各タスクの実行状態時間の割合を示すものであり、マルチ・プロセッサ・システムにおいては、複数のプロセッサによって構成されるシステム全体のタスク実行可能時間に対する割合を示すものである。図２８では各タスクの実行状態時間の割合の合計が９０％となり、最適化方法として余裕のある１０％の範囲での最適化が可能であることが表示されている。
【００７３】
図２９は、図２７のステップＳ６３で作成されるタスク毎のタスク実行率のグラフと最適化方法の表示例である。ここでタスク毎のタスク実行率は、そのタスクの実行時間の合計と処理完了時間（生存時間）の和との比であり、各タスクの実行率の平均を取ることによって、どの程度の最適化が可能であるかが判定され、その結果の表示が行われる。ここではタスクＡ、Ｂ、およびＣの実行率がそれぞれ１００％、６０％、５０％であり、その平均値は７０％となる。このため最大３０％の最適化が可能であることが最適化方法として表示されている。
【００７４】
図３０は、図２７のステップＳ６４で作成される同一優先度タスクの負荷比グラフと最適化方法の表示例である。同図において３つのタスクＡ、Ｂ、およびＣが同一優先度であるものとすると、システム全体の各タスクの実行率の平均値を“１”として、各タスクの実行率がそれぞれ何％大きいか小さいかが負荷比として表示され、その負荷比に応じて、例えば負荷を均等にするか、あるいはタスクの優先度を変更することが最適化の方法として表示されている。
【００７５】
図３１は、第３の実施例におけるグラフと最適化方法表示処理の詳細フローチャートである。同図において処理が開始されると、まずステップＳ７１でメモリ１５からトレース情報と性能情報が取得され、ステップＳ７２で取得した情報が分析され、性能指標として、例えばタスク毎のタスク実行率が求められ、ステップＳ７３でその性能指標のデータが分析され、ステップＳ７４で最適化が可能であるか不可能であるかが判定され、不可能な場合には直ちに処理を終了する。
【００７６】
例えば図２９においてタスク毎のタスク実行率がすべて１００％であれば、最適化は不可能であり、処理を終了するが、図２９で説明したように平均値が７０％であれば最適化は可能であり、ステップＳ７５でメモリ１５から最適化方法のデータが取得されて最適化方法の分析が行われ、ステップＳ７６で最適化方法とグラフが表示されて処理を終了する。
【００７７】
図３２は、第３の実施例における性能指標データの例である。ここでシステム全体の実行時間は、タスク１からタスク３までの実行時間に加えて、オペレーティング・システムの処理時間などを含むものである。優先度［１］の負荷比はタスクＩＤ＝１と２のタスク実行率（システム）の値から求められている。また優先度［３］の負荷比はこの優先度を持つタスクがタスク３だけであることから、タスク３の負荷比が“１”となっている。
【００７８】
第３の実施例においても、プロセッサ・システムの構成、トレース情報や性能情報の取得方法などは前述と同様であり、その説明を省略する。
【００７９】
図３３は、最適化支援方法の第４の実施例における基本的な機能ブロック図である。この機能ブロック図は第３の実施例に対する図２７と類似しており、第３の実施例ではステップＳ６２、Ｓ６３またはＳ６４の何れかにおいて、システム全体のタスク実行率グラフ、タスク毎のタスク実行率グラフ、同一優先度タスクの負荷比グラフが作成されるのに対して、図３３ではステップＳ８２でタスクの実行可能状態のグラフが作成される点が異なっている。
【００８０】
図３４は、図３３のステップＳ８２で作成されるタスクの実行可能状態のグラフの例である。同図においては、システム全体で見た実行可能状態（レディ状態）のタスクの数が、ある時間間隔毎に時系列的に表示されている。
【００８１】
図３５は、実行可能状態のグラフの表示と最適化方法の表示例である。同図においては、タスクＡからタスクＤのそれぞれについて実行可能状態保持時間、または保持回数が表示され、実行可能状態が長い間続いているタスクの実行可能状態を短くするために、タスクの分割、統合のようなタスクの再設計を行うべきことが最適化方法として表示されている。なお、このタスクの再設計では、処理の重いタスク１の優先度が高く、処理の軽いタスク２の優先度が低いために、タスク２が動けなくなっているような場合に、タスク２を他のプロセッサ側のタスク３と統合するような方法が用いられる。
【００８２】
第４の実施例においてもプロセッサ・システムの構成、最適化装置の構成、トレース情報、および性能情報の取得方法、トレース情報その他のデータの例、および最適化支援方法の処理フローチャートなどは、例えば第１の実施例におけると同様であり、その説明を省略する。
【００８３】
最後に第５の実施例について説明する。図３６は、最適化支援方法の第５の実施例の基本的な機能ブロック図である。この第５の実施例においては、第４の実施例までと異なって、例えばタスクの再設計などによってシステムの最適化を行う代わりに、例えばタスクによって使用されるシステムコールについて検討し、システムの最適化を支援するところに特徴があり、基本的な機能ブロック図においても、例えばシステムコールの中で類似したシステムコールを示すデータテーブルを用いて、ステップＳ９３で最適化方法が出力される点が基本的に異なっている。
【００８４】
図３７、図３８は、第５の実施例におけるシステム構成例のブロック図である。これらを第１の実施例に対する図３、図４と比較すると、システムコールの類似性を判定するためのデータが格納されたデータテーブル４０が追加されている点が異なっている。
【００８５】
図３９は、データテーブルの格納内容を用いた最適化方法表示例の説明図である。図３７、図３８のデータテーブル４０には、あるシステムコール、すなわち関数の名称に対応して、類似するシステムコールの名称が格納されている。例えばシステムコールＡ２はシステムコールＡ１と類似していることが示されている。
【００８６】
一方トレース情報、性能情報からの分析データとして、各システムコールの発行回数が最適化支援装置１６に与えられる。システムコールＢ２はシステムコールＢ１に類似するものであるが、システムコールＢ１の方が処理時間が短いシステムコールであるものとして、比較的多数回発行されているシステムコールＢ２を、類似したシステムコールＢ１に置換える最適化方法が出力されている。
【００８７】
図４０は、第５の実施例における最適化支援処理の詳細フローチャートである。同図において処理が開始されると、ステップＳ１０１でトレース情報、および性能情報がメモリ１５から取得され、ステップＳ１０２でこれらの情報が分析され、ステップＳ１０３で取得した情報がデータテーブル内のデータと比較され、ステップＳ１０４で適切な類似システムコールがあるか否かが判定され、無い場合には直ちに処理を終了する。
【００８８】
適切な類似システムコールがある場合、例えば類似したシステムコールであって、処理時間の短いシステムコールがある場合には、例えばそのシステムコールの呼び出し回数を表示するデータ表示部に色を付ける処理がステップＳ１０５で行われ、ステップＳ１０６でメモリ１５から読み出される最適化方法データを用いて最適化方法が分析され、ステップＳ１０７で例えばシステムコールの置換をその内容とする最適化方法が表示されて、処理を終了する。
【００８９】
この第５の実施例においても、最適化支援装置の構成、トレース情報、性能情報の取得方法、トレース情報の例などは第１の実施例におけると同様であり、その説明を省略する。
【図１】
0005595577.tif 000002
【図２】
0005595577.tif 000003
【図３】
0005595577.tif 000004
【図４】
0005595577.tif 000005
【図５】
0005595577.tif 000006
【図６】
0005595577.tif 000007
【図７】
0005595577.tif 000008
【図８】
0005595577.tif 000009
【図９】
0005595577.tif 000010
【図１０】
0005595577.tif 000011
【図１１】
0005595577.tif 000012
【図１２】
0005595577.tif 000013
【図１３】
0005595577.tif 000014
【図１４】
0005595577.tif 000015
【図１５】
0005595577.tif 000016
【図１６】
0005595577.tif 000017
【図１７】
0005595577.tif 000018
【図１８】
0005595577.tif 000019
【図１９】
0005595577.tif 000020
【図２０】
0005595577.tif 000021
【図２１】
0005595577.tif 000022
【図２２】
0005595577.tif 000023
【図２３】
0005595577.tif 000024
【図２４】
0005595577.tif 000025
【図２５】
0005595577.tif 000026
【図２６】
0005595577.tif 000027
【図２７】
0005595577.tif 000028
【図２８】
0005595577.tif 000029
【図２９】
0005595577.tif 000030
【図３０】
0005595577.tif 000031
【図３１】
0005595577.tif 000032
【図３２】
0005595577.tif 000033
【図３３】
0005595577.tif 000034
【図３４】
0005595577.tif 000035
【図３５】
0005595577.tif 000036
【図３６】
0005595577.tif 000037
【図３７】
0005595577.tif 000038
【図３８】
0005595577.tif 000039
【図３９】
0005595577.tif 000040
【図４０】
0005595577.tif 000041