JP3884237B2 - マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム - Google Patents
マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム Download PDFInfo
- Publication number
- JP3884237B2 JP3884237B2 JP2001039764A JP2001039764A JP3884237B2 JP 3884237 B2 JP3884237 B2 JP 3884237B2 JP 2001039764 A JP2001039764 A JP 2001039764A JP 2001039764 A JP2001039764 A JP 2001039764A JP 3884237 B2 JP3884237 B2 JP 3884237B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- time
- recording medium
- information recording
- register value
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、例えば画像形成装置等においてソフトウェア品質管理、ソフトウェア開発ツール等に役立つマルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラムに関する。
【0002】
【従来の技術】
現在では、オペレーティングシステムなどでマルチスレッドがサポートされていない場合でも、ソフトウェアマルチスレッドなどの方法で、マルチスレッドプログラミングが可能となっている。
【0003】
マルチスレッドプログラミングは、オペレーティングシステムがサポートするマルチタスクとは異なり、その実装が軽いため、利用する資源も少なく、見掛け上、たくさんのプログラムを並行して動作させることが可能である。
【0004】
【発明が解決しようとする課題】
ところが、ソフトウェアマルチスレッドなどでは、オペレーティングシステムのサポートが受けられないため、そのデバッグには困難を極める。また、どのように動作しているかなどのプロファイルの取得も難しい。
【0005】
どのように動作しているかの情報の一つに、スタックの消費量がある。スレッドの生成時に或る一定量のスタック領域の割り当てをスレッド毎に行っているが、最初に割り当てられるスタックを大きくすると、利用されることのない無駄なリソースが発生する一方、少なすぎるとスタックの自動拡張が頻繁に発生してスレッドの動作効率が悪化してしまう。
【0006】
本発明の目的は、プログラミングが終了した後に、最も一般的に使われているような方法で、プログラムを動作させてスタックの消費量を測定し、その消費量よりも少し多めの量をスレッド生成時に割り当てるスタック量とすることにより、プログラムを効率よく動作させることができるマルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラムを提供することである。
【0007】
また、スレッド単位の実行時間を測定することにより、どのスレッドが多くの時間を消費しているかを明確にし、プログラムのチューニングを容易にすることを目的とする。
【0008】
また、スレッドプログラミングの長所として、同一プロセス内で、複数の待ち合わせが簡単に記述できることが挙げられるが、このように記述されるスレッドは消費時間が少ない故に、そのスレッド実行中にオペレーティングシステムによるタスクスイッチングが殆ど発生しないため、CPUが持つフリーランカウンタなどを使った時間測定でないと正確に測定できないようなスレッドがある点を考慮し、このようなスレッドの消費時間を正確に測定できるようにすることを目的とする。
【0009】
さらに、プログラム実行終了時に自動的にスレッドプロファイル情報を取得できるようにすることを目的とする。
【0010】
また、一度実行を始めたらそのシステム全体の電源が断たれるまで動き続けるようなプログラムについて、スレッドプロファイル情報を取得できるようにすることを目的とする。
【0011】
さらには、外部ストレージなどの記憶装置を持たないシステムでは、プログラムの実行が終了する際などに出力されるスレッドプロファイル情報を保管しておくことができない点を考慮し、外部ストレージなどの記憶装置を持たないシステムでもスレッドプロファイル情報を取得できるようにすることを目的とする。
【0012】
【課題を解決するための手段】
請求項1記載の発明は、情報記録媒体と、マルチスレッド化プログラムを実行するプロセッサと、を備えたプロファイル装置における、マルチスレッドのプロファイル方法であって、前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する工程と、前記スレッドのコンテキストスイッチングを行う工程と、前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す工程と、前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間と、の差分に基づき前記スレッド毎の動作時間を求める工程と、を含む。
【0013】
従って、コンテキストスイッチングによる自スレッドから他スレッドへの移行時の処理は自スレッド内で行われるため、コンテキストスイッチング時に動作していた当該スレッドのスタックポインタのレジスタ値を特定領域に書き出すことにより、スレッドで使用するスタック量を推定できることとなり、そのスタック量よりも少し多めの量をスレッド生成時に割り当てるスタック量とすることにより、プログラムを効率よく動作させることが可能となる。
【0015】
また、スレッド単位の実行時間を測定することにより、どのスレッドが多くの時間を消費しているかを明確にすることができ、プログラムのチューニングが容易となる。
【0016】
請求項2記載の発明は、請求項1記載のマルチスレッドのプロファイル方法において、前記動作時間を求める工程におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める。
【0017】
従って、請求項1記載の発明を実現する上で、CPU等のハードウェアが持つフリーランカウンタを利用して時間測定を行うことで、正確に測定でき、どのスレッドが多くの時間を消費しているかを正確に把握でき、プログラムのチューニングやスレッド間の時間配分が推定できるため、負荷分布等の検討を適切に行える。
【0018】
請求項3記載の発明は、請求項1記載のマルチスレッドのプロファイル方法において、前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる工程を含む。
【0019】
従って、プログラムの実行終了時に自動的にスレッドプロファイル情報を取得できる。
【0020】
請求項4記載の発明は、請求項1記載のマルチスレッドのプロファイル方法において、実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する工程と、前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる工程と、を含む。
【0021】
従って、一度実行を始めたらそのシステム全体の電源が断たれるまで動き続けるようなプログラムについても、そのプログラムの実行途中経過について、スレッドプロファイル情報を取得することができる。
【0022】
請求項5記載の発明は、請求項4記載のマルチスレッドのプロファイル方法において、前記送付する工程と前記出力させる工程とをネットワーク経由で行わせる。
【0023】
従って、外部ストレージなどの記憶装置を持たないシステムでもネットワークを利用することによりスレッドプロファイル情報を取得することができる。
【0024】
請求項6記載の発明は、情報記録媒体と、マルチスレッド化プログラムを実行するプロセッサと、を備えたプロファイル装置において、前記プロセッサは、前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する手段と、前記スレッドのコンテキストスイッチングを行う手段と、前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す手段と、前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間との差分に基づき前記スレッド毎の動作時間を求める手段と、を備える。
【0025】
従って、コンテキストスイッチングによる自スレッドから他スレッドへの移行時の処理は自スレッド内で行われるため、コンテキストスイッチング時に動作していた当該スレッドのスタックポインタのレジスタ値を特定領域に書き出すことにより、スレッドで使用するスタック量を推定できることとなり、そのスタック量よりも少し多めの量をスレッド生成時に割り当てるスタック量とすることにより、プログラムを効率よく動作させることが可能となる。
【0027】
また、スレッド単位の実行時間を測定することにより、どのスレッドが多くの時間を消費しているかを明確にすることができ、プログラムのチューニングが容易となる。
【0028】
請求項7記載の発明は、請求項6記載のマルチスレッドのプロファイル装置において、前記動作時間を求める手段におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める。
【0029】
従って、請求項6記載の発明を実現する上で、CPU等のハードウェアが持つフリーランカウンタを利用して時間測定を行うことで、正確に測定でき、どのスレッドが多くの時間を消費しているかを正確に把握でき、プログラムのチューニングやスレッド間の時間配分が推定できるため、負荷分布等の検討を適切に行える。
【0030】
請求項8記載の発明は、請求項6記載のマルチスレッドのプロファイル装置において、前記プロセッサは、前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる手段を備える。
【0031】
従って、プログラムの実行終了時に自動的にスレッドプロファイル情報を取得できる。
【0032】
請求項9記載の発明は、請求項6記載のマルチスレッドのプロファイル装置において、前記プロセッサは、実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する手段と、前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる手段と、を備える。
【0033】
従って、一度実行を始めたらそのシステム全体の電源が断たれるまで動き続けるようなプログラムについても、そのプログラムの実行途中経過について、スレッドプロファイル情報を取得することができる。
【0034】
請求項10記載の発明は、請求項9記載のマルチスレッドのプロファイル装置において、前記送付する手段と前記出力させる手段とをネットワーク経由で行わせる。
【0035】
従って、外部ストレージなどの記憶装置を持たないシステムでもネットワークを利用することによりスレッドプロファイル情報を取得することができる。
【0036】
請求項11記載の発明は、情報記録媒体と、マルチスレッド化プログラムを実行するプロセッサと、を備えたプロファイル装置のコンピュータに、前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する機能と、前記スレッドのコンテキストスイッチングを行う機能と、前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す機能と、前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間との差分に基づき前記スレッド毎の動作時間を求める機能と、を実現させる。
【0037】
従って、コンテキストスイッチングによる自スレッドから他スレッドへの移行時の処理は自スレッド内で行われるため、コンテキストスイッチング時に動作していた当該スレッドのスタックポインタのレジスタ値を特定領域に書き出すことにより、スレッドで使用するスタック量を推定できることとなり、そのスタック量よりも少し多めの量をスレッド生成時に割り当てるスタック量とすることにより、プログラムを効率よく動作させることが可能となる。
【0039】
また、スレッド単位の実行時間を測定することにより、どのスレッドが多くの時間を消費しているかを明確にすることができ、プログラムのチューニングが容易となる。
【0040】
請求項12記載の発明は、請求項11記載のコンピュータ・プログラムにおいて、前記動作時間を求める工程におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める。
【0041】
従って、請求項11記載の発明を実現する上で、CPU等のハードウェアが持つフリーランカウンタを利用して時間測定を行うことで、正確に測定でき、どのスレッドが多くの時間を消費しているかを正確に把握でき、プログラムのチューニングやスレッド間の時間配分が推定できるため、負荷分布等の検討を適切に行える。
【0042】
請求項13記載の発明は、請求項11記載のコンピュータ・プログラムにおいて、前記コンピュータに、前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる機能をさらに実現させる。
【0043】
従って、プログラムの実行終了時に自動的にスレッドプロファイル情報を取得できる。
【0044】
請求項14記載の発明は、請求項11記載のコンピュータ・プログラムにおいて、前記コンピュータに、実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する機能と、前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる機能と、をさらに実現させる。
【0045】
従って、一度実行を始めたらそのシステム全体の電源が断たれるまで動き続けるようなプログラムについても、そのプログラムの実行途中経過について、スレッドプロファイル情報を取得することができる。
【0046】
請求項15記載の発明は、請求項14記載のコンピュータ・プログラムにおいて、前記送付する機能と前記出力させる機能とをネットワーク経由で行わせる。
【0047】
従って、外部ストレージなどの記憶装置を持たないシステムでもネットワークを利用することによりスレッドプロファイル情報を取得することができる。
【0048】
【発明の実施の形態】
本発明の第一の実施の形態を図1及び図2に基づいて説明する。本実施の形態は、例えばデジタル複写機、複合機等のマルチタスクシステムに適用されており、図1はそのハードウェア構成の概略を示すブロック図である。
【0049】
まず、マイクロコンピュータ1の主体としてCPU(Central Processing Unit)2を有しており、このCPU2には、バスライン3により、ROM(Read Only Memory)4、RAM(Random Access Memory)5、HDD(Hard Disc Drive)6、CD(Compact Disc)−ROM7が装填されるCD−ROMドライブ8が接続されている。また、CPU2に対しては、バスライン3を介して、原稿画像を読取るスキャナ9、画像データに基づき転写紙等に印刷処理を行う電子写真プロセスを利用したレーザプリンタ等によるプリンタ10が接続されている他、外部に対するインタフェース、例えば、イーサネットI/F11が接続されている。
【0050】
また、予め記録されたコンピュータ・プログラム(ソフトウェア)をCPU2に提供できる情報記憶媒体として、ROM4、RAM5、HDD6、CD−ROM7等を有している。この他、特に図示しないが、予め記録されたコンピュータ・プログラム(ソフトウェア)をCPU2に提供できる情報記憶媒体としては、MO,MD,CD−R/RW,DVD−R/RW,メモリカード等であってもよい。
【0051】
このマイクロコンピュータ1では、CPU2に各種の処理動作を実行させるためのコンピュータ・プログラムがソフトウェアとして予め設定されており、例えば、CD−ROM7に予め記録されている。このようなソフトウェアは、マイクロコンピュータ1の起動時にRAM5に複写されて動作時にCPU2に読み取られる。特に、本実施の形態においては、このCPU2がマルチスレッド化プログラムを実行するプロセッサとして機能する。このようにCPU2が各種のプログラムを読み取って対応するデータ処理を実行することにより、後述する各種工程、各種手段及び各種機能が実現される。
【0052】
次に、このようなマルチタスクシステム中で構築されている本実施の形態のスレッド機構構成例を図2に示す。図2を参照して、スレッドの生成から起動までを簡単に説明する。
【0053】
スレッド生成部21によるスレッド生成を受けたら、まず、スレッド(スレッド0,1,2)毎に用意されるスタックをスタック生成部22により準備する。次に、スレッド情報管理部23によりスレッド毎に用意されるスレッド固有の情報(例えば、スレッドIDやスレッドネーム、スレッド属性など)を初期化する。最後に、スレッド自体を生成して、スレッド起動部24により起動する(スレッドへ制御を移す)。
【0054】
スレッド制御部25では、或る一定時間経過したか或いはMutexロックなどの要求があったときには、スレッド切替部26によりスレッドの切り替えを行う。スレッドプロファイル部27はスレッドが動作している間は動作し続ける。
【0055】
ここで、マルチスレッドのコンテキストスイッチングについて簡単に説明する。マルチスレッドのコンテキストスイッチングには、自発的に発生するVOLUNTARYコンテキストスイッチングと、スレッド相互で発生するPREEMPTIVEコンテキストスイッチングとがある。
【0056】
前者のVOLUNTARYコンテキストスイッチングは、或るスレッドが演算を繰り返しており、CPU2を一人占めしているような場合に、或る一定時間経過後にCPU2を他のスレッドに割り当てる時に発生する。
【0057】
後者のPREEMPTIVEコンテキストスイッチングは、スレッドについての或る特定の操作を行った場合に発生するもので、例えば、Mutexのロックやアンロック操作時に発生する。ここで、Mutexとは、MUTual Exclusionの略で、複数のスレッドが同時にスレッド間で共有しているリソースにアクセスできないようにするための機構である。スレッドから共有リソースにアクセスするためには、
▲1▼ 共有リソースと結び付けられたMutexをロック
▲2▼ 共有リソースにアクセス
▲3▼ ロックしたMutexをアンロック
なる手順で行う必要がある。
【0058】
このようなことから、本実施の形態では、VOLUNTARYコンテキストスイッチングとPREEMPTIVEコンテキストスイッチングとの何れであっても、自スレッドから他のスレッドへの移行時の処理は、自スレッド内で行われるため、このようなコンテキストスイッチング直前のスレッドのスタックポインタの最小値をRAM5等のメモリの特定領域に書き出すことにより保存させるようにしたものである。この処理により、本発明にいうスタックプロファイル方法におけるスタックポインタのレジスタ値を特定領域に書き出す工程、手段又は機能が実現されている。
【0059】
このようなマルチスレッドのスタックプロファイル方法によれば、自スレッドのスタック消費量を厳密に正確ではないが、或る程度推定可能となる。このようにスレッドで使用するスタック量が推定できるため、プログラムを効率よく動作させることができる。なお、この時、各スレッドに割り当てられているスタックは、アドレスが大きい方から小さい方へ順に利用されるものとする。
【0060】
また、本実施の形態では、同じタイミング(スレッドのコンテキストスイッチング時)で時間を測定しておくことで、前回のコンテキストスイッチング時の時間との差分をとり、スレッドの動作時間を求めるようにしている。この処理により、本発明にいうタイムプロファイル方法における動作時間を求める工程、手段又は機能が実現されている。このようなマルチスレッドのタイムプロファイル方法によれば、スレッドの消費時間の目安を得ることにより、どのスレッドが多くの時間を消費しているかを明確にでき、プログラムのチューニングが容易となる。
【0061】
この時間を測定する場合、ハードウェア上に実装されているフリーランカウンタを用いれば、マイクロ秒(μsec)単位で正確に時間を測定することができる。ここに、フリーランカウンタとは、ハードウェア、具体的には、CPU2内に用意された32bitないし64bitのカウンタで、その加算処理をCPU2の動作クロックをn倍したタイミングで行うものである。これによれば、どのスレッドが多くの時間を消費しているかを正確に把握でき、プログラムのチューニングやスレッド間の時間配分が推定できるため、負荷分散等の検討に役立つ。
【0062】
本発明の第二の実施の形態を図3及び図4に基づいて説明する。本実施の形態は、スレッドプロファイル方法の内、その情報の出力方法に関するもので、ネットワーク経由でスレッドプロファィル情報を取得する場合への適用例を示す。
【0063】
まず、図3にシステム構成例を示す。このシステムは、例えば、図1で前述したようなデジタル複写機や複合機等の画像形成装置のマルチタスクシステムへの適用例を示し、まず、PCクライアント31は、このデジタル複写機や複合機等の画像形成装置なるマルチタスクシステム32から得られたスレッドプロファイル情報をネットワーク33を経由して取り出し、HDD、ディスク等のメモリ34に蓄積させる機能を有する。プログラムを実行するマルチタスクシステム32とPCクライアント31とは、TCP/IPなどの通信プロトコルで接続されている。
【0064】
このような構成において、大まかな手順としては、PCクライアント31により起動されるスレッドプロファイル情報読出プロセス35が対象プロセス36に対してソフトウェア割り込みを発生させると、対象プロセス36中のスレッドプロファイル情報書出処理がスレッドプロファイル情報を共有メモリ37に書き込む。共有メモリ37に書き込まれたスレッドプロファイル情報はスレッドプロファイル情報読出プロセス35が読み出してPCクライアント31に転送する、という手順が採られる。
【0065】
図4に示すフローチャートを参照して詳細に説明する。まず、スレッドプロファイル情報読出プロセス35をPCクライアント31から起動する(ステップS1)。PCクライアント31とマルチタスクシステム32とがTCP/IPの特定ポートで接続されると、スレッドプロファイル情報読出プロセス35が起動される。この起動後に、スレッドプロファイル情報のための共有メモリ37が確保される(S2)。
【0066】
次に、スレッドプロファイル情報読出プロセス35上でテストカバレージを行いたい対象プロセス36を起動し、スレッドプロファイル情報を取得できるようにしておく(S3)。
【0067】
スレッドプロファイル情報読出プロセス35が、対象プロセス36に対してソフトウェア割り込みを発生させ(S4)、ソフトウェア割り込みを受けた対象プロセス36中のスレッドプロファイル情報書出処理がスレッドプロファイル情報を共有メモリ37に書き込む。共有メモリ37は限られた領域しかないため、領域を使い切ったら、領域の最初に戻って書き込むようにする。これらのステップS1ないしS4の処理により、本発明にいうプロファイル情報出力方法における出力開始を送付する工程、手段又は機能が実現されている。
【0068】
スレッドプロファイル情報を共有メモリ37に転送する際に、転送する量の空きが共有メモリ37上にあるか否かをチェックし(S5)、空きがあれば(S5のY)、スレッドプロファイル情報を共有メモリ37に転送し、転送終了シグナルをスレッドプロファイル情報読出プロセス35に送信する(S6)。スレッドプロファイル情報読出プロセス35は、対象プロセス中のスレッドプロファイル情報書出処理から読出要求シグナル又は転送終了シグナルを受け取ったら、共有メモリ37から通信内容を読み出して、TCP/IPを介してPCクライアント31に転送し、処理を終了する(S11)。これらのステップS6,S11の処理により、本発明にいうスレッドプロファイル情報を出力させる工程、手段又は機能が実現されている。
【0069】
一方、共有メモリ37上に空きがなければ(S5のN)、スレッドプロファイル情報読出プロセス35に読出要求シグナルを送信し、共有メモリ37が空になったという書込可能シグナルをスレッドプロファイル情報読出プロセス35から受け取るまでは、転送処理を中断する(S7)。スレッドプロファイル情報読出プロセス35が、スレッドプロファイル情報転送処理から読出要求シグナルを受け取った時には、即座に、共有メモリ37の全てを読み出し、その読み出しが終了したら、対象プロセス36へ書込可能シグナルを送信する(S12)。
【0070】
【発明の効果】
請求項1,6及び11記載の発明によれば、コンテキストスイッチングによる自スレッドから他スレッドへの移行時の処理は自スレッド内で行われるため、コンテキストスイッチング時に動作していた当該スレッドのスタックポインタのレジスタ値を特定領域に書き出すようにしたので、スレッドで使用するスタック量を推定できることとなり、そのスタック量よりも少し多めの量をスレッド生成時に割り当てるスタック量とすることにより、プログラムを効率よく動作させることができる。
【0071】
また、スレッド単位の実行時間を測定するようにしたので、どのスレッドが多くの時間を消費しているかを明確にすることができ、プログラムのチューニングを容易にすることができる。
【0072】
請求項2,7及び12記載の発明によれば、各々、請求項1,6及び11記載の発明を実現する上で、CPU等のハードウェアが持つフリーランカウンタを利用して時間測定を行うようにしたので、正確に測定でき、どのスレッドが多くの時間を消費しているかを正確に把握でき、プログラムのチューニングやスレッド間の時間配分が推定できるため、負荷分布等の検討を適切に行わせることができる。
【0073】
請求項3,8及び13記載の発明によれば、プログラムの実行終了時に自動的にスレッドプロファイル情報を取得することができる。
【0074】
請求項4,9及び14記載の発明によれば、一度実行を始めたらそのシステム全体の電源が断たれるまで動き続けるようなプログラムについても、そのプログラムの実行途中経過について、スレッドプロファイル情報を取得することができる。
【0075】
請求項5,10及び15記載の発明によれば、請求項4,9及び14記載の発明において、外部ストレージなどの記憶装置を持たないシステムでもネットワークを利用することによりスレッドプロファイル情報を取得することができる。
【図面の簡単な説明】
【図1】本発明の第一の実施の形態のマルチタスクシステムのハードウェア構成例を示すブロック図である。
【図2】そのスレッド機構構成例を示す概略ブロック図である。
【図3】本発明の第二の実施の形態のネットワーク経由でスレッドプロファイル情報を取得するためのシステム構成例を示す概略ブロック図である。
【図4】その処理制御例を示すフローチャートである。
【符号の説明】
2 ハードウェア、プロセッサ
Claims (15)
- 情報記録媒体と、マルチスレッド化プログラムを実行するプロセッサと、を備えたプロファイル装置における、マルチスレッドのプロファイル方法であって、
前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する工程と、
前記スレッドのコンテキストスイッチングを行う工程と、
前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す工程と、
前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間と、の差分に基づき前記スレッド毎の動作時間を求める工程と、
を含むマルチスレッドのプロファイル方法。 - 前記動作時間を求める工程におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める請求項1記載のマルチスレッドのプロファイル方法。
- 前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる工程を含む請求項1記載のマルチスレッドのプロファイル方法。
- 実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する工程と、
前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる工程と、
を含む請求項1記載のマルチスレッドのプロファイル方法。 - 前記送付する工程と前記出力させる工程とをネットワーク経由で行わせる請求項4記載のマルチスレッドのプロファイル方法。
- 情報記録媒体と、マルチスレッド化プログラムを実行するプロセッサと、を備えたプロファイル装置において、
前記プロセッサは、前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する手段と、
前記スレッドのコンテキストスイッチングを行う手段と、
前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す手段と、
前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間との差分に基づき前記スレッド毎の動作時間を求める手段と、
を備えるマルチスレッドのプロファイル装置。 - 前記動作時間を求める手段におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める請求項6記載のマルチスレッドのプロファイル装置。
- 前記プロセッサは、前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる手段を備える請求項6記載のマルチスレッドのプロファイル装置。
- 前記プロセッサは、実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する手段と、
前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる手段と、
を備えた請求項6記載のマルチスレッドのプロファイル装置。 - 前記送付する手段と前記出力させる手段とをネットワーク経由で行わせる請求項9記載のマルチスレッドのプロファイル装置。
- 情報記録媒体と、マルチスレッド化プログラムを実行するプロセ ッサと、を備えたプロファイル装置のコンピュータに、
前記マルチスレッドのスレッド毎に前記情報記録媒体にスタックを確保する機能と、
前記スレッドのコンテキストスイッチングを行う機能と、
前記コンテキストスイッチング時に動作していたスレッドのスタックポインタのレジスタ値を、前記情報記録媒体の特定領域に書き出す機能と、
前記コンテキストスイッチング時の時間と前回のスイッチングコンテキスト時の時間との差分に基づき前記スレッド毎の動作時間を求める機能と、
を実現させるコンピュータ・プログラム。 - 前記動作時間を求める工程におけるスレッドのコンテキストスイッチング時の時間は、前記プロセッサの動作クロックに基づいてカウントされるフリーランカウンタより求める請求項11記載のコンピュータ・プログラム。
- 前記コンピュータに、
前記マルチスレッド化プログラム終了時に前記情報記録媒体に書き出されたレジスタ値を読み出し、スレッドプロファイル情報として出力させる機能をさらに実現させる請求項11記載のコンピュータ・プログラム。 - 前記コンピュータに、
実行中の前記マルチスレッド化プログラムにかかるプロセスに対して割り込みその他の通信方法により、前記情報記録媒体に書き出されたレジスタ値をスレッドプロファイル情報として出力開始を送付する機能と、
前記出力開始の送付に基づき前記情報記録媒体に書き出されたレジスタ値を読み出し、前記スレッドプロファイル情報として出力させる機能と、
をさらに実現させる請求項11記載のコンピュータ・プログラム。 - 前記送付する機能と前記出力させる機能とをネットワーク経由で行わせるようにした請求項14記載のコンピュータ・プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001039764A JP3884237B2 (ja) | 2001-02-16 | 2001-02-16 | マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001039764A JP3884237B2 (ja) | 2001-02-16 | 2001-02-16 | マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002244888A JP2002244888A (ja) | 2002-08-30 |
JP3884237B2 true JP3884237B2 (ja) | 2007-02-21 |
Family
ID=18902483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001039764A Expired - Fee Related JP3884237B2 (ja) | 2001-02-16 | 2001-02-16 | マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3884237B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
KR100737522B1 (ko) | 2005-12-02 | 2007-07-10 | 한국전자통신연구원 | 마이그레이션 데이터 모니터링 방법 및 시스템 |
WO2012120654A1 (ja) * | 2011-03-08 | 2012-09-13 | 富士通株式会社 | タスクスケジューリング方法およびマルチコアシステム |
JP2017167712A (ja) * | 2016-03-15 | 2017-09-21 | 西日本電信電話株式会社 | 情報端末、ログ記録方法及びログ記録プログラム |
-
2001
- 2001-02-16 JP JP2001039764A patent/JP3884237B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002244888A (ja) | 2002-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7007425B2 (ja) | 部分的にオフロードされた仮想化マネージャにおけるメモリ割当て技術 | |
JP5547436B2 (ja) | 仮想処理環境内のデータの収集を容易にするためのコンピュータ・プログラム、コンピュータによって実行される方法、およびコンピュータ・システム(中央演算処理装置測定機能の仮想化) | |
JP5624480B2 (ja) | 効率的な決定論的マルチプロセッシング(deterministicmultiprocessing) | |
KR101496077B1 (ko) | 낮은 오버헤드를 갖는 전력 프로파일 정보의 획득 | |
JP6845264B2 (ja) | オポチュニスティックハイパーバイザを用いたパフォーマンスの変動の低減 | |
US10620877B2 (en) | Managing a collection of data | |
US7328331B2 (en) | Method and system of aligning execution point of duplicate copies of a user program by copying memory stores | |
US20090070564A1 (en) | Method and system of aligning execution point of duplicate copies of a user program by exchanging information about instructions executed | |
JP3884237B2 (ja) | マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム | |
US8387062B2 (en) | Virtualization of storage buffers used by asynchronous processes | |
JP2010170325A (ja) | 情報処理装置、ログ格納方法及びプログラム | |
JP2011248469A (ja) | 情報処理装置および情報処理方法 | |
WO2001002957A1 (fr) | Processeur de signaux numeriques | |
McLeod | Usermode OS components on seL4 with rump kernels | |
JPH0440532A (ja) | リアルタイム処理装置 | |
JPH11272499A (ja) | 性能測定回路を備えた並列プロセッサシステムと、プログラムの性能測定方法 | |
WO2010038280A1 (ja) | 仮想計算機システム及びデッドロック解除方法 | |
JP3361949B2 (ja) | プログラム検証装置 | |
JP2003248590A (ja) | 結果不正検出方法およびシステム | |
JPH09330311A (ja) | 利用者プログラムの統計情報取得および記録方式 | |
Anderson et al. | E cient Object Sharing in Quantum-Based Real-Time Systems | |
JP2000029852A (ja) | マルチプロセッサシステム | |
JPH01124052A (ja) | マルチcpuシステムにおけるバス使用監視方式 | |
JPH05151005A (ja) | 資源管理処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040301 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040922 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050609 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060804 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060815 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061013 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061114 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061116 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101124 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111124 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111124 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121124 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131124 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |