| 【発明の名称】 |
CPU使用率測定方式 |
| 【発明者】 |
【氏名】奥山 英樹
|
| 【要約】 |
【課題】タスクスケジュールの情報などを一切公開していないOSではCPU使用率は測定することができないこと、測定すること自体がアプリケーションプログラムの状態を変化させてしまうこと、ハードウェアなしではCPU使用率を測定することができない。また、その接続の手間、多量のシステムでの適用などが無理であること等の欠点があった。
【解決手段】測定対象となるシステム上で動作するアプリケーションプログラム101と、このアプリケーションプログラム101に対し測定の基準となるソフトウェアカウンタ104と、このソフトウェアカウンタ104を走行中常にインクリメントし続けるCPU使用率測定用疑似アイドルタスク103と、CPU使用率測定開始処理105とCPU使用率測定用終了処理106をアプリケーションプログラム101に対して提供するCPU使用率測定用インタフェース処理部102とが設けられている。システム稼動時にアプリケーションプログラム101により指定された任意の開始点から終了点までの間のCPU使用率を測定する。 |
【特許請求の範囲】
【請求項1】 測定対象となるシステム上で動作するアプリケーションプログラムと、該アプリケーションプログラムに対し測定の基準となるソフトウェアカウンタと、該ソフトウェアカウンタを走行中常にインクリメントし続けるCPU使用率測定用疑似アイドルタスクと、CPU使用率測定開始処理とCPU使用率測定用終了処理を前記アプリケーションプログラムに対して提供するCPU使用率測定用インタフェース処理部とを具備し、システム稼働時に前記アプリケーションプログラムにより指定された任意の開始点から終了点までの間のCPU使用率を測定することを特徴としたCPU使用率測定方式。 【請求項2】 前記CPU使用率測定用疑似アイドルタスクは、前記ソフトウェアカウンタをインクリメントし続けるタスクであり、動作中の前記アプリケーションプログラムのどのタスクよりも低いプライオリティを付与され、動作中の前記アプリケーションプログラムの全てのタスクが動作していない場合においてのみ走行し、この場合だけ前記ソフトウェアカウンタをインクリメントし続けることを更に特徴とする請求項1に記載のCPU使用率測定方式。 【請求項3】 前記CPU使用率測定用疑似アイドルタスクのプライオリティは、OSが用意した最低位のタスクのプライオリティより高いものであることを更に特徴とする請求項1または2のいずれか一項に記載のCPU使用率測定方式。 【請求項4】 前記CPU使用率測定用インタフェース処理部やCPU使用率測定用疑似アイドルタスクは、キャッシュミスヒットの影響が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成され、通常キャッシュアドレスで動作させる前記アプリケーションプログラムからの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現することができるインタフェースライブラリにより実現されることを更に特徴とする請求項1に記載のCPU使用率測定方式。 【請求項5】 前記請求項1に記載のモジュール構成を使用してCPU使用率を測定する際に必要となるCPU使用率測定用疑似アイドルタスクの走行比率算出用基準値であるソフトウェアカウンタ基準値を測定するために、ソフトウェアカウンタ基準値測定用メインプログラムと、第2のソフトウェアカウンタと、該第2のソフトウェアカウンタをインクリメントし続けるソフトウェアカウンタ基準値測定用疑似アドレスタスクと、ソフトウェアカウンタ基準値測定用測定開始処理とソフトウェアカウンタ基準値測定用測定終了処理を提供するソフトウェアカウンタ基準値測定用インタフェース処理部とを使用することを更に特徴とする請求項1に記載のCPU使用率測定方式。 【請求項6】 CPU使用率測定用疑似アイドルタスク処理フローとして、まず計測データ群の初期化を行う第1の工程と、ソフトウェアカウンタのインクリメント処理として、まず該ソフトウェアカウンタ(下位)のオーバフローの有無をチェックする第2の工程と、該第2の工程によるチェックの結果オーバフローしていなかった場合には単に前記ソフトウェアカウンタ(下位)を1つインクリメントする第3の工程と、前記第2の工程によるチェックの結果オーバフローしていた場合には前記ソフトウェアカウンタ(上位)への桁上がりと判断する第4の工程と、次に前記ソフトウェアカウンタ(上位)のオーバフローの有無をチェックする第5の工程と、もし、該第5の工程によるチェックの結果オーバフローしていなかった場合には前記ソフトウェアカウンタ(上位)を1つインクリメントする第6の工程と、該第6の工程を実行すると共に前記ソフトウェアカウンタ(下位)を0クリアする第7の工程と、前記第5の工程によるチェックの結果オーバフローしていた場合にはこれ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得を行い、用なしとなった前記CPU使用率測定用疑似アイドルタスクを削除する第8の工程とを有することを特徴としたCPU使用率測定方式。 【請求項7】 前記第1の工程の前記測定データ群の初期化は、測定開始/終了時に取得する周期割り込み回数の格納先と前記ソフトウェアカウンタ(下位/上位)の0クリアを行うことであることを更に特徴とする請求項5に記載のCPU使用率測定方式。 【請求項8】 前記CPU使用率測定用疑似アイドルタスクは、前記第2の工程〜第8の工程から成る前記ソフトウェアカウンタのインクリメント処理を繰り返して実行することを更に特徴とする請求項5または6のいずれか一項に記載のCPU使用率測定方式。 【請求項9】 CPU使用率測定用疑似アイドルタスク処理フローとして、まず計測データ群の初期化を行う第1の処理と、ソフトウェアカウンタのインクリメント処理として、まず該ソフトウェアカウンタ(下位)のオーバフローの有無をチェックする第2の処理と、該第2の処理によるチェックの結果オーバフローしていなかった場合には単に前記ソフトウェアカウンタ(下位)を1つインクリメントする第3の処理と、前記第2の処理によるチェックの結果オーバフローしていた場合には前記ソフトウェアカウンタ(上位)への桁上がりと判断する第4の処理と、次に前記ソフトウェアカウンタ(上位)のオーバフローの有無をチェックする第5の処理と、もし、該第5の処理によるチェックの結果オーバフローしていなかった場合には前記ソフトウェアカウンタ(上位)を1つインクリメントする第6の処理と、該第6の処理を実行すると共に前記ソフトウェアカウンタ(下位)を0クリアする第7の処理と、前記第5の処理によるチェックの結果オーバフローしていた場合にはこれ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得を行い、用なしとなった前記CPU使用率測定用疑似アイドルタスクを削除する第8の処理と、前記CPU使用率測定用疑似アイドルタスクによる前記第2〜第8の処理を含む前記ソフトウェアカウンタのインクリメント処理を繰り返し実行する処理とをコンピュータに実行させるプログラムを記録した記録媒体。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、CPU使用率測定方式に関し、詳しくは、タスクスケジュールなどの内部情報が公開されていないOS(オペレーティングシステム)を使用したシステムにおいて、システム実働時の指定区間内のアプリケーションプログラムのCPU使用率を、ハードウェアカウンタやロジックアナライザといったハードウェア手段に頼らずに簡便なソフトウェア手段のみにより正確に測定することができるCPU使用率測定方式に関するものである。 【0002】更に具体的に説明するに、本発明は、図1において、測定対象となるアプリケーションプログラム101に対して、ソフトウェアカウンタ104と、そのソフトウェアカウンタ104をインクリメントし続けるCPU使用率測定用疑似アイドルタスク103と、CPU使用率測定用測定開始処理105とCPU使用率測定用測定終了処理106を提供するCPU使用率測定用インタフェース処理部102とを用意することにより、システム稼働時の指定区間内のCPU使用率をソフトウェア手段のみにより測定する方式に関している。 【0003】なお、ここでCPU使用率とは、OS(オペレーティングシステム)を適用したシステムにおいて、例えば図2に示すようにアプリケーションタスクA、BやCPU使用率測定用疑似アイドルタスク103が走行している場合に、計測区間の時間(T2−T1)に対するCPU使用率測定用疑似アイドレタスク103の総走行時間(t1+t2+t3+t4)以外の走行比率として表わされる。 【0004】また、本発明は、図3において、ソフトウェアカウンタ基準値測定用メインプログラム301と、ソフトウェアスウンタ304と、そのソフトウェアカウンタ304をインクリメントし続けるソフトウェアカウンタ基準値測定用疑似アドルスタスク303と、ソフトウェアカウンタ基準値測定用測定開始処理305とソフトウェアカウンタ基準値測定用測定終了処理306を提供するソフトウェアカウンタ基準値測定用インタフェース処理部302とを使用し、図1のモジュール構成を使用してCPU使用率を測定する際に必要となるCPU使用率測定用疑似アイドルタスク103の走行比率算出用基準値であるソフトウェアカウンタ基準値を測定する方式を提供することも特徴とする。 【0005】また、図1において、CPU使用率測定用インタフェース処理部102やCPU使用率測定用疑似アイドルタスク103は、キャッシュミスヒットの影響(特にソフトウェアカウンタ104のインクリメント処理の誤差発生)が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成し、通常キャッシュアドレスで動作させるアプリケーションプログラム101からの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現することができるインタフェースライブラリによって実現することも特徴とする。 【0006】この関係は、図3においても同様である。つまり、ソフトウェアカウンタ基準値測定用インタフェース処理部302やソフトウェア基準値測定用疑似アイドルタスク303は、キャッシュミスヒットの影響(特にソフトウェアカウンタ304のインクリメント処理の誤差発生)が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成し、通常キャッシュアドレスで動作させるアプリケーションプログラム101を想定したソフトウェアカウンタ基準値測定用メインプログラム301からの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現するインタフェースライブラリを用意することも特徴とする。 【0007】 【従来の技術】従来の技術として、CPU使用率の測定に、OSのタスクスケジューリングの情報を前提としたものは存在していた。 【0008】また、OSから情報を得られない場合には、アプリケーションプログラム自体への走行時間出力処理を追加したり、ロジックアナライザなどのハードウェア手段によりソフトウェアの走行アドレスを直接ハードウェアから取得し、何も処理を行なわないアイドルタスクの走行を区間を特定するといった方法が採られていた。 【0009】 【発明が解決しようとする課題】しかしながら、叙上の従来技術には、次のような問題点があった。 【0010】タスクスケジュールの情報などを一切公開していないOSではCPU使用率は確定することができない。 【0011】測定すること自体がアプリケーションプログラムの状態を変化させてしまう。 【0012】ハードウェアなしではCPU使用率を測定することができない。また、その接続の手間、多量のシステムでの適用などが無理であるなどの欠点があった。 【0013】本発明は従来の上記実情に鑑みてなされたものであり、従って本発明の目的は、従来の技術に内在する上記諸欠点を解消することを可能とした新規なCPU使用率測定方式を提供することにある。 【0014】 【課題を解決するための手段】上記目的を達成する為に、本発明に係るCPU使用率測定方式は、測定対象となるシステム上で動作するアプリケーションプログラムと、該アプリケーションプログラムに対し測定の基準となるソフトウェアカウンタと、該ソフトウェアカウンタを走行中常にインクリメントし続けるCPU使用率測定用疑似アイドルタスクと、CPU使用率測定開始処理とCPU使用率測定用終了処理を前記アプリケーションプログラムに対して提供するCPU使用率測定用インタフェース処理部とを具備し、システム稼働時に前記アプリケーションプログラムにより指定された任意の開始点から終了点までの間のCPU使用率を測定することを特徴としている。 【0015】前記CPU使用率測定用疑似アイドルタスクは、ソフトウェアカウンタをインクリメントし続けるタスクであり、動作中の前記アプリケーションプログラムのどのタスクよりも低いプライオリティを付与され、動作中の前記アプリケーションプログラムの全てのタスクが動作していない場合においてのみ走行し、この場合だけ前記ソフトウェアカウンタをインクリメントし続けることを特徴としている。 【0016】前記CPU使用率測定用疑似アイドルタスクのプライオリティは、OSが用意した最低位のタスクのプライオリティより高いものである。 【0017】前記CPU使用率測定用インタフェース処理部やCPU使用率測定用疑似アイドルタスクは、キャッシュミスヒットの影響が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成され、通常キャッシュアドレスで動作させる前記アプリケーションプログラムからの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現することができるインタフェースライブラリにより実現されることを特徴としている。 【0018】前記請求項1に記載のモジュール構成を使用してCPU使用率を測定する際に必要となるCPU使用率測定用疑似アイドルタスクの走行比率算出用基準値であるソフトウェアカウンタ基準値を測定するために、ソフトウェアカウンタ基準値測定用メインプログラムと、第2のソフトウェアカウンタと、該第2のソフトウェアカウンタをインクリメントし続けるソフトウェアカウンタ基準値測定用疑似アイドルタスクと、ソフトウェアカウンタ基準値測定用測定開始処理とソフトウェアカウンタ基準値測定用測定終了処理を提供するソフトウェアカウンタ基準値測定用インタフェース処理部とを使用することを特徴としている。 【0019】CPU使用率測定用疑似アイドルタスク処理フローとして、まず計測データ群の初期化を行う第1の工程と、ソフトウェアカウンタのインクリメント処理として、まず該ソフトウェアカウンタ(下位)のオーバフローの有無をチェックする第2の工程と、該第2の工程によるチェックの結果オーバフローしていなかった場合には単に前記ソフトウェアカウンタ(下位)を1つインクリメントする第3の工程と、前記第2の工程によるチェックの結果オーバフローしていた場合には前記ソフトウェアカウンタ(上位)への桁上がりと判断する第4の工程と、次に前記ソフトウェアカウンタ(上位)のオーバフローの有無をチェックする第5の工程と、もし、該第5の工程によるチェックの結果オーバフローしていなかった場合には前記ソフトウェアカウンタ(上位)を1つインクリメントする第6の工程と、該第6の工程を実行すると共に前記ソフトウェアカウンタ(下位)を0クリアする第7の工程と、前記第5の工程によるチェックの結果オーバフローしていた場合にはこれ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得を行い、用なしとなった前記CPU使用率測定用疑似アイドルタスクを削除する第8の工程とを有することを特徴としている。 【0020】前記第1の工程の前記測定データ群の初期化は、測定開始/終了時に取得する周期割り込み回数の格納先と前記ソフトウェアカウンタ(下位/上位)の0クリアを行うことであることを特徴としている。 【0021】前記CPU使用率測定用疑似アイドルタスクは、前記第2の工程〜第8の工程から成る前記ソフトウェアカウンタのインクリメント処理を繰り返して実行することを特徴としている。 【0022】また本発明によれば、CPU使用率測定用疑似アイドルタスク処理フローとして、まず計測データ群の初期化を行う第1の処理と、ソフトウェアカウンタのインクリメント処理として、まず該ソフトウェアカウンタ(下位)のオーバフローの有無をチェックする第2の処理と、該第2の処理によるチェックの結果オーバフローしていなかった場合には単に前記ソフトウェアカウンタ(下位)を1つインクリメントする第3の処理と、前記第2の処理によるチェックの結果オーバフローしていた場合には前記ソフトウェアカウンタ(上位)への桁上がりと判断する第4の処理と、次に前記ソフトウェアカウンタ(上位)のオーバフローの有無をチェックする第5の処理と、もし、該第5の処理によるチェックの結果オーバフローしていなかった場合には前記ソフトウェアカウンタ(上位)を1つインクリメントする第6の処理と、該第6の処理を実行すると共に前記ソフトウェアカウンタ(下位)を0クリアする第7の処理と、前記第5の処理によるチェックの結果オーバフローしていた場合にはこれ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得を行い、用なしとなった前記CPU使用率測定用疑似アイドルタスクを削除する第8の処理と、前記CPU使用率測定用疑似アイドルタスクによる前記第2〜第8の処理を含む前記ソフトウェアカウンタのインクリメント処理を繰り返し実行する処理とをコンピュータに実行させるプログラムを記録した記録媒体が得られる。 【0023】 【発明の実施の形態】次に、本発明をその好ましい一実施の形態について図面を参照しながら詳細に説明する。 【0024】[実施の形態の構成]図1は、本発明に係るCPU使用率測定方式において、システム稼働時にCPU使用率を測定するモジュール構成の一実施の形態を示すブロック構成図である。 【0025】図1を参照するに、本発明による一実施の形態は、測定対象となるシステム上で動作するアプリケーションプログラム101に対し、測定の基準となるソフトウェアカウンタ104と、そのソフトウェアカウンタ104を走行中常にインクリメントし続けるCPU使用率測定用疑似アイドルタスク103と、CPU使用率測定開始処理105とCPU使用率測定用終了処理106をアプリケーションプログラム101に対して提供するCPU使用率測定用インタフェース処理部102とから構成され、システム稼働時にアプリケーションプログラム101により指定された任意の開始点から終了点までの間のCPU使用率の測定値を提供する。 【0026】ここで、CPU使用率測定用疑似アイドルタスク103は、ソフトウェアカウンタ104をインクリメントし続けるタスクであり、動作中のアプリケーションプログラムのどのタスクよりも低いプライオリティを付与されたタスクである。したがって、CPU使用率測定用疑似アイドルタスク103は、動作中のアプリケーションプログラムの全てのタスクが動作していない場合においてのみ走行し、つまり、この場合だけ、ソフトウェアカウンタ104をインクリメントし続けるタスクである。「疑似」としたのは、通常のOS(オペレーティングシステム)においては、OSが用意した最低位のタスクが存在するために、それと区別するためである。CPU使用率測定用疑似アイドルタスク103のプライオリティは、OSが用意した最低位のタスクのプライオリティより高いものである必要がある。 【0027】本発明は、測定対象時間の間にどのくらい図1に示すソフトウェアカウンタ104がカウントアップされるかを測定してCPU使用率を測定する方式である。従って、ソフトウェアカウンタ104のカウントアップ数を測定すると共に、測定対象時間を測定することも必要である。 【0028】本発明では、測定対象時間にOSの提供するシステムコールで得られる周期割り込み発生回数を使用している。例えば、ある時点aで得られた値がxで、その後のb時点で得られた値がyならば、(y−x)が測定対象時間を示す値であると見做している。 【0029】測定は、まず周期割り込みの1周期当たりのソフトウェアカウンタ104のカウントアップ数を基準値として測定しておく。次に、実際のCPU使用率の測定を実施する。 【0030】具体的には測定対象区間において、周期割り込みがN回発生し、そしてその間にソフトウェアカウンタ104がどのくらいカウントアップするかを測定する。 【0031】基準値がQ、ソフトウェアカウンタ104のカウンタ数がR、測定対象時間を示す周期割り込み回数がN回だったとすると、(N−(R/Q))/N×100でCPU使用率が%で得られる。 【0032】ここで、(R/Q)を得たいために基準値Qが必要なわけである。つまり、カウンタ数Rを周期割り込み数換算するために必要な値となる。これがソフトウェアカウンタ基準値である。 【0033】本発明においては、図1に示されたこのソフトウェアカウンタ104の基準値を、図3に示されたソフトウェアカウンタ基準値測定モジュールによって測定している。 【0034】図3は、CPU使用率測定用疑似アイドルタスク103の走行比率を得るために、図1のモジュール構成でCPU使用率を測定する前に実施してソフトウェアカウンタ基準値を得るためのモジュール構成の一実施例を示すブロック構成図である。 【0035】図3を参照するに、このソフトウェアカウンタ基準値を得るモジュール構成は、ソフトウェアカウンタ基準値測定用メインプログラム301と、測定の基準となるソフトウェアカウンタ304と、このソフトウェアカウンタ304を走行中常にインクリメントし続け、適宜その値をリードするソフトウェアカウンタ基準値測定用疑似アイドルタスク303と、ソフトウェアカウンタ基準値測定用測定開始処理305とソフトウェアカウンタ基準値測定用測定終了処理306をソフトウェアカウンタ基準値測定用メインプログラム301に対して提供するソフトウェアカウンタ基準値測定用インタフェース処理部302とから構成され、ソフトウェアカウンタ基準値測定用メインプログラム301により指定された区間に関して得られたデータを基に、ソフトウェアカウンタの基準値を算出する。 【0036】また、図1において、CPU使用率測定用インタフェース処理部102やCPU使用率測定用疑似アイドルタスク103は、キャッシュミスヒットの影響、特にソフトウェアカウンタ104のインクリメント処理の誤差発生が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成し、通常キャッシュアドレスで動作させるアプリケーションプログラム101からの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現することができるようにするインタフェースライブラリによって実現する。 【0037】この関係は、図3においても同様である。つまり、図3において、ソフトウェアカウンタ基準値測定用インタフェース処理部302やソフトウェアカウンタ基準値測定用疑似アイドルタスク303は、キャッシュミスヒットの影響(特にソフトウェアカウンタ304のインクリメント処理の誤差発生)が出ないようにするために、非キャッシュアドレスで動作させる実行モジュールとして作成し、通常キャッシュアドレスで動作させるアプリケーションプログラム101を想定したソフトウェアカウンタ基準値測定用メインプログラム301からの処理のコールは、処理ルーチン登録テーブルを使用して別実行モジュールの実体関数への間接コールを実現するインタフェースライブラリを用意する。 【0038】[実施の形態の動作]次に、図5、図6、図7に示すフローチャートを参照して、本発明による実施の形態のCPU使用率測定時の動作について詳細に説明する。 【0039】本発明による一実施の形態においては、ソフトウェアカウンタとして、32ビットのカウンタを2つ使用し、それぞれ下位カウンタ、上位カウンタとして使用した例で説明している(以降、単にソフトウェアカウンタと記載した場合には、下位と上位を総称したものを指している)。 【0040】また、周期割り込みはmsecオーダの周期のものでよく、周期割り込み回数が32ビットで得られるものであるとして説明している。 【0041】図5は、CPU使用率測定用測定開始処理フローチャートである。 【0042】図5を参照するに、まずソフトウェアカウンタ104のインクリメントを開始すべく、CPU使用率測定用疑似アイドルタスク103の生成501と起動502を実施する。 【0043】次に、CPU使用率測定開始時点における周期割り込み回数を取得して保存503する(この結果、ソフトウェアカウンタ104は0からのインクリメントを開始する)。 【0044】図6は、CPU使用率測定用測定終了処理フローチャートである。 【0045】図6を参照するに、まずソフトウェアカウンタ104がオーバフローしていないかどうかをチェック601する。チェックの結果、オーバフローしていた場合には、CPU使用率の計算604の処理へ進む(これは、図7の707の処理でソフトウェアカウンタ104(上位)のインクリメントの度にオーバフローの有無のチェックを行っており、オーバフローだった場合には周期割り込み回数の取得を実施済みなので図6の処理では不要なためである)。 【0046】チェックの結果オーバフローしていなかった場合には、この測定終了時点の周期割り込み回数の取得と保存602を行い、用なしとなったCPU使用率測定用疑似アイドルタスクを削除603する。 【0047】CPU使用率の計算604では、まずCPU使用率測定用疑似アイドルタスク103の走行中の総周期割り込み回数を計算605する。計算は、この時点でのソフトウェアカウンタ104のカウンタ数を、図3のモジュール構成で予め測定済みのソフトウェアカウンタ基準値で割ることにより得る。 【0048】この結果、CPU使用率測定用疑似アイドルタスクの総走行時間を周期割り込み回数に置換した値が得られる。 【0049】次に、総測定区間における総周期割り込み回数606を求める。計算は、測定終了時の周期割り込み回数が、測定開始時の周期割り込み回数よりも大きかった場合には、測定終了時の周期割り込み回数から測定開始時の周期割り込み回数を引くことにより得られる。 【0050】測定終了時の周期割り込み回数が、測定開始時の周期割り込み回数よりも小さかった場合には、ソフトウェアカウンタ104が1周りした後だと判断し、(0xffffffff−測定開始の周期割り込み回数+1)と測定終了時の周期割り込み回数の合計値より得る。 【0051】次に、CPU使用率(%)607を求める。計算は、605で得た値をA、606で得た値をBとしたときに、((B−A)×100)/Bで得られる。 【0052】次に、得られたCPU使用率を文字列等に変換して所定の場所へ格納608する。 【0053】図7はCPU使用率測定用疑似アイドルタスク処理フローチャートである。 【0054】図7を参照するに、まず計測データ群の初期化701を行う。具体的には、測定開始/終了時に取得する周期割り込み回数の格納先とソフトウェアカウンタ104(下位/上位)の0クリアを行う。 【0055】以後、CPU使用率測定用疑似アイドルタスク103は、ソフトウェアカウンタ104のインクリメント処理702を繰り返し実行する。 【0056】ソフトウェアカウンタ104のインクリメント処理は、まずソフトウェアカウンタ104(下位)のオーバフローの有無をチェック705する。オーバフローしていなかった場合には、単にソフトウェアカウンタ104(下位)を1つインクリメント706する。 【0057】オーバフローしていた場合には、ソフトウェアカウンタ104(上位)への桁上がりと判断し、次に、ソフトウェアカウンタ104(上位)のオーバフローの有無をチェック707する。 【0058】もし、オーバフローしていなかった場合には、ソフトウェアカウンタ104(上位)を1つインクリメント708すると共に、ソフトウェアカウンタ104(下位)を0クリア709する。 【0059】オーバフローしていた場合には、これ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得703を行い、用なしとなったCPU使用率測定用疑似アイドルタスクを削除704する。 【0060】次に、図8、図9、図10に示すフローチャートを参照して、本実施の形態のソフトウェアカウンタ基準値測定時の動作について詳細に説明する。 【0061】この一実施の形態においては、図5、図6、図7と同様に、ソフトウェアカウンタとして、32ビットのカウンタを2つ使用し、それぞれ下位カウンタ、上位カウンタとして使用した例で説明している(以降、単にソフトウェアカウンタと記載した場合には、下位と上位を総称したものを指している)。 【0062】また、周期割り込みはmsecオーダの周期のものでよく、周期割り込み回数が32ビットで得られるものであるとして説明している。 【0063】図8は、ソフトウェアカウンタ基準値測定用測定開始処理フローチャートである。 【0064】図8を参照するに、まず図3に示されたソフトウェアカウンタ304のインクリメントを開始すべく、ソフトウェアカウンタ基準値測定用疑似アイドルタスク303の生成801と、起動802を実施する(この結果、ソフトウェアカウンタ304は0からのインクリメントを開始する)。 【0065】図9は、ソフトウェアカウンタ基準値測定用測定終了処理フローチャートである。 【0066】図9を参照するに、まず図3に示されたソフトウェアカウンタ基準値測定用疑似アイドルタスク303がソフトウェアカウンタ304(上位)を参照し指定回数分実行が完了しているかどうかをチェック901する。 【0067】チェックの結果終了していれば、何もしないで終了する(これは、図10の1008の処理でソフトウェアカウンタ304(上位)のインクリメントの度に指定回数分の実行が完了しているかどうかチェックを行っており、完了している場合には周期割り込み回数の取得を既に実施済みなので図9の処理では不要なためである)。 【0068】チェックの結果オーバフローしていなかった場合には、この測定終了時点の周期割り込み回数の取得と保存902を行い、用なしとなったソフトウェアカウンタ基準値測定用疑似アイドルタスクを削除903する。 【0069】図10は、ソフトウェアカウンタ基準値測定用疑似アイドルタスク処理フローチャートである。 【0070】図10を参照するに、まず計測データ群の初期化1101を行う。具体的には、測定開始/終了時に取得した周期割り込み回数の格納先と、図3に示されたソフトウェアカウンタ304(下位/上位)の0クリアを行う。 【0071】次に、測定開始時点の周期割り込み回数を取得1102する。以後、図3に示されたソフトウェアカウンタ基準値測定用疑似アイドルタスク303は、ソフトウェアカウンタ304のインクリメント処理1103を繰り返し実行する。 【0072】ソフトウェアカウンタ304のインクリメント処理1103は、まずソフトウェアカウンタ304(下位)のオーバフローの有無をチェック1106する。 【0073】オーバフローしていなかった場合には、単にソフトウェアカウンタ304(下位)を1つインクリメント1107する。 【0074】オーバフローしていた場合には、ソフトウェアカウンタ304(上位)への桁上がりと判断し、次に、ソフトウェアカウンタ304(上位)が指定回数分の実行が完了しているかどうかをチェック1108する。 【0075】もし、指定回数分の実行が完了していなかった場合には、ソフトウェアカウンタ304(上位)を1つインクリメント1109すると共に、ソフトウェアカウンタ304(下位)を0クリア1110する。 【0076】指定回数分の実行が完了していた場合には測定終了と判断し、この時点での周期割り込み回数の取得1104を行い、用なしとなったソフトウェアカウンタ基準値測定用疑似アイドルタスク303を削除1105する。 【0077】図4は、ソフトウェアカウンタ基準値測定用メインプログラムの処理概要を示した図である。 【0078】図4において、図3に示されたソフトウェアカウンタ基準値測定用メインプログラム301は、まず、周期割り込みのタスクを解除401を行うと共に、ソフトウェアカウンタ基準値測定用測定開始処理305をコール402する。 【0079】次に、ソフトウェアカウンタ基準値測定用メインプログラム301のタスクプライオリティをソフトウェアカウンタ基準値測定用疑似アイドルタスク303よりみづから低く設定する。 【0080】その結果、プリエンプション404が発生し、走行タスクは、ソフトウェアカウンタ基準値測定用疑似アイドルタスク303に移行する。その後、ソフトウェアカウンタ基準値測定用疑似アイドルタスク303は、インクリメントを開始405し、やがて指定分のインクリメントを終了し、みづから自タスクを終了させる。 【0081】その結果プリエンプションが発生407し、走行タスクはWAIT状態にあったソフトウェアカウンタ基準値測定用メインプログラム301へと変化する。 【0082】ここで、ソフトウェアカウンタ基準値測定用測定終了処理306をコール408すると、前記図9で説明した処理をソフトウェアカウンタ基準値測定用測定終了処理306が実施される。 【0083】ソフトウェアカウンタ基準値=1周期割り込みあたりのソフトウェアカウンタのインクリメント回数=N3/(N2−N1) N1:402で取得した周期割り込み回数N2:408で取得した周期割り込み回数N3:ソフトウエアカウンタのインクリメント回数この結果、ソフトウェアカウンタ基準値を、上記の式で計算することができる。この結果得られる値は、1周期割り込みあたりのソフトウェアカウンタのインクリメント時間である。 【0084】図1で示したモジュール構成でCPU使用率を測定する場合には、このソフトウェアカウンタ基準値を使って、CPU使用率測定用アイドルタスクの走行時間を、周期割り込み回数換算で得ることができるようになり、同じく周期割り込み回数を使って得た測定総区間の値を分母とすることにより、CPU使用率測定用疑似アイドルタスクの走行比率を得ることができるようになる。 【0085】[発明の他の実施の形態]通常のリアルタイムOSの場合には、周期割り込み回数を任意のタイミングで知ることができるアプリケーションインタフェース(システムコール)を提供している。従って、本発明の実現に当たっては、この機能の利用が簡便である。しかしながら、この機能がなくても、CPU、もしくはCPUボード上の周期タイマから周期割り込み回数を得るソフトウェア手段を簡便に実現することができるために、本発明の方式を容易に実現することが可能となる。 【0086】ソフトウェアカウンタのデータ幅は32ビットのものを2つでなくてもかまわない。また、周期割り込み回数のデータ幅も32ビットである必要性はない。 【0087】[発明の更に他の実施の形態]次に本発明による更に他の実施の形態について図面を参照しながら詳細に説明する。 【0088】図11は本発明による更に他の実施の形態を実施するデータ処理システムの構成を示すブロック図である。 【0089】図11を参照するに、参照符号203は本発明に係るCPU使用率測定用疑似アイドルタスク処理プログラムを記録した記録媒体を示し、入力装置201からの指示によりこの記録媒体203より疑似アイドルタスク処理プログラムがデータ処理装置202に読み込まれる。 【0090】データ処理装置202に読み込まれたデータは一旦記憶装置204に格納され、記憶装置204からデータ処理装置202を介して出力装置205に出力され、入力装置201の入力操作によりその都度出力装置205にそのデータ即ち疑似アイドルタスク処理プログラムが出力され、それと同時にモニタ206に表示される。オペレータはモニタ206を目視しながら入力操作を実行することができる。 【0091】記録媒体203に記録されるCPU使用率測定用疑似アイドルタスク処理プログラムは、図7のフローチャートに示されたCPU使用率測定用疑似アイドルタスク処理プログラムである。 【0092】即ち、そのCPU使用率測定用疑似アイドルタスク処理プログラムは、第1の処理として、まず計測データ群の初期化が行われる。具体的には、測定開始/終了時に取得する周期割り込み回数の格納先とソフトウェアカウンタ104(下位/上位)の0クリアが行われる。 【0093】以後、CPU使用率測定用疑似アイドルタスク103は、ソフトウェアカウンタ104のインクリメント処理を繰り返し実行する。 【0094】第2の処理としてのソフトウェアカウンタ104のインクリメント処理は、まずソフトウェアカウンタ104(下位)のオーバフローの有無をチェックする。オーバフローしていなかった場合には、単にソフトウェアカウンタ104(下位)を1つインクリメントする(第3の処理)。 【0095】第4の処理として、オーバフローしていた場合には、ソフトウェアカウンタ104(上位)への桁上がりと判断し、次に、ソフトウェアカウンタ104(上位)のオーバフローの有無をチェックする(第5の処理)。 【0096】もし、オーバフローしていなかった場合には、ソフトウェアカウンタ104(上位)を1つインクリメントする(第6の処理)、と共に、ソフトウェアカウンタ104(下位)を0クリアする。 【0097】第7の処理として、オーバフローしていた場合には、これ以上測定できないためにこれで測定終了と判断し、この時点での周期割り込み回数の取得を行ない、用なしとなったCPU使用率測定用疑似アイドルタスクを削除する(第8の処理)。 【0098】 【発明の効果】本発明は以上の如く構成され、作用するものであり、本発明によれば以下に示すごとき効果が得られる。 【0099】第1の効果は、タスクスケジュールなどの内部情報が公開されていないOS(オペレーティングシステム)を使用したシステムにおいて、システム実働時の指定区間内のアプリケーションプログラムのCPU使用率を、ハードウェアカウンタやロジックアナライザといったハードウェア手段に頼らずに簡便なソフトウェア手段のみにより正確に測定する方法が提供できる点にある。 【0100】その理由は、本発明に必要なモジュールを全てOS以外のソフトウェアにより実現しているからである。 【0101】第2の効果は、キャッシュのヒット/ミスヒットの影響を受けない点にある。 【0102】その理由は、本発明のために用意するソフトウェアモジュールが、測定対象となるアプリケーションプログラムとは別の実行モジュールとして用意されて、かつ非キャッシュアドレスに割り付けられているからである。
|
| 【出願人】 |
【識別番号】000004237 【氏名又は名称】日本電気株式会社
|
| 【出願日】 |
平成10年(1998)5月15日 |
| 【代理人】 |
【弁理士】 【氏名又は名称】熊谷 雄太郎
|
| 【公開番号】 |
特開平11−327927 |
| 【公開日】 |
平成11年(1999)11月30日 |
| 【出願番号】 |
特願平10−132901 |
|