JP2007257560A - 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム - Google Patents

複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム Download PDF

Info

Publication number
JP2007257560A
JP2007257560A JP2006084407A JP2006084407A JP2007257560A JP 2007257560 A JP2007257560 A JP 2007257560A JP 2006084407 A JP2006084407 A JP 2006084407A JP 2006084407 A JP2006084407 A JP 2006084407A JP 2007257560 A JP2007257560 A JP 2007257560A
Authority
JP
Japan
Prior art keywords
tracer
destination
trace information
program
processing
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.)
Granted
Application number
JP2006084407A
Other languages
English (en)
Other versions
JP4594889B2 (ja
Inventor
Joji Kato
丈治 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006084407A priority Critical patent/JP4594889B2/ja
Priority to US11/483,831 priority patent/US7831963B2/en
Publication of JP2007257560A publication Critical patent/JP2007257560A/ja
Application granted granted Critical
Publication of JP4594889B2 publication Critical patent/JP4594889B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】オペレーティング・システムや、プログラムの動作をNUMAシステムにおいてトレースする場合に、ノード間のバスへの負荷を軽減させることを可能とした、NUMAシステム上で実行されるプログラムのトレース方法を提供することである。
【解決手段】本発明のトレース方法は、一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、前記プログラムを実行する処理装置が、トレース処理の実行時に、そのタスク制御ブロックに指定されるトレース情報出力先領域にトレース情報を出力するように指定して、そのタスク制御ブロックに指定されるトレーサを実行するステップを備える。
【選択図】図10

Description

本発明は、複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステムに関する。
オペレーティング・システム(OS)自身の動作や、そのOS上でのプログラムの動作をトレースする技術が知られている。例えば、Linuxの場合、Linuxカーネル内のイベントのトレーサとして、非特許文献1のLKST(Linux Kernel State Tracer)や、非特許文献2のLTT(Linux Trace Toolkit)がよく知られている。
また、一方で、SMP(Symmetric Multiple Processor)システムや、NUMA(Non Uniform Memory Access)システムのような、複数のCPU(Central Processing Unit)を備えるシステムが知られている。
NUMAシステムの場合、各ノード(CPUボード)上に、1以上のCPUとメモリモジュールが配置されている。
従来のNUMAシステムでは、特定のノードのメモリモジュール内に、トレース情報を格納する領域が確保される。例えば、図12に示すように、トレース処理を実行しているCPUのノードが、トレース情報を格納する領域が確保されたメモリモジュールのノードと異なっている場合、ノード間でのメモリアクセスを行う必要があり、アクセスのオーバーヘッドが大きくなる。このため、そのノード間でのメモリアクセスが始まってから、ノード間のバスを使用する優先度の高い他の処理による割り込みが発生しても、その優先度の高い他の処理を待たせなければならない。
また、特許文献1には、複数のノードを持つNUMAシステムにおいて、コヒーレンスを検証する技術が開示されている。
http://sourceforge.jp/projects/lkst/ http://www.opersys.com/LTT/ 特開2002−334067号公報 「複数ノード・システム内のコヒーレンスの検証方法、そのプログラムおよびデータ処理システム」
本発明の課題は、オペレーティング・システムや、プログラムの動作をNUMAシステムにおいてトレースする場合に、ノード間のバスへの負荷を軽減させることを可能とした、NUMAシステム上で実行されるプログラムのトレース方法、および、NUMAシステムを提供することである。
本発明の別の課題は、オペレーティング・システムや、プログラムの動作をNUMAシステムにおいてトレースする場合に、そのタスクが移送された場合にも、ノード間のバスへの負荷を軽減させることを維持することを可能とした、NUMAシステム上で実行されるプログラムのトレース方法、および、NUMAシステムを提供することである。
本発明の第1態様のトレース方法は、複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、前記プログラムを実行する処理装置が、トレース処理の実行時に、そのタスク制御ブロックに指定されるトレース情報出力先領域にトレース情報を出力するように指定して、そのタスク制御ブロックに指定されるトレーサを実行するステップを備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法である。
ここで、一次記憶領域上のトレーサの格納先とトレース情報の出力先をトレース処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、タスク制御ブロックが生成される。よって、そのトレーサの格納先と、トレース情報の出力先を自身のノードのメモリモジュール上にそれぞれの処理装置が設定するようにするとともに、自身によるトレース処理の実行時には、そのタスク制御ブロックに指定されるトレース情報出力先領域にトレース情報を出力するように指定して、そのタスク制御ブロックに指定されるトレーサを実行するようにすれば、トレースの実行に伴うノード間でのアクセスが発生しなくなり、ノード間のバスへの負荷を軽減させることができる。
本発明の第2態様のトレース方法は、複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、前記プログラムに対応するタスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置が、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えるステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法である。
ここで、一次記憶領域上のトレーサの格納先とトレース情報の出力先をトレース処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、タスク制御ブロックが生成される。よって、そのトレーサの格納先と、トレース情報の出力先を自身のノードのメモリモジュール上にそれぞれの処理装置が設定するようにするとともに、そのプログラムに対応するタスクの移送が決定した場合に、そのタスクを担当していた移送元処理装置が、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えるようにすれば、そのタスクの移送後においても、トレースの実行に伴うノード間でのアクセスが発生しなくなり、ノード間のバスへの負荷を軽減させることを維持することが可能となる。
本発明の第3態様のNUMAシステムは、複数のトレース処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムにおいて、前記各ノードが備える一次記憶領域上には、トレース情報を出力する領域と、トレースを実行するトレーサを格納する領域が設けられ、前記複数のノードのうちの、予め定められたノードの一次記憶領域には、トレース処理装置毎に対応する一次記憶領域上のトレーサの格納先とトレース情報の出力先を対応付けたトレーサ格納先トレース情報出力先記憶領域がさらに設けられ、トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置によって、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先が該タスク制御ブロックに書き込まれ、トレース対象とするプログラムの実行時に、前記担当する処理装置によって、そのプログラムのタスク制御ブロックから、前記トレーサの格納先および前記トレース情報の出力先が取得され、前記担当する処理装置によって、前記取得されたトレーサの格納先からトレーサをフェッチされて実行されるとともに、前記取得された出力先にトレース情報が出力されることを特徴とする複数のトレース処理装置を備えたシステムである。
本発明の第4態様のNUMAシステムは、複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムにおいて、前記各ノードが備える一次記憶領域上には、トレース情報を出力する領域と、トレースを実行するトレーサを格納する領域が設けられ、前記複数のノードのうちの、予め定められたノードの一次記憶領域には、処理装置毎に対応する一次記憶領域上のトレーサの格納先とトレース情報の出力先を対応付けたトレーサ格納先トレース情報出力先記憶領域がさらに設けられ、トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置によって、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先が該タスク制御ブロックに書き込まれ、タスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置によって、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えられるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えられることを特徴とする複数の処理装置を備えたシステムである。
本発明によれば、オペレーティング・システムや、プログラムの動作をNUMAシステムにおいてトレースする場合に、ノード間のバスへの負荷を軽減させることができる。
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
NUMAシステムは、複数のノードを備えることができるシステムである。すなわち、NUMAシステムは、1以上のノードによって構成される。それぞれのノードは、1以上のCPUがメモリモジュールとともにボード上に搭載されて構成される。
図1は、本発明の一実施形態のNUMAシステムの構成を示す図である。
図1では、2つのCPUがメモリモジュールとともにボード上に搭載されたノード11及びノード15がバス19を介して接続されている。
すなわち、ノード11は、CPU12、13と、メモリモジュール14により構成され、ノード15は、CPU16、17と、メモリモジュール18により構成される。
NUMAシステム上のいずれかのノード、例えば、ノード11が後述のBOOT CPUが存在するノードとなる。このノード11のメモリモジュール14上には、例えば、タスク管理機構、そのタスク管理機構が生成したタスク制御ブロックのリスト、トレースを実行するプログラムであるトレーサ(コピー元のオリジナル)が存在する。
図2は、NUMAシステムの初期化処理のフローチャートである。
図2において、まず、システムの電源がONになったときに、ファームウェアによって、NUMAシステムを構成する複数のCPUのうちの1つがブート処理を行うCPUとして決定される。このCPUを以下ではブートCPU(BOOT CPU)と呼ぶ。
BOOT CPUによって、ステップS101で、アーキテクチャに依存する部分の初期化が行われる。このステップでは、システムのメモリ容量、システムの各CPUのメーカ名、バージョン番号を基に、使用可能な機能が獲得される。また、BOOT CPUがファームウェアに問い合わせることによって、メモリレイアウトが調べられる。
続く、ステップS102では、BOOT CPUによって、獲得した機能を使用するための情報が設定される。
そして、ステップS103で、CPUをプロセス(ジョブ、タスクともいう)に割り当てる(プロセスを管理する)スケジューラがBOOT CPUによって初期化される。すなわち、プロセスを管理するのに必要なデータ構造が初期化される。
ステップS104では、例外(トラップ等)に対応するメモリの位置がBOOT CPUによって設定される。
ステップS105では、デバイスが発行する割り込みに対するメモリ上の位置を管理するテーブルの初期化がBOOT CPUによって実行される。
ステップS106では、BOOT CPUによって、プロセスにメモリをページ単位で割り当てるページ管理情報が初期化される。
ステップS107では、NUMA用管理テーブルの初期化が行われる。このステップでは、BOOT CPUによって、NUMA用管理テーブルの領域が自身の属するノードのメモリ上に確保されるとともに、BOOT CPU、および、システムが備える他のCPUによって、自身の情報がそのNUMA用管理テーブルに書き込まれる。
なお、図3に示すように、NUMA用管理テーブルでは、ノードID、そのノードIDを持つノードに含まれるCPUのID(CPU_ID)、そのノードIDを持つノードのメモリの開始アドレスと終了アドレスの各項目が、ノード毎に一定の順番(例えば、ノードIDの昇順)に並んでいる。
ステップS108では、システムのそれぞれのノードのメモリ上での、トレースを実行するプログラム(トレーサ)の記憶領域と、そのトレーサが出力するトレース情報の出力先領域(トレース情報記憶領域)をCPU毎に対応付けて記憶する記憶領域(トレーサ格納先トレース情報出力先記憶領域)が、BOOT CPUによって、そのBOOT CPUが存在するノードのメモリモジュール上に確保される。
そして、ステップS109において、システムのそれぞれのCPU(BOOT CPUも含む)によって、トレーサ用の領域の初期化が行なわれる。
図4は、図2のステップS109の処理をより詳細に示すフローチャートである。
図4において、まず、ステップS201で、それぞれのノード中の1以上のCPUのうちの予め定められたCPUによって、まず、自身のノードの一次記憶領域上に、トレース情報を出力する領域が確保される。
続く、ステップS202では、上記それぞれのノード中の予め定められたCPUによって、自身のCPU_IDが取得される。そして、ステップS203で、その予め定められたCPUによって、図3のNUMA用管理テーブルからBOOT CPUがあるノードについての情報が取得される。例えば、BOOT CPUがあるノードのノードIDが「0」であることは(その予め定められたCPUを含む)すべてのCPUに既知であり、その予め定められたCPUは、ノードIDが「0」であるノードの情報をNUMA用管理テーブルから取得する。
ステップS204では、その予め定められたCPUによって、ステップS203で取得したノードの情報中のCPU_IDのリスト(そのノードに含まれるCPUのリスト)が取得される。
そして、ステップS205で、その予め定められたCPUによって、ステップS204で取得したCPU_IDのリスト中に、ステップS202で取得した自身のCPU_IDがあるかが判定される。
なお、本実施形態では、BOOT CPUのあるノードのメモリモジュール内にトレーサ・プログラムのオリジナルが存在している。したがって、ステップS205において、ステップS204で取得したCPU_IDのリスト中に、ステップS202で取得した自身のCPU_IDがないと判定された場合は、BOOT CPUのあるノードから自身のノードにトレーサ・プログラムをコピーする必要がある。すなわち、この場合、ステップS207において、BOOT CPUのあるノード以外のノード存在する、1以上のCPUのうちの予め定められたCPUによって、自身のノードのメモリモジュール内に、トレーサ・プログラムを格納するための領域が確保される。
そして、ステップS208で、BOOT CPUのあるノード以外のノードに存在する、1以上のCPUのうちの予め定められたCPUによって、そのBOOT CPUのあるノードのメモリモジュールからトレーサ・プログラムがコピーされる。
ステップS209では、BOOT CPUのあるノード以外のノードに存在する、それぞれのCPUによって、ステップS207で取得した領域、すなわち、トレーサ・プログラムを格納する領域の先頭アドレスが上述のトレーサ格納先トレース情報出力先記憶領域に書き込まれ、ステップS210に進む。
一方、ステップS205において、ステップS204で取得したCPU_IDのリスト中に、ステップS202で取得した自身のCPU_IDがあると判定された場合は、自身のノードのメモリモジュール内にトレーサ・プログラムがすでに格納済みであるので、ステップS206において、BOOT CPUのあるノードに存在する、(それぞれの)CPUによって、自身のノード上のトレーサ・プログラムを格納した領域の先頭アドレスがトレーサ格納先トレース情報出力先記憶領域に書き込まれ、ステップS210に進む。
ステップS210では、それぞれのCPUによって、ステップS201で確保した、自身の属するノードのメモリモジュール内のトレース情報の出力先領域の先頭アドレスが、トレーサ格納先トレース情報出力先記憶領域に書き込まれる。
図5は、トレーサ格納先トレース情報出力先記憶領域のデータ構造を示す図である。
図5に示すように、トレーサ格納先トレース情報出力先記憶領域では、CPU_ID(CPU番号)、そのCPU_IDのCPUが属するノードのノードID(ノード番号)、そのノードIDを持つノードのメモリモジュール上に確保されたトレース情報を格納する領域へのポインタ、そのノードIDを持つノードのメモリモジュール上に確保されたトレース処理を実行するトレーサを格納する領域へのポインタの各項目が、CPU_ID毎に一定の順番(例えば、CPU_IDの昇順)に並んでいる。
以上で、図2のステップS109まで説明したことになる。
再び図2の処理化処理の説明に戻る。
図2のステップS110では、BOOT CPUによって、各種デバイスドライバの初期化が行われる。続く、ステップS111では、BOOT CPUによって、アイドルタスクが生成され、ステップS112では、BOOT CPUによって、デフォルトで動作するプロセスが生成され、ステップS113では、BOOT CPUによって、タスクスイッチ、すなわち、スケジューラが実行される。
続いて、上記のようにして、初期化されたNUMAシステムについて、そのシステム自身(OS自身)または、そのOS上で動作するプログラムに対して、トレース処理を実行する場合を説明する。
図6は、本実施形態のタスク管理機構(タスク管理部)の構成を示した図である。
図6に示すように、タスク管理部21は、トレーサ格納先トレース情報出力先記憶領域を基に、タスク(プロセス、ジョブともいう)を管理するための情報であるタスク制御ブロックを生成するタスク制御ブロック生成部22、タスク制御ブロックの情報を、例えば、そのタスクを担当するCPUの移送時等に変更するタスク制御ブロック情報変更部23、CPUをタスクに割り当てるスケジューラ24を備える。
図7は、タスク制御ブロックのデータ構造を示す図である。
図7に示すように、タスク制御ブロックには、そのタスクを担当するCPUのCPU_ID(CPU番号)、そのCPU_IDのCPUが属するノードのノードID(ノード番号)、そのノードIDを持つノードのメモリモジュール上に確保されたトレース情報を格納する領域へのポインタ、そのノードIDを持つノードのメモリモジュール上に確保されたトレース処理を実行するトレーサを格納する領域へのポインタの各項目が、CPU_ID毎に一定の順番(例えば、CPU_IDの昇順)に並んでいる。
図8は、タスク制御ブロック生成処理のフローチャートである。このフローチャートは、図6のスケジューラ24によってタスク制御ブロック生成処理の実行を割り当てられたCPU(このCPUは、通常、プログラムの実行を担当するCPUと一致する)が、そのタスク制御ブロック生成処理を行うプログラムが存在するノード(通常、BOOT CPUが存在するノード)のメモリモジュールからそのプログラムをフェッチしデコードすることで実行される。
すなわち、このCPUによって、図6のステップS301で、例えば、BOOT CPUが存在するノードのメモリモジュール上に、そのCPUが実行するプログラムのタスク制御ブロック用の領域が確保される。
そして、ステップS302において、このCPUによって、確保されたタスク制御ブロックのCPU_IDの項目に、トレース対象のプログラムを実行するCPUが指定される。
ステップS303では、このCPUによって、確保されたタスク制御ブロックのトレーサ・プログラムの格納先の項目に、プログラムを実行しているCPUが存在するノードのメモリモジュール上のトレーサ・プログラムの先頭アドレスが指定される。
ステップS304では、このCPUによって、確保されたタスク制御ブロックのトレース情報の出力先の項目に、プログラムを実行しているCPUが存在するノードのメモリモジュール上のトレース情報記憶領域の先頭アドレスが指定される。
図9は、OS上で動作するアプリケーション・プログラムに対して行われるトレース処理を説明する図である。
図9では、例えば、アプリケーション・プログラムのそれぞれのサブルーチンに入った場合と、出た場合に、そのことを示すマークをトレース情報として出力する場合が想定されている。すなわち、図に示すように、アプリケーション・プログラムが実行中にサブルーチン「Sub1」に入った場合、“Sub1”という情報をトレース情報として出力する指示が、(1)で、アプリケーション・プログラムからOSになされる。
OSは、その指示を受けて、(2)で、トレーサαに対して、トレース情報を書き込む領域のポインタAと、その書き込み先に書き込む情報“Sub1”を渡す。トレーサは、(3)で、渡された情報“Sub1”を、指定されたポインタAの位置に書き込む。
図10は、OS自身に対して、または、OS上で動作するプログラムに対して行われるトレース処理のフローチャートである。この処理は、プログラムの実行およびそのプログラムのトレースを担当するCPUによって実行される。
図10において、まず、その担当のCPUによって、ステップS401で、その実行しているプログラムのタスク制御ブロックから、トレーサ・プログラムのアドレスが取得される。なお、図6のタスク制御ブロック生成部22がタスク制御ブロックを生成する方法には、様々な方法がある。例えば、タスク制御ブロック生成部22が、タスク制御ブロックをBOOT CPUがあるノードのメモリモジュール内に生成する場合、そのメモリモジュール内には、タスク制御ブロックのリストが生成されることになる。このリストを検索することで、自身が実行しているプログラムに対するタスク制御ブロックを取得できる。
続く、ステップS402では、担当のCPUによって、その実行しているプログラムのタスク制御ブロックから、トレース情報記憶領域のアドレスが取得される。
そして、ステップS403において、担当のCPUによって、ステップS402で取得したトレース情報記憶領域にトレース情報を出力するように指定して、ステップS401で取得したアドレス上のトレーサ・プログラムを実行させる。
次に、例えば、あるタスクが、IO待ち、時間待ち、メモリの空き待ち等から復帰した場合などに、スケジューラの判断によって、そのタスクの移送が決定された場合の処理について説明する。
図11は、スケジューラによってタスクの移送が決定された場合に行われる処理のフローチャートである。このフローチャートは、移送の決定前にそのタスクを担当していたCPU(移送元CPU)および移送先CPUによって実行される。
図11において、まず、ステップS501で、OSのスケジューラから移送元CPUに対して移送先CPUが通知される。
この通知を受けて、移送元CPUによって、ステップS502で、移送されるタスクに対応するタスク制御ブロックの、そのタスクを担当するCPUの項目が、移送先CPUのCPU_IDで上書きされる。
そして、ステップS503において、移送元CPUによって、BOOT CPUが存在するノードのメモリモジュール上に存在する、トレーサ格納先トレース情報出力先記憶領域から、移送先CPUのトレーサ・プログラム記憶領域のアドレスが取得される。
ステップS504では、移送元CPUによって、ステップS503で取得されたトレーサ・プログラム記憶領域のアドレスが、移送されるタスクに対応するタスク制御ブロックの、トレーサを格納する領域へのポインタの項目に上書きされる。
そして、ステップS505において、移送元CPUによって、上記トレーサ格納先トレース情報出力先記憶領域から、移送先CPUのトレース情報記憶領域のアドレスが取得される。
ステップS506では、移送元CPUによって、ステップS505で取得されたトレース情報記憶領域のアドレスが、移送されるタスクに対応するタスク制御ブロックの、トレース情報を格納する領域へのポインタの項目に上書きされる。
そして、ステップS506の処理を完了した移送元CPUが、移送先でタスクを再開するための準備が済んだことを示すトラップを移送先CPUに発行する。
移送先CPUは、このトラップを受け取って、ステップS507で、そのタスクを再開する。
本発明は下記構成でもよい。
(付記1) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、
前記プログラムを実行する処理装置が、トレース処理の実行時に、そのタスク制御ブロックに指定されるトレース情報出力先領域にトレース情報を出力するように指定して、そのタスク制御ブロックに指定されるトレーサを実行するステップを備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記2) 前記各処理装置は、前記トレーサ格納先トレース情報出力先記憶領域に、自身のトレーサの格納先とトレース情報の出力先を書き込むに際して、自身が属するノードの一次記憶領域上に存在する、トレーサの格納先およびトレース情報の出力先を指定することを特徴とする付記1記載の複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記3) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
前記複数の処理装置のうちで、予め定められた処理装置が、一次記憶領域上のトレーサの格納先とトレース情報の出力先をトレース処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を、自身のノードの一次記憶領域上に確保するステップと、
前記複数の処理装置が、自身のノードの一次記憶領域上に、トレース情報を出力する領域を確保するステップと、
前記複数の処理装置のうちで、トレースを実行するトレーサの格納元領域があるノードの処理装置を除く処理装置が、前記トレーサを格納する領域を自身のノードの一次記憶上に確保するステップと、
その確保した領域に、トレーサの格納元領域からトレーサをコピーするステップと、
前記複数の処理装置が、前記トレーサ格納先トレース情報出力先記憶領域に、自身の、トレース情報の出力先領域と、トレーサの格納先領域についての情報を書き込むステップと、
トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置が、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先を該タスク制御ブロックに書き込むステップと、
トレース対象とするプログラムの実行時に、前記担当する処理装置が、そのプログラムのタスク制御ブロックから、前記トレーサの格納先および前記トレース情報の出力先を取得するステップと、
前記担当する処理装置が、前記取得したトレーサの格納先のトレーサを実行するとともに、前記取得した出力先にトレース情報を出力するステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記4) 前記複数の処理装置のうちで、予め定められた処理装置によって、ノードとそのノードが備える処理装置を対応付けたシステム構成情報記憶領域を自身のノードの一次記憶領域上に確保するステップと、
前記複数の処理装置によって、それぞれ自身の情報を前記システム構成情報記憶領域に書き込むステップをさらに備え、
前記トレースを実行するトレーサを格納する領域を自身のノードの一次記憶上に確保するステップを実行するに際して、自身が、トレーサの格納元領域があるノードに存在するかどうかを前記システム構成情報記憶領域確認を基に、確認することを特徴とする付記3記載の複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記5) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、
前記タスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置が、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えるステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記6) 前記各処理装置は、前記トレーサ格納先トレース情報出力先記憶領域に、自身のトレーサの格納先とトレース情報の出力先を書き込むに際して、自身が属するノードの一次記憶領域上に存在する、トレーサの格納先およびトレース情報の出力先を指定することを特徴とする付記5記載の複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記7) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
前記複数の処理装置のうちで、予め定められた処理装置が、一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を、自身のノードの一次記憶領域上に確保するステップと、
前記複数の処理装置が、自身のノードの一次記憶領域上に、トレース情報を出力する領域を確保するステップと、
前記複数の処理装置のうちで、トレースを実行するトレーサの格納元領域があるノードの処理装置を除く処理装置が、前記トレーサを格納する領域を自身のノードの一次記憶上に確保するステップと、
その確保した領域に、トレーサの格納元領域からトレーサをコピーするステップと、
前記複数の処理装置が、前記トレーサ格納先トレース情報出力先記憶領域に、自身の、トレース情報の出力先領域と、トレーサの格納先領域についての情報を書き込むステップと、
トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置が、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先を該タスク制御ブロックに書き込むステップと、
前記タスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置が、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えるステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
(付記8) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムにおいて、
前記各ノードが備える一次記憶領域上には、トレース情報を出力する領域と、トレースを実行するトレーサを格納する領域が設けられ、
前記複数のノードのうちの、予め定められたノードの一次記憶領域には、処理装置毎に対応する一次記憶領域上のトレーサの格納先とトレース情報の出力先を対応付けたトレーサ格納先トレース情報出力先記憶領域がさらに設けられ、
トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置によって、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先が該タスク制御ブロックに書き込まれ、
トレース対象とするプログラムの実行時に、前記担当する処理装置によって、そのプログラムのタスク制御ブロックから、前記トレーサの格納先および前記トレース情報の出力先が取得され、
前記担当する処理装置によって、前記取得されたトレーサの格納先からトレーサをフェッチされて実行されるとともに、前記取得された出力先にトレース情報が出力されることを特徴とする複数の処理装置を備えたシステム。
(付記9) 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムにおいて、
前記各ノードが備える一次記憶領域上には、トレース情報を出力する領域と、トレースを実行するトレーサを格納する領域が設けられ、
前記複数のノードのうちの、予め定められたノードの一次記憶領域には、処理装置毎に対応する一次記憶領域上のトレーサの格納先とトレース情報の出力先を対応付けたトレーサ格納先トレース情報出力先記憶領域がさらに設けられ、
トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置によって、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先が該タスク制御ブロックに書き込まれ、
タスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置によって、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えられるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えられることを特徴とする複数の処理装置を備えたシステム。
本発明の一実施形態のNUMAシステムの構成を示す図である。 NUMAシステムの初期化処理のフローチャートである。 NUMA用管理テーブルのデータ構造を示す図である。 図2のステップS109の処理をより詳細に示すフローチャートである。 トレーサ格納先トレース情報出力先記憶領域のデータ構造を示す図である。 本実施形態のタスク管理機構(タスク管理部)の構成を示した図である。 タスク制御ブロックのデータ構造を示す図である。 タスク制御ブロック生成処理のフローチャートである。 OS上で動作するアプリケーション・プログラムに対して行われるトレース処理を説明する図である。 OS自身に対して、または、OS上で動作するプログラムに対して行われるトレース処理のフローチャートである。 移送処理の決定に対応して行われる処理のフローチャートである。 従来のNUMAシステムの問題点を説明する図である。
符号の説明
11、15 ノード
12、13、16、17 CPU
14、18 メモリモジュール
19 バス
21 タスク管理機構(タスク管理部)
22 タスク制御ブロック生成部
23 タスク制御ブロック情報変更部
24 スケジューラ

Claims (5)

  1. 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
    一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、
    前記プログラムを実行する処理装置が、トレース処理の実行時に、そのタスク制御ブロックに指定されるトレース情報出力先領域にトレース情報を出力するように指定して、そのタスク制御ブロックに指定されるトレーサを実行するステップを備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
  2. 前記各処理装置は、前記トレーサ格納先トレース情報出力先記憶領域に、自身のトレーサの格納先とトレース情報の出力先を書き込むに際して、自身が属するノードの一次記憶領域上に存在する、トレーサの格納先およびトレース情報の出力先を指定することを特徴とする請求項1記載の複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
  3. 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
    前記複数の処理装置のうちで、予め定められた処理装置が、一次記憶領域上のトレーサの格納先とトレース情報の出力先をトレース処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を、自身のノードの一次記憶領域上に確保するステップと、
    前記複数の処理装置が、自身のノードの一次記憶領域上に、トレース情報を出力する領域を確保するステップと、
    前記複数の処理装置のうちで、トレースを実行するトレーサの格納元領域があるノードの処理装置を除く処理装置が、前記トレーサを格納する領域を自身のノードの一次記憶上に確保するステップと、
    その確保した領域に、トレーサの格納元領域からトレーサをコピーするステップと、
    前記複数の処理装置が、前記トレーサ格納先トレース情報出力先記憶領域に、自身の、トレース情報の出力先領域と、トレーサの格納先領域についての情報を書き込むステップと、
    トレース対象とするプログラムのタスク制御ブロックの生成時に、前記トレーサ格納先トレース情報出力先記憶領域を基に、そのタスクを担当する処理装置が、自身の処理装置を識別する情報と、その自身の処理装置に対応する、前記トレーサの格納先および前記トレース情報の出力先を該タスク制御ブロックに書き込むステップと、
    トレース対象とするプログラムの実行時に、前記担当する処理装置が、そのプログラムのタスク制御ブロックから、前記トレーサの格納先および前記トレース情報の出力先を取得するステップと、
    前記担当する処理装置が、前記取得したトレーサの格納先のトレーサを実行するとともに、前記取得した出力先にトレース情報を出力するステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
  4. 前記複数の処理装置のうちで、予め定められた処理装置によって、ノードとそのノードが備える処理装置を対応付けたシステム構成情報記憶領域を自身のノードの一次記憶領域上に確保するステップと、
    前記複数の処理装置によって、それぞれ自身の情報を前記システム構成情報記憶領域に書き込むステップをさらに備え、
    前記トレースを実行するトレーサを格納する領域を自身のノードの一次記憶上に確保するステップを実行するに際して、自身が、トレーサの格納元領域があるノードに存在するかどうかを前記システム構成情報記憶領域確認を基に、確認することを特徴とする請求項3記載の複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
  5. 複数の処理装置と、それら処理装置がトレース処理の実行時にアクセスする一次記憶領域から構成されるノードを複数備え、それらノードがバスを介して接続されたシステムがそのシステム上で実行されるプログラムをトレースする方法において、
    一次記憶領域上のトレーサの格納先とトレース情報の出力先を処理装置毎に対応付けたトレーサ格納先トレース情報出力先記憶領域を基に、前記プログラムを実行する処理装置が、そのプログラムに対応するタスク制御ブロックを生成するステップと、
    前記タスクの移送が決定した場合に、前記タスクを担当していた移送元処理装置が、対応するタスク制御ブロックについて、担当の処理装置を移送先処理装置に書き換えるとともに、トレーサの格納先およびトレース情報の出力先についても、その移送先処理装置に対応するものに書き換えるステップ、を備えることを特徴とする複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法。
JP2006084407A 2006-03-27 2006-03-27 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム Expired - Fee Related JP4594889B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006084407A JP4594889B2 (ja) 2006-03-27 2006-03-27 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
US11/483,831 US7831963B2 (en) 2006-03-27 2006-07-10 Method for tracing a program executed on a system comprising a plurality of processing units, and a system comprising a plurality of processing units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006084407A JP4594889B2 (ja) 2006-03-27 2006-03-27 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム

Publications (2)

Publication Number Publication Date
JP2007257560A true JP2007257560A (ja) 2007-10-04
JP4594889B2 JP4594889B2 (ja) 2010-12-08

Family

ID=38535123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006084407A Expired - Fee Related JP4594889B2 (ja) 2006-03-27 2006-03-27 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム

Country Status (2)

Country Link
US (1) US7831963B2 (ja)
JP (1) JP4594889B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703595B2 (en) * 2008-10-02 2017-07-11 Mindspeed Technologies, Llc Multi-core system with central transaction control
US10120716B2 (en) * 2014-10-02 2018-11-06 International Business Machines Corporation Task pooling and work affinity in data processing
US10237169B2 (en) 2016-04-01 2019-03-19 Intel Corporation Technologies for quality of service based throttling in fabric architectures
US11314623B2 (en) * 2019-01-23 2022-04-26 Red Hat, Inc. Software tracing in a multitenant environment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63174142A (ja) * 1987-01-14 1988-07-18 Fujitsu Ltd タスクトレ−ス方式
JPH04286035A (ja) * 1991-03-15 1992-10-12 Nec Corp プロセストレース方式
JPH0588935A (ja) * 1991-03-19 1993-04-09 Fujitsu Ltd タスクトレース方法
JPH08286951A (ja) * 1995-04-11 1996-11-01 Fuji Xerox Co Ltd 情報処理装置及びトレース情報格納方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785773B2 (en) * 2001-03-29 2004-08-31 International Business Machines Corporation Verification of global coherence in a multi-node NUMA system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63174142A (ja) * 1987-01-14 1988-07-18 Fujitsu Ltd タスクトレ−ス方式
JPH04286035A (ja) * 1991-03-15 1992-10-12 Nec Corp プロセストレース方式
JPH0588935A (ja) * 1991-03-19 1993-04-09 Fujitsu Ltd タスクトレース方法
JPH08286951A (ja) * 1995-04-11 1996-11-01 Fuji Xerox Co Ltd 情報処理装置及びトレース情報格納方法

Also Published As

Publication number Publication date
US7831963B2 (en) 2010-11-09
US20070226699A1 (en) 2007-09-27
JP4594889B2 (ja) 2010-12-08

Similar Documents

Publication Publication Date Title
US9442851B2 (en) Multi-core processor system, control program, and control method
US9122465B2 (en) Programmable microcode unit for mapping plural instances of an instruction in plural concurrently executed instruction streams to plural microcode sequences in plural memory partitions
US9367311B2 (en) Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product
JP2012220990A (ja) ハイパーバイザ置き換え方法および情報処理装置
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
JP2007188398A (ja) マルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
JP2008009647A (ja) 情報処理装置
JP2012252576A (ja) 情報処理装置、起動方法およびプログラム
KR20150129816A (ko) 다수의 하이퍼바이저들을 실행하는 시스템들 및 방법들
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
CN100594481C (zh) 允许运行在逻辑分区上的程序访问资源的方法与系统
JP2008102850A (ja) 情報処理装置及び情報処理方法
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
TW200925871A (en) Dynamic logical data channel assignment using time-grouped allocations
JP2007206933A (ja) 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法
JPWO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
JP5578811B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2006085428A (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
JP2009175960A (ja) 仮想マルチプロセッサシステム
JPWO2008114415A1 (ja) マルチプロセッシングシステム
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
CN108572926B (zh) 一种用于同步中央处理器所属缓存的方法和装置
JP4965974B2 (ja) 半導体集積回路装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

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: 20100914

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100917

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees