JP2008234191A - ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 - Google Patents
ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 Download PDFInfo
- Publication number
- JP2008234191A JP2008234191A JP2007071357A JP2007071357A JP2008234191A JP 2008234191 A JP2008234191 A JP 2008234191A JP 2007071357 A JP2007071357 A JP 2007071357A JP 2007071357 A JP2007071357 A JP 2007071357A JP 2008234191 A JP2008234191 A JP 2008234191A
- Authority
- JP
- Japan
- Prior art keywords
- monitor
- hardware
- context
- function
- logical
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Abstract
【課題】複数のモニタコンテキスト間の競合を解決し、かつ正確な性能解析を支援することができるハードウエアモニタ管理装置を提供する。
【解決手段】ハイパーバイザOS6は、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブル50を有する。ハイパーバイザOS6は、モニタ動作条件を満たす高い優先度のモニタコンテキストについては、ハードウエアモニタ機能を実行させてモニタデータを取得して、モニタ動作条件を満たす時間を示すタイミングデータと共に出力し、モニタ動作条件を満たすが低い優先度のモニタコンテキストについては、モニタ動作条件を満たす時間を示すタイミングデータを出力する。
【選択図】図1
【解決手段】ハイパーバイザOS6は、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブル50を有する。ハイパーバイザOS6は、モニタ動作条件を満たす高い優先度のモニタコンテキストについては、ハードウエアモニタ機能を実行させてモニタデータを取得して、モニタ動作条件を満たす時間を示すタイミングデータと共に出力し、モニタ動作条件を満たすが低い優先度のモニタコンテキストについては、モニタ動作条件を満たす時間を示すタイミングデータを出力する。
【選択図】図1
Description
本発明は、ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法に関し、特に、複数の物理プロセッサの動作状態をモニタするハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法に関する。
近年、1チップ上に複数のプロセッサコアを搭載するマルチコアプロセッサが開発され、そのマルチコアプロセッサの組み込まれた製品も、市場に登場してきている。マルチコアプロセッサは、各プロセッサコア(以下、単にコアともいう)及びプロセッサリソースを有効利用することにより、シングルコアプロセッサをはるかに超える性能を実現できるものである。しかし、その高い性能を得るためには、マルチコアプロセッサの機能を十分に使いきるようにソフトウエアのチューニングが必要となる。
また、プロセッサのハードウエアモニタ機能とは、プロセッサ内部の様々な状態変化を観察、カウント等するための機能である。この機能を用いることにより、プロセッサの特長に合わせた、ソフトウエアのチューニング、システムの性能測定、等が可能となる。基本的には1プロセッサにつき1つのハードウエアモニタ機能が設けられている。
ここで、従来のシングルコアプロセッサにおけるハードウエアモニタ機能の管理方法について簡単に説明する。まず、プロセス毎の性能情報を取得するために、ハードウエアモニタ機能の設定は、モニタしたいプロセスのコンテキスト、すなわちモニタコンテキストを指定することによって行われる。具体的には、モニタコンテキストの指定は、プロセッサ内部のレジスタの設定である。また、通常のハードウエアモニタ機能には、カウンタの数、等のリソースに制限があるため、多くのモニタデータを取得するには、ハードウエアモニタ機能の設定を変更して繰り返しプログラムを実行する必要がある。このリソース制限の問題を解決するために、測定されるデータ、すなわちモニタデータ、が不連続になることを許容するのであるが、モニタコンテキストを時分割でスケジューリングする方法がある。その方法として代表的なものに、PAPI(Performance API)のmultiplexing機能がある(例えば、非特許文献1参照)。
しかし、マルチコアプロセッサに、これらの手法をそのまま適用することはできなかった。それは、ハードウエアモニタ機能に対する、複数のモニタコンテキスト間の競合の問題があるからである。マルチコアプロセッサでは、異なるコア上で同時に複数のプロセスが実行状態になる。そのような実行状態のときに各プロセスが異なるモニタコンテキストを持つ場合、ハードウエアモニタ機能の利用権についての競合が発生するためである。
この競合を解決するために、時分割でモニタコンテキストをスケジューリングするようにしても良いが、その場合、取得されるモニタデータは、不連続なデータとなってしまう。正確な性能解析を目的とする場合、取得された不連続なデータをどのように解釈すればよいかは、大きな課題となってしまう。
PAPI ユーザ・ガイド(3.5.0版)(PAPI USER’S GUIDE Version 3.5.0) (URL:http://icl.cs.utk.edu/papi/index.html)
PAPI ユーザ・ガイド(3.5.0版)(PAPI USER’S GUIDE Version 3.5.0) (URL:http://icl.cs.utk.edu/papi/index.html)
そこで、本発明は、以上の問題に鑑みてなされたものであり、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタする場合に、複数のモニタコンテキスト間の競合を解決し、かつ正確な性能解析を支援することができるハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法を提供することを目的とする。
本発明の一態様によれば、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブルと、前記モニタ動作条件を満たす1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定するモニタコンテキストについては、前記ハードウエアモニタ機能を実行させてモニタデータを取得して、前記モニタ動作条件を満たす時間を示す第1の時間データと共に出力し、前記モニタ動作条件を満たす前記1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定しないモニタコンテキストについては、前記モニタ動作条件を満たす時間を示す第2の時間データを出力するハードウエアモニタ管理部と、を有するハードウエアモニタ管理装置を提供することができる。
本発明の一態様によれば、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブルを設け、前記モニタ動作条件を満たす1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定するモニタコンテキストについては、前記ハードウエアモニタ機能を実行させてモニタデータを取得して、前記モニタ動作条件を満たす時間を示す第1の時間データと共に出力し、前記モニタ動作条件を満たす前記1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定しないモニタコンテキストについては、前記モニタ動作条件を満たす時間を示す第2の時間データを出力するハードウエアモニタ機能の実行方法を提供することができる。
本発明によれば、複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタする場合に、複数のモニタコンテキスト間の競合を解決し、かつ正確な性能解析を支援することができるハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法を提供することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
まず、図1に基づき、本発明の第1の実施の形態に係わるシステムの構成を説明する。図1は、本実施の形態に係わるハードウエアモニタ機能を有するマルチコアプロセッサシステムの構成を示すブロック図である。
本実施の形態では、ハイパーバイザオペレーティングシステムが、複数の論理パーティションについて設定された複数のハードウエアモニタコンテキストを管理する。
(第1の実施の形態)
まず、図1に基づき、本発明の第1の実施の形態に係わるシステムの構成を説明する。図1は、本実施の形態に係わるハードウエアモニタ機能を有するマルチコアプロセッサシステムの構成を示すブロック図である。
本実施の形態では、ハイパーバイザオペレーティングシステムが、複数の論理パーティションについて設定された複数のハードウエアモニタコンテキストを管理する。
マルチコアプロセッサシステム101は、いわゆる3層構造を有するコンピュータシステムであり、例えばパーソナルコンピュータ(PC)等である。3層中、最下位層102は、マルチコアプロセッサであるプロセッサ1、主メモリ2等から構成されるハードウエア層である。一般的には様々なハードウエアデバイスがこの層102に存在するが、説明を簡単にするために省略されている。プロセッサ1には、複数の物理的なコアプロセッサ(以下、物理コアという)3、入出力部(以下、I/Oユニットという)4等と共に、ハードウエアモニタ機能部(図1ではHWモニタ機能部)5が備わっている。物理コア3は、N個(Nは2以上の整数)ある。プロセッサ1は、それぞれが物理プロセッサである、複数の物理コア3により、複数のプロセスを並列に実行することができる。ハードウエアモニタ機能部5の機能については後述する。なお、本実施の形態は、1つのプロセッサ(すなわちプロセッサ1)に、1つのハードウエアモニタ機能部が設けられている場合である。
中位層103には、ハイパーバイザオペレーティングシステム(以下、ハイパーバイザOSという)6が存在する。ハードウエアモニタ管理装置を構成するハイパーバイザOS6は、仮想マシンモニタ(VMM)とも呼ばれる。ハイパーバイザOS6の機能は、後述する上位層104の各論理パーティション上のゲストオペレーティングシステム(以下、ゲストOSという)に対して物理的なハードウエアを隠蔽し、仮想ハードウエアを提供することである。各論理パーティションの状態は、ハイパーバイザOS6がコンテキストとして管理する。ハイパーバイザOS6を利用する利点としては、単一システム上で複数のゲストOSを同時に動作させることができるので、a)各ゲストOSの長所を併せ持つシステムを構築できること、b)物理的なハードウエアの違いを隠蔽できること、c)各ゲストOSの動作エラーがシステム全体に影響しないこと、等々が挙げられる。パイパーバイザOS6は、スケジューラ部としての論理コアスケジューラ6aを含む。
最上位層104には、1つ以上の論理パーティション7が存在し、論理パーティション毎にゲストOS8及びアプリケーションプログラム(以下、単にアプリケーションという)9が動作する。本実施の形態では2つのパーティションAとBがある。各論理パーティション7は、1以上の論理的なコアプロセッサ(以下、論理コアという)10を有する。図1では、論理パーティションAには、論理コア10は、論理コアAが(m+1)個(mは2以上の整数)あり、論理パーティションBには、論理コア10は、論理コアBが(n+1)個(nは2以上の整数)ある。各論理コア10が、ハイパーバイザOS6の論理コアスケジューラによって、各物理コア3にディスパッチされることにより、各論理パーティション7内の、ゲストOS8及びアプリケーション9のプログラムあるいはプロセスは動作することができる。
すなわち、各パーティション7内では、複数の論理コア10は、ゲストOS8に対しては、複数の物理コア3として認識されており、ハイパーバイザOS6が、複数のパーティション7のコンテキストを管理することによって、複数のプロセスが、プロセッサ1上で動作可能となっている。
次に、ハードウエアモニタ機能部5の機能について説明する。図2は、ハードウエアモニタ機能部5の機能を説明するために、ハードウエアモニタ機能部5と上位のOSとの関係を説明するための図である。ハードウエアモニタ機能部5は、プロセッサ1のリソースであり、プロセッサ1を構成する各物理コア3、プロセッサ1の外部との通信を行うI/Oユニット4、物理コア内のメモリ管理ユニット(MMU)、等の各機能ユニット内で発生したイベントを取得し、あるいはカウントする。発生するイベントとしては、例えば、実行プログラムのストール、キャッシュミス、バストラフィック等であり、このようなイベントが発生すると、それぞれに対応する所定のフラグを立てる、回数をカウントする、等が行われる。フラグデータ、及びカウントされたデータは、それぞれの専用レジスタへのアクセスによって取得できる。さらに、カウンタのオーバーフローによって割り込みを発生させる機能を実装するようにしてもよい。すなわち、ハードウエアモニタ機能部5は、プロセッサ1内の各種ハードウエアの動作状態をモニタする機能を有する。
ハードウエアモニタ機能部5の機能の設定は、ハードウエアモニタ管理装置としてのハイパーバイザOS6によって行われる。具体的には、ソフトウエア開発者等であるユーザが、コンピュータの画面を見ながらキーボード、マウス等の入力装置を利用して、ハードウエアモニタ機能の設定を行う。あるいは、ユーザが、実行プログラム中にその設定内容を書き込むことによって、ハードウエアモニタ機能の設定を行う。ユーザによって設定された内容は、ハイパーバイザOS6によって、プロセッサ1内のハードウエアモニタ機能部5に設定される。これは、各論理パーティション7上のプログラムからは、直接ハードウエアモニタ機能部5にアクセスすることはできず、ハイパーバイザOS6への要求によってのみハードウエアモニタ機能部5に対する操作が可能だからである。
また、ハードウエアモニタ機能部5は、本実施の形態では1つであり、また、モニタするレジスタ数等も限られている。すなわち、ハードウエアモニタ機能部5の各リソース数は限られている。
さらに、プロセッサ1の物理的なハードウエアは、ハイパーバイザOS6によって隠蔽されているため、複数の論理パーティション7からの複数のハードウエアモニタ設定要求に対して適切に対応する必要がある。具体的には、例えば、パーティションAからのハードウエアモニタ機能部5に対する設定の内容と、パーティションBからのハードウエアモニタ機能部5に対する設定の内容が異なるため、このような異なる設定要求に対して適切に対応する必要がある。
通常のハイパーバイザOS6は、論理コアと物理コアの対応付け(ディスパッチ)等の通常の機能だけであるが、本実施の形態のハイパーバイザOS6は、ハイパーバイザOSとしての通常の機能に加えて、ハードウエアモニタ管理装置の機能として、各ハードウエアモニタコンテキストの設定機能と、ハードウエアモニタ機能部5に対する操作機能とを有する。ハードウエアモニタコンテキスト、すなわちモニタコンテキスト、は、モニタ要求に係るレジスタに関する設定情報であり、その設定情報に従って、ハードウエアモニタ機能部5は、レジスタのデータをモニタする。ハイパーバイザOS6が、モニタコンテキストの設定を行う。また、ハードウエアモニタ機能部5に対する操作は、ハードウエアモニタ管理部としての論理コアスケジューラ6aによって、所定のタイミングで行われる。
以上のように、ハイパーバイザOS6は、設定された複数のモニタコンテキストに従って、ハードウエアモニタ機能部5に対する操作(すなわち実行管理)を、所定のスケジュールによって決まった所定のタイミングで行う。よって、ハイパーバイザOS6の論理コアスケジューラ6aは、後述するように、プロセッサ1の動作状態を常時監視し、監視の各フェーズで、どのモニタコンテキストのモニタデータを取得するか等の処理を実行する、ハードウエアモニタ管理部である。
また、ハードウエアモニタ機能部5は、本実施の形態では1つであり、また、モニタするレジスタ数等も限られている。すなわち、ハードウエアモニタ機能部5の各リソース数は限られている。
さらに、プロセッサ1の物理的なハードウエアは、ハイパーバイザOS6によって隠蔽されているため、複数の論理パーティション7からの複数のハードウエアモニタ設定要求に対して適切に対応する必要がある。具体的には、例えば、パーティションAからのハードウエアモニタ機能部5に対する設定の内容と、パーティションBからのハードウエアモニタ機能部5に対する設定の内容が異なるため、このような異なる設定要求に対して適切に対応する必要がある。
通常のハイパーバイザOS6は、論理コアと物理コアの対応付け(ディスパッチ)等の通常の機能だけであるが、本実施の形態のハイパーバイザOS6は、ハイパーバイザOSとしての通常の機能に加えて、ハードウエアモニタ管理装置の機能として、各ハードウエアモニタコンテキストの設定機能と、ハードウエアモニタ機能部5に対する操作機能とを有する。ハードウエアモニタコンテキスト、すなわちモニタコンテキスト、は、モニタ要求に係るレジスタに関する設定情報であり、その設定情報に従って、ハードウエアモニタ機能部5は、レジスタのデータをモニタする。ハイパーバイザOS6が、モニタコンテキストの設定を行う。また、ハードウエアモニタ機能部5に対する操作は、ハードウエアモニタ管理部としての論理コアスケジューラ6aによって、所定のタイミングで行われる。
以上のように、ハイパーバイザOS6は、設定された複数のモニタコンテキストに従って、ハードウエアモニタ機能部5に対する操作(すなわち実行管理)を、所定のスケジュールによって決まった所定のタイミングで行う。よって、ハイパーバイザOS6の論理コアスケジューラ6aは、後述するように、プロセッサ1の動作状態を常時監視し、監視の各フェーズで、どのモニタコンテキストのモニタデータを取得するか等の処理を実行する、ハードウエアモニタ管理部である。
これらについて以下で説明する。
図3は、設定されるモニタコンテキストの内容を示す図である。各モニタコンテキスト30は、大きく分けて5つの項目のデータ、コンテキスト管理情報31、ハードウエアモニタ設定情報32と、モニタ動作条件情報33と、優先度情報34と、タイミングデータ35とを有する。
コンテキスト管理情報31は、各モニタコンテキストの識別子、有効あるいは無効を示す有効・無効フラグ、取得したデータであるモニタデータを格納するバッファの情報、モニタコンテキストの設定要求を行った論理パーティションに関する情報、などを含む。モニタデータを格納するバッファの情報は、例えば、モニタデータを、パーティション毎に、主メモリ2の、どのバッファ領域に格納するかを示す情報である。コンテキスト管理情報31は、主にモニタコンテキストの検索あるいは削除、カウンタのオーバーフロー時あるいはデータ格納用バッファのオーバーフロー時のイベント通知に利用される。
コンテキスト管理情報31は、各モニタコンテキストの識別子、有効あるいは無効を示す有効・無効フラグ、取得したデータであるモニタデータを格納するバッファの情報、モニタコンテキストの設定要求を行った論理パーティションに関する情報、などを含む。モニタデータを格納するバッファの情報は、例えば、モニタデータを、パーティション毎に、主メモリ2の、どのバッファ領域に格納するかを示す情報である。コンテキスト管理情報31は、主にモニタコンテキストの検索あるいは削除、カウンタのオーバーフロー時あるいはデータ格納用バッファのオーバーフロー時のイベント通知に利用される。
ハードウエアモニタ設定情報32とは、ハードウエアモニタ機能部5を制御するためのレジスタに設定する情報である。ハードウエアモニタ設定情報32の代表的な設定項目としては、取得するイベントの種類、カウンタの振る舞い等の項目である。本来のハードウエアレジスタの設定では、物理的な値、すなわち物理コア番号、を指定する必要があるが、論理パーティションは論理的な値、すなわち論理コア番号が指定される。よって、本実施の形態では、論理パーティションについての論理的な値を設定することが許可され、ハイパーバイザOS6が実行時に、論理的な値を適切な物理的な値に変換する。
モニタ動作条件情報33は、ハードウエアモニタ機能部5の機能が有効となる条件を、各論理コアの実行状態に関する論理演算式(ここでは、論理積(AND)と論理和(OR)の少なくとも1つ)で表現された、モニタデータを取得する条件を設定するための設定項目の情報である。論理コアが実行状態にあるときとは、その論理コアが物理コアに割り当てられているときである。よって、複数の論理コアのそれぞれの実行状態は、論理演算式で表現されるが、ある論理コアが物理コアに割り当てられているときがその論理コアの実行状態である。
マルチコアプロセッサのハードウエアモニタ機能に対する新たな要求として、様々な単位あるいは範囲での性能測定が考えられる。一般に、ハードウエアモニタ機能を利用して得られる情報は、プロセッサ全体としての情報である。よって、このようなプロセッサ全体としての情報としてのモニタデータを取得したいという要求もある。しかし、他方では、プロセス単位で、あるいはプロセスが動作するコア単位で、ソフトウエアプログラムを開発するユーザもおり、このようなユーザからは、詳細な性能情報を得るために、特定コア動作時のモニタデータ、複数コアの組み合わせに関するモニタデータ、等を取得したいという要求もあり得る。
本実施の形態によれば、モニタコンテキスト30のモニタ動作条件情報33において論理演算式を利用することにより、種々の要求に対するモニタデータの取得をすることができる。
例えば、ユーザは、特定の論理コア、あるいは特定のプロセスの動作に直接関係するモニタデータのみを取得するように、モニタ動作条件情報32を設定することができる。
また、ある特定の論理パーティションに属する全ての論理コアの実行状態を論理和(OR)で結合した論理演算式で指定することによって、ユーザは、その特定の論理パーティションに関係するモニタデータのみを取得するように、モニタ動作条件情報33を設定することもできる。その結果、論理パーティション単位の性能評価を行うことができる。
例えば、ユーザは、特定の論理コア、あるいは特定のプロセスの動作に直接関係するモニタデータのみを取得するように、モニタ動作条件情報32を設定することができる。
また、ある特定の論理パーティションに属する全ての論理コアの実行状態を論理和(OR)で結合した論理演算式で指定することによって、ユーザは、その特定の論理パーティションに関係するモニタデータのみを取得するように、モニタ動作条件情報33を設定することもできる。その結果、論理パーティション単位の性能評価を行うことができる。
さらに、システム全体の性能評価を行うために、常に条件が成立するような特別な値も用意することもできる。例えば、全てのモニタコンテキストのデータを取得するために、所定のレジスタについて「1」のような値を設定することによって、ユーザは、所定のレジスタについては、全てのモニタデータを取得するように設定することも可能である。以上のように、このようなモニタ動作条件情報により、様々な単位、あるいは範囲での性能測定要求に対応したモニタデータの取得をすることができる。
本実施の形態において論理式においてANDとORのみを利用する理由は、条件の設定処理及びその条件の確認処理を簡単にするためである。単純な論理式を使うことにより、ハイパーバイザOS6への設定のためのインタフェースが簡単になり、設定された条件の確認も高速化することができる。より複雑な論理式を用いることも可能であるが、もし複雑な論理式を用いた場合、条件の確認処理のオーバヘッドが大きくなる。本実施の形態では、論理コアのスイッチ時に毎回条件確認を行うので、このオーバヘッドは許容できないとして、複雑な論理式は用いられていない。
すなわち、モニタ動作条件として、AND条件、OR条件、あるいは常に成立する特殊な条件を利用することにより、種々の条件を簡潔に記述することができる。さらに、注目するプロセス群に関する論理コアの組み合わせをモニタ動作条件としてモニタコンテキストに付与することにより、論理コア単位の性能情報、複数の論理コアの性能情報、あるいはシステム全体の性能情報を取得することができる。言い換えると、様々な単位あるいは範囲の性能情報を取得することができる。
従来であれば、プロセッサ全体としての情報から特定コア動作時の情報の切り出しは、ソフトウエアを開発する者等が、取得されたモニタデータを直接見て行うため、困難な場合が多かったが、以上のようなモニタ動作条件を設定することにより、マルチOSでマルチコアプロセッサが動作している場合であっても、種々の単位あるいは範囲で、ハードウエアモニタ機能を実行することが可能となる。
優先度情報34は、複数のモニタコンテキスト間で同時にモニタ動作条件が成立した場合に発生する、ハードウエアモニタ機能部5の機能利用の競合を解決するための、モニタコンテキストについての優先度に関する情報である。このような競合時には、高優先度のモニタコンテキストを有効として、高優先度のモニタコンテキストのデータがハードウエアモニタ機能部5によってモニタされるため、重要なモニタコンテキストにはより高い優先度が設定され、高優先度のモニタコンテキストについては、連続したモニタデータが取得できる。優先度の情報は、ユーザが各目的に応じて設定する。
タイミングデータ35は、モニタ動作条件の成立及び不成立時に記録される時間データである。タイミングデータ35は、取得したモニタデータの信頼性判断をサポートするために利用される。時間データを利用することにより、取得したモニタデータは、最終的には図4に示すようなフォーマットで得ることができる。従って、モニタコンテキストの優先度によって、モニタデータは、モニタ動作条件の成立及び不成立時のモニタコンテキストの優先度に応じて、2種類のフォーマットのいずれかで記録される。
図4は、複数のモニタコンテキスト間で、あるフェーズにおいて同時にモニタ動作条件が成立した場合に、最も優先度の高いモニタコンテキストについて、バッファに格納されるモニタデータのフォーマットを示す図である。図5は、複数のモニタコンテキスト間で、あるフェーズにおいて同時にモニタ動作条件が成立した場合に、優先度の低いモニタコンテキストについて、バッファに格納されるモニタデータのフォーマットを示す図である。
複数のモニタコンテキスト中の最高優先度のコンテキストについては、図4に示すように、新たにモニタ動作条件が成立した時点のタイミングデータ40とStartフラグ41を記録することによって、ハードウエアモニタ機能部5の機能の利用が開始されたことを示すように、モニタデータ42が記録される。その後にモニタ動作条件が不成立になった時点で、モニタコンテキストのデータ42と、その時点のタイミングデータ40と、Stopフラグ43を対応する所定のバッファに記録することによって、ハードウエアモニタ機能部5の機能の利用が終了したことを示すように、モニタデータ42が記録される。
その最高優先度ではないモニタコンテキストについては、図5に示すように、新たにモニタ動作条件が成立した時点で、あるいは優先度の高い他のモニタコンテキストにハードウエアモニタ機能の利用権が奪われた時点で、その時点のタイミングデータ40とFake_Startフラグ44を記録することによって、不連続データの開始であることを示すデータが記録される。その後にモニタ動作条件が不成立になった時点で、あるいは優先度の高い他のモニタコンテキストがなくなり、ハードウエアモニタ機能部5の機能の利用権を取得した時点で、その時点のタイミングデータ40とFake_Stopフラグ45を記録することによって、不連続データの終了であることを示すデータが記録される。よって、モニタ動作条件を満たす1以上のモニタコンテキストの中で、優先度情報に基づいて決定されたハードウエアモニタ機能を設定しないモニタコンテキストについては、そのモニタ動作条件を満たす時間を示す時間データが、Fake_Startフラグ44とFake_Stopフラグ45と共に出力され、記録される。
タイミングデータ40としては、リアルタイムクロックの値等の、ハードウエアモニタ機能が実施されるシステムに応じた適切な時間データが利用される。また、Startフラグ41とStopフラグ43は、常に対で記録される。さらに、Fake_Startフラグ44とFake_Stopフラグ45も、常に対で記録される。
このように、モニタデータ42とともに、時間データであるタイミングデータ40、モニタ動作状態データ(Start/Stopフラグ41,43及びFake_Start/Fake_Stopフラグ44,45)が出力されて記録される。これらの記録されたデータを用いることにより、その記録されたデータにおいて低優先度のコンテキストに関するモニタデータが不連続になるという問題に対して、取得されたデータが本来取得したいデータの何%に相当するかというカバレッジの計算ができる。すなわち、これらの記録されたデータは、モニタデータの信頼性を判断する材料を得るためのデータとして利用することができる。
従って、複数のモニタコンテキスト中、1つのモニタコンテキストだけについてモニタ動作条件が成立した場合には、その1つのモニタデータだけが記録される。しかし、複数のモニタコンテキスト間で同時にモニタ動作条件が成立した場合には、最も優先度の高いモニタコンテキストのモニタデータが図4に示すフォーマットで記録される。その場合、他の優先度の低いモニタコンテキストのモニタデータは取得されないが、図5に示すように、モニタ動作条件が成立した時点のタイミングデータと、モニタ動作条件が不成立になった時点の、あるいは優先度の高い他のモニタコンテキストがなくなり、ハードウエアモニタ機能部5の機能の利用権を取得した時点のタイミングデータとが、それぞれ、所定の指標(ここでは、Fake_StartとFake_Stopの両フラグ)とともに、バッファに出力されて記録される。
よって、ユーザは、以上のように記録されたモニタコンテキストに関するデータを見ることによって、各モニタコンテキストの不連続になった時点、不連続データの回数あるいは量を把握することができる。
上述したモニタコンテキスト30は、図6のようなテーブルで優先度順に管理される。図6は、モニタコンテキストテーブルの構成を示す図である。図6に示すように、モニタコンテキストテーブル50には、優先度順に複数のモニタコンテキスト30が記録されている。複数のモニタコンテキストを優先度順で管理する理由は、論理コアスイッチ時(物理コアのディスパッチの切り替わり時)におけるモニタ動作条件の確認処理に伴うオーバヘッドを最小化するためである。本実施の形態では、論理コアスケジューラ6aが、モニタコンテキストテーブル50を有する。
ハイパーバイザOS6が、より具体的にはハイパーバイザOS6のコアスケジューラが、モニタコンテキストテーブル50の全てのモニタコンテキスト30の内容を優先度の高い順に走査することによって、各モニタコンテキスト30についてモニタ動作条件情報33に記述されたモニタ動作条件が成立しているか否かをチェックする。その走査の結果、モニタ動作条件が成立しているモニタコンテキストの中で最高優先度のモニタコンテキストについて、図4に示すフォーマットでモニタデータ42が記録される。モニタ動作条件が成立している複数のモニタコンテキスト中で、優先度情報34の示す優先度が最高優先度のモニタコンテキストの優先度より低いモニタコンテキストについては、図5に示すフォーマットでデータが記録される。
本実施の形態では、基本的には全モニタコンテキストのタイミングデータを取得するためには全テーブルエントリ(すなわち全モニタコンテキスト)を走査する必要があるが、タイミングデータがすべてについて必要ない場合には、優先度の高い1以上のエントリについてだけモニタ動作条件が成立した時点で走査を終了するようにしてもよい。
モニタコンテキストの登録時には、各論理パーティション7についてのモニタコンテキスト30の設定要求が発行され、ハイパーバイザOS6が、そのモニタコンテキスト30の優先度に従ってモニタコンテキストテーブル50中に適切なテーブルエントリとして登録する。各論理パーティション7について、複数のモニタコンテキスト30を登録できるが、モニタコンテキスト数が増えると、論理コアスケジューラにおける処理負荷が増大するため、許容できるオーバヘッド量を考慮して、モニタコンテキストテーブル50に登録可能な最大コンテキスト数を制限するようにしてもよい。
モニタコンテキストの削除時には、対応する論理パーティション7についてのモニタコンテキスト30の識別子を指定することによって、ハイパーバイザOS6はその識別子と一致するテーブルエントリを削除する。
次に、ハードウエアモニタ機能部5についての機能が追加された論理コアスケジューラの処理について説明する。図7は、論理コアスケジューラの処理の流れの例を示すフローチャートである。ハードウエアモニタ管理部としての論理コアスケジューラは、常時実行しているが、その実行毎に、すなわち実行の各フェーズで、図7の処理を実行する。
最初に、論理コアスケジューラ6aは、通常の論理コアスケジューラと同様、次フェーズでの論理コアの動作状態を決定する(ステップS1)。すなわち、次のフェーズで動作する論理コアが決定される。
最初に、論理コアスケジューラ6aは、通常の論理コアスケジューラと同様、次フェーズでの論理コアの動作状態を決定する(ステップS1)。すなわち、次のフェーズで動作する論理コアが決定される。
次に、論理コアスケジューラ6aは、図6のモニタコンテキストテーブル50の全モニタコンテキスト30を優先度順に走査し、各モニタ動作条件の確認を行う(ステップS2)。モニタ動作条件が成立したモニタコンテキスト30の中で、最高優先度のモニタコンテキストではなく、かつ、現フェーズまでにFake_Startフラグ44を記録していないモニタコンテキスト30については、論理コアスケジューラ6aは、タイミングデータ40とFake_Startフラグ44を出力して、対応するバッファに記録する。また、モニタ動作条件が成立しないモニタコンテキスト30の中で、Fake_Startフラグ44の記録後に未だFake_Stopフラグを記録していないモニタコンテキスト30については、論理コアスケジューラは、タイミングデータ40とFake_Stopフラグ45を出力して、対応するバッファに記録する。
全てのモニタコンテキスト30について、ステップS2の確認処理が終了したか否かが判断され(ステップS3)、全てのモニタコンテキストについて確認処理が終了していない場合は、ステップS3でNOとなり、処理はステップS2に戻る。全てのモニタコンテキスト30について、ステップS2の確認処理が終了した場合は、ステップS3でYESとなり、モニタ動作条件が成立したモニタコンテキスト30が有るか否かの判断が行われる(ステップS4)。
ステップS2における走査処理において、それぞれのモニタ動作条件が成立する1以上のモニタコンテキスト30が検出されたとする。その場合、ステップS4でYESとなり、その条件が成立したモニタコンテキスト30の中で最高優先度のものが現在有効なコンテキスト(現在最高優先度のモニタコンテキストとしてハードウエアモニタ機能部5の機能を使用しているモニタコンテキスト)と一致するか調べ、モニタコンテキストの変更が必要か否かの確認が行われる(ステップS5)。
モニタコンテキストの変更が必要な場合は、ステップS5でYESとなり、論理コアスケジューラ6aは、モニタ動作を終了し、現在のモニタデータ42を対応するバッファに格納する(ステップS6)。モニタデータ42の格納後、論理コアスケジューラは、タイミングデータ40とStopフラグ43の記録を行う(ステップS7)。
データの格納後、論理コアスケジューラ6aは、モニタデータを取得するモニタコンテキスト30を切り替える(ステップS8)。このとき、モニタコンテキスト30の論理情報(論理コア番号等)を物理情報(物理コア番号等)へ変換してから、ハードウエアモニタ機能が設定される。その後、Nextフラグは1に設定される(ステップS9)。ステップS9の処理は、次フェーズに入る前にモニタ動作を開始させるようにするためである。モニタコンテキスト30の変更が必要ない場合は、ステップS5でNOとなり、すでにその変更されないモニタコンテキスト30についてモニタ動作は継続して行われているので、Nextフラグは0に設定される(ステップS10)。
一方、ステップS2における走査処理において、モニタ動作条件が成立するコンテキストが見つからなかった場合は、モニタ動作を停止させる必要がある。従って、その場合は、ステップS4でNOとなり、論理コアスケジューラ6aは、現在のモニタ動作の状態をチェックし、モニタ動作が行われているか否かをチェックする(ステップS11)。
モニタ動作中の場合は、論理コアスケジューラ6aは、そのモニタ動作を終了し、モニタデータを対応するバッファに格納する(ステップS12)。モニタデータの格納後、論理コアスケジューラ6aは、タイミングデータ40とStopフラグ43の記録を行う(ステップS13)。ステップS12とS13の処理は、ステップS6とS7の処理と同じである。モニタ動作が停止している場合は、ステップS11でNOとなり、ステップS12とS13の処理は行われないで、処理は、ステップS10に移行し、Nextフラグが0に設定される。
その後、論理コアスケジューラ6aは、通常の論理コアスケジューラと同様の、論理コアコンテキストの切り替えを行う(ステップS14)。最後にNextフラグが1であるか否かの確認が行われ(ステップS15)、Nextフラグが1であれば、ステップS15でYESとなり、次フェーズで有効となるモニタコンテキストのタイミングデータ40とStartフラグ41の記録を行う(ステップS16)。なお、現フェーズまでにFake_Startフラグ44が記録されている場合は、Startフラグ41の前にFake_Stopフラグ45が記録される。そして、論理コアスケジューラ6aは、ハードウエア機能部5からのモニタデータの取得をするべく、モニタ動作を開始させる(ステップS17)。
なお、図7では、ステップS6,S12において、モニタ動作の終了が行われている。すなわち、論理コアスケジューラ6aの処理中におけるモニタ動作が許されている。しかし、性能測定の目的によっては、モニタコンテキストの処理の影響を受けているモニタデータを取得したくないという要求もあり得る。従って、そのような場合には、ステップS6,S12において、モニタ動作の終了をするのではなく、ステップS1の前に、モニタ動作中か否かを判定する処理を設け、その判定の結果、モニタ動作中の場合は、モニタ動作を終了する処理を設けるようする。さらに、ステップS4において、モニタ動作条件が成立したモニタコンテキストが検出された場合は、Nextフラグを常に1に設定し、図7の処理の最後においてモニタ動作を開始する。
このように、図7の論理コアスケジューラの処理の最初と最後において、モニタ動作の終了と開始を行うようにすることによって、モニタコンテキストについての処理の影響を受けたモニタデータを取得することを回避することができる。
ここまで、本実施の形態にかかるシステムの構成と主要な構成要素について説明を行った。
次に、システム動作時の状況の例を示し、上述した機能がどのように動作するかについて説明する。図8は、システム動作時の物理コアの状態、及びハードウエアモニタ機能の動作状態の例を説明するための図である。ここでは、説明を簡単にするために、プロセッサ1は、3つの物理コアP_x,P_y,P_zを有し、上位層には2つの論理パーティションA、Bが存在し、それぞれが論理コアA0,..Amと、B0,..,Bnとを有する場合で説明する。モニタコンテキストとして、論理パーティションA、Bのそれぞれについて、モニタコンテキストA、Bが設定されている。
次に、システム動作時の状況の例を示し、上述した機能がどのように動作するかについて説明する。図8は、システム動作時の物理コアの状態、及びハードウエアモニタ機能の動作状態の例を説明するための図である。ここでは、説明を簡単にするために、プロセッサ1は、3つの物理コアP_x,P_y,P_zを有し、上位層には2つの論理パーティションA、Bが存在し、それぞれが論理コアA0,..Amと、B0,..,Bnとを有する場合で説明する。モニタコンテキストとして、論理パーティションA、Bのそれぞれについて、モニタコンテキストA、Bが設定されている。
図9は、モニタコンテキストテーブルの内容の例を簡単化して示した図である。図9に示すモニタコンテキストが、モニタコンテキストテーブル50Aに設定されているとする。図9に示すように、モニタコンテキストAは、コンテキストBよりも優先度が高く設定されている。さらに、モニタコンテキストAでは、論理コアA0とA1が同時に実行していることが、モニタ動作条件である。モニタコンテキストBでは、論理コアB0とB1のいずれかが実行していることが、モニタ動作条件である。対象イベントのデータは、モニタコンテキストAでは、論理コアA0のデータであり、モニタコンテキストBでは、論理コアB0のデータである。
これらの論理コア及びモニタコンテキストに基づいて、ハイパーバイザOS6上の論理コアスケジューラ6aが、図7に示す処理手順に従って処理した結果が図8に示されている。
図8では、上段に、3つの物理コアP_x,P_y,P_zに対する論理コアのディスパッチ状態が示されている。その中段に、各時点での論理コアの組み合わせに対する、モニタコンテキストA,Bについて、モニタ動作条件の成立と不成立が示されている。論理コアの組み合わせによっては、図8のように複数のモニタコンテキストにおいて同時に条件が成立する場合がある。その場合、図8に示すように、モニタコンテキストの優先度によって、次に有効となるモニタコンテキストが決定される。図8ではコンテキストAの方がコンテキストBよりも優先度が高いため、同時に条件が成立する2箇所ではコンテキストAが選択されている。
また、論理コア番号と物理コア番号との対応はシステム動作時に動的に決定される。そのため、モニタコンテキストでは、論理コア番号を使って対象イベントを設定し、論理コアスケジューラ6aが動的に物理コア番号に変換する。図8のハードウエアモニタの状態の下には、実行時の論理コアと物理コアの対応に従って、対象イベントが変更されている様子が示されている。
より具体的に説明する。図8に示すように3つの物理コアP_x,P_y,P_zが動作したとする。時点t0からt1では、モニタコンテキストAのモニタ動作条件が成立し、モニタコンテキストBのモニタ動作条件は不成立である。従って、時点t0からt1では、モニタコンテキストAの対象イベントである論理コアA0の物理コアP_xのモニタデータが記録される。
時点t1からt2では、モニタコンテキストAのモニタ動作条件が成立し、モニタコンテキストBのモニタ動作条件も成立している。しかし、優先度は、モニタコンテキストAの方が高いので、時点t1からt2でも、モニタコンテキストAの対象イベントである論理コアA0の物理コアP_xのモニタデータが継続して記録される。
時点t2からt3では、モニタコンテキストAのモニタ動作条件は不成立であり、モニタコンテキストBのモニタ動作条件が成立している。従って、時点t2からt3でも、モニタコンテキストBの対象イベントである論理コアB0の物理コアP_yのモニタデータが記録される。
時点t3からt4では、モニタコンテキストAのモニタ動作条件は不成立であり、モニタコンテキストBのモニタ動作条件も不成立である。従って、時点t3からt4では、モニタデータの記録は、無効すなわちディスエイブルとなり、行われない。
時点t4からt5では、モニタコンテキストAのモニタ動作条件が成立し、モニタコンテキストBのモニタ動作条件も成立している。ここでも、優先度は、モニタコンテキストAの方が高いので、時点t4からt5では、モニタコンテキストAの対象イベントである論理コアA0の物理コアP_yのモニタデータが記録される。
時点t5からt6では、モニタコンテキストAのモニタ動作条件は不成立であり、モニタコンテキストBのモニタ動作条件が成立している。従って、時点t5からt6では、モニタコンテキストBの対象イベントである論理コアB0の物理コアP_xのモニタデータが記録される。
図10と図11は、図8のような実行例の結果、各モニタコンテキストのモニタデータ格納用のバッファが最終的にどうなるか示す図である。図10は、モニタコンテキストAについてバッファの内容の例を示す図である。図11は、モニタコンテキストBについてのバッファの内容の例を示す図である。図10に示すように、モニタコンテキストAのバッファでは、Startフラグ41とStopフラグ43しか存在せず、モニタ動作条件成立時に常にモニタデータ42が記録されている。一方、コンテキストBのバッファには、図11に示すように、Fake_Startフラグ44とFake_Stopフラグ45が存在し、その期間はモニタデータ42が取得できていない。しかし、タイミングデータ40を利用すれば、取得したモニタデータのカバレッジが自動であるいはマニュアルで計算することができ、不連続データの信頼性を判断する材料として利用できる。
以上のように、本実施の形態によれば、マルチコアプロセッサにおいて有効なハードウエアモニタ機能管理を実現するために、複数のハードウエアモニタコンテキスト間の競合を調停するために、モニタコンテキストは、要素として優先度情報を有している。その結果、ユーザが取得したい、重要なモニタデータについては、連続して取得することができる。
さらに、低い優先度のモニタコンテキストについては、ハードウエアモニタ機能の時分割利用によってモニタデータが不連続になってしまう問題に対して、本実施の形態では、不連続データの信頼性を判断することができるようにするために、モニタコンテキストの切り替え時にタイミングデータを記録し、不連続データの解析をサポートするができるようにしている。
さらに、本実施の形態では、様々な単位あるいは範囲のモニタデータ取得要求に応えるために、モニタコンテキストは、その要素としてモニタ動作条件情報を有している。
従って、本実施の形態によれば、ハードウエアモニタ機能に対する競合の解決、不連続データの解析のサポート、及び、様々な単位あるいは範囲のデータ取得要求への対応を実現することができる。
従って、本実施の形態によれば、ハードウエアモニタ機能に対する競合の解決、不連続データの解析のサポート、及び、様々な単位あるいは範囲のデータ取得要求への対応を実現することができる。
次に上述した実施の形態の変形例を説明する。
上述した実施の形態では、ハイパーバイザOS6が、具体的には論理コアスケジューラ6aが、モニタコンテキストの設定、ハードウエアモニタ機能部の操作等を行っていたが、論理パーティションと論理コアを有さない場合でも、上述したようなハードウエアモニタ機能を実現することができる。
上述した実施の形態では、ハイパーバイザOS6が、具体的には論理コアスケジューラ6aが、モニタコンテキストの設定、ハードウエアモニタ機能部の操作等を行っていたが、論理パーティションと論理コアを有さない場合でも、上述したようなハードウエアモニタ機能を実現することができる。
具体的には、上述した実施の形態では、ハイパーバイザOS6を利用して、ハイパーバイザOS6がプロセッサ1のハードウエアモニタ機能を管理する場合に、ハードウエアモニタ機能の設定に関して、各論理パーティションには論理的な値の設定を許し、ハイパーバイザOS6の論理コアスケジューラ6aが実行時に対応する物理的な値に変換することにより、ハードウエアの仮想化に対応している。第1の変形例では、ハイパーバイザOSが存在しない、すなわち各プロセスが持つハードウエアモニタコンテキストを、ハードウエアモニタ管理装置としてのOSが管理する。
図12は、本実施の形態の第1の変形例に係るシステムの構成を示すブロック図である。マルチコアのプロセッサ1の上位にはOS90が存在し、OS90の上で複数のプロセス、ここではM個(Mは、2以上の整数)91が動作している。そして、中位層103aのOS90が、上位層104aの複数のプロセス91のコンテキストスイッチ処理を行うプロセススケジューラ90aを有する。従って、各プロセス91に対応したハードウエアモニタコンテキストが設定され、OS90のプロセススケジューラ90aがモニタコンテキストを切り替える。スケジューラ部としてのプロセススケジューラ90aは、上述した実施の形態に係るモニタコンテキストの設定、ハードウエアモニタ機能部の操作等を行うハードウエアモニタ管理部を構成する。
本第1の変形例においても、モニタコンテキストの構成は図3と同じ構成が適用できる。上述した実施の形態との違いは、モニタ動作条件情報32であり、論理コアIDの代わりにプロセスIDが指定される。また、OS90のプロセススケジューラ90aの処理は、図7に示す論理コアスケジューラの処理において論理コアをプロセスとみなした場合と同じである。図8においても、各論理コアをプロセスとみなせば、動作状態は同等である。
第2の変形例について説明する。図13は、第2の変形例について説明する。
上述した実施の形態のハードウエアモニタ機能によれば、専用レジスタへのアクセスによってモニタデータの取得が行われていた。しかし、モニタデータを自動的にプロセッサの外部メモリへ所定のタイミングで出力する機能(自動外部出力機能)を備えたハードウエアモニタ機能があれば、データ格納処理のオーバヘッドが無くなること、時系列のモニタデータが取得できること、大容量外部メモリの利用により長時間の性能測定が行えることなど、より優れた性能測定環境が実現できる。そこで、本第2の変形例は、ハードウエアモニタ機能部に、このような自動外部出力機能が備えられた例である。
上述した実施の形態のハードウエアモニタ機能によれば、専用レジスタへのアクセスによってモニタデータの取得が行われていた。しかし、モニタデータを自動的にプロセッサの外部メモリへ所定のタイミングで出力する機能(自動外部出力機能)を備えたハードウエアモニタ機能があれば、データ格納処理のオーバヘッドが無くなること、時系列のモニタデータが取得できること、大容量外部メモリの利用により長時間の性能測定が行えることなど、より優れた性能測定環境が実現できる。そこで、本第2の変形例は、ハードウエアモニタ機能部に、このような自動外部出力機能が備えられた例である。
図13は、自動外部出力機能を備えたハードウエアモニタ機能部と、上位OSとの関係を説明するための図である。図2との相違点は、ハードウエアモニタ機能部5が、自動的に外部メモリ200上の所定のバッファ領域201にモニタデータを出力することである。ハイパーバイザOS6には、そのバッファ領域201の位置を予め設定される。所定のバッファ領域201は、複数の物理コアを含む1つのプロセッサ1の外部に設けられた外部メモリ内の記憶領域として、設定される。
モニタコンテキストには、図3のコンテキスト管理情報30の1つとして、モニタコンテキスト毎に、モニタデータの出力先のバッファ領域201のアドレス、サイズ、writeポインタの情報が設定される。
また、図7の論理コアスケジューラの処理では、モニタコンテキストのスイッチ(ステップS8)と同時にバッファ領域の切り替えが行われる。その結果、モニタ動作の開始(ステップ(S17)が行われるときに、新たなバッファ領域にモニタデータが自動的に出力される。そのため、ステップS6,S12におけるモニタ動作の終了では、実施の形態のようなモニタデータの取得及び格納を行う必要はない。なお、タイミングデータについては実施の形態と同様に記録される。
第3の変形例について説明する。第3の変形例として、ハイパーバイザOSあるいはOSが、設定された特定の論理パーティションについてのみハードウエアモニタ機能の利用を許可するようにしてもよい。すなわち、スケジューラ部を有するハイパーバイザOS又はOSが、複数のプロセス等のそれぞれに対して、ハードウエアモニタ機能設定を制限することができるようにしてもよい。
上述した実施の形態によれば、モニタコンテキスト30のコンテキスト管理情報により、モニタコンテキストの有効と無効の設定が可能であり、全ての論理パーティションについて、モニタコンテキストが有効とされれば、全ての論理パーティションについてのハードウエアモニタ機能設定要が許可される。しかし、セキュリティやコンテンツ保護の観点から、ハードウエアモニタ機能を利用できる論理パーティションを制限したいという要求も考えられる。そのため、ハイパーバイザOSあるいはOSが、設定された特定の論理パーティションについてのみハードウエアモニタ機能の利用を許可し、それ以外の論理パーティションからの要求を全て拒否するような制限機能を有するようにしてもよい。
上述した実施の形態によれば、モニタコンテキスト30のコンテキスト管理情報により、モニタコンテキストの有効と無効の設定が可能であり、全ての論理パーティションについて、モニタコンテキストが有効とされれば、全ての論理パーティションについてのハードウエアモニタ機能設定要が許可される。しかし、セキュリティやコンテンツ保護の観点から、ハードウエアモニタ機能を利用できる論理パーティションを制限したいという要求も考えられる。そのため、ハイパーバイザOSあるいはOSが、設定された特定の論理パーティションについてのみハードウエアモニタ機能の利用を許可し、それ以外の論理パーティションからの要求を全て拒否するような制限機能を有するようにしてもよい。
従って、ハイパーバイザOS等により許可された論理パーティションについては、モニタ動作条件の設定に応じて、上述したような、単一論理パーティションに属する論理コア単位のモニタデータの取得、単一論理パーティション全体に関するモニタデータの取得、あるいはシステム全体に関するモニタデータの取得をすることができ、結果として、上述した実施の形態と同様の機能を実現することができる。
第4の変形例について説明する。第4の変形例として、さらになお、マルチコアプロセッサが複数のハードウエアモニタ機能部を有する場合には、上述したモニタコンテキストの優先度情報に基づいて、複数のハードウエアモニタ機能部の割り当てを行うようにしてもよい。すなわち、複数のハードウエアモニタ機能部を有するプロセッサにおいては、優先度の高いモニタコンテキストから順に、ハードウエアモニタ機能部を割り当てるようにしてもよい。
具体的には、ハードウエアモニタ機能が、1以上のハードウエアモニタ機能部において実行されるとき、ハードウエアモニタ管理部である論理コアスケジューラ6a等は、優先度情報の優先度の高い順に、ハードウエアモニタ機能を設定する1以上のモニタコンテキストを割り付ける。
その場合、ハードウエアモニタ機能部の数は、物理コアの数より少なく、各ハードウエアモニタ機能部は同一の仕様であるとすれば、各論理コア上で動作するプロセス間で、ハードウエアモニタ機能に対する競合が発生しても、モニタコンテキストの優先度情報を利用して、優先度の高い順にハードウエアモニタ機能部を割り当てることにより、そのような競合に対処することができる。
なお、以上説明した動作を実行するプログラムは、フロッピー(登録商標)ディスク、CD−ROM等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されているコンピュータプログラム製品として提供される。そのプログラム中の、上述した動作に対応する各種命令がコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を、プログラム製品として通信ネットワークを介して流通または提供することもできる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のハードウエアモニタ管理装置を実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 マルチコアプロセッサ、2 主メモリ、30 モニタコンテキスト、50、50A モニタコンテキストテーブル、101、101a マルチコアプロセッサシステム、102 下位層、103、103a 中位層、104 上位層
Claims (5)
- 複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブルと、
前記モニタ動作条件を満たす1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定するモニタコンテキストについては、前記ハードウエアモニタ機能を実行させてモニタデータを取得して、前記モニタ動作条件を満たす時間を示す第1の時間データと共に出力し、前記モニタ動作条件を満たす前記1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定しないモニタコンテキストについては、前記モニタ動作条件を満たす時間を示す第2の時間データを出力するハードウエアモニタ管理部と、
を有することを特徴とするハードウエアモニタ管理装置。 - 前記モニタ動作条件は、論理演算式を用いて表現された前記複数のプロセスの実行状態についての条件を含むことを特徴とする請求項1に記載のハードウエアモニタ管理装置。
- 前記論理演算式は、論理和と論理積の少なくとも1つを用いた式であることを特徴とする請求項2に記載のハードウエアモニタ管理装置。
- 前記複数のプロセスを並列に実行する複数の論理プロセッサを、前記複数の物理プロセッサに割り付けるスケジューラ部を有し、
該スケジューラ部が、前記モニタコンテキストテーブルと前記ハードウエアモニタ管理部を有することを特徴とする請求項1から3のいずれか1つに記載のハードウエアモニタ管理装置。 - 複数のプロセスを並列に実行する複数の物理プロセッサの動作状態をモニタするハードウエアモニタ機能を設定するために、それぞれがモニタ動作条件と優先度の情報を含む複数のモニタコンテキストが設定されるモニタコンテキストテーブルを設け、
前記モニタ動作条件を満たす1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定するモニタコンテキストについては、前記ハードウエアモニタ機能を実行させてモニタデータを取得して、前記モニタ動作条件を満たす時間を示す第1の時間データと共に出力し、
前記モニタ動作条件を満たす前記1以上のモニタコンテキストの中で、前記優先度に基づいて決定された前記ハードウエアモニタ機能を設定しないモニタコンテキストについては、前記モニタ動作条件を満たす時間を示す第2の時間データを出力する、
ことを特徴とするハードウエアモニタ機能の実行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007071357A JP2008234191A (ja) | 2007-03-19 | 2007-03-19 | ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 |
US12/043,329 US20080235700A1 (en) | 2007-03-19 | 2008-03-06 | Hardware Monitor Managing Apparatus and Method of Executing Hardware Monitor Function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007071357A JP2008234191A (ja) | 2007-03-19 | 2007-03-19 | ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008234191A true JP2008234191A (ja) | 2008-10-02 |
Family
ID=39776023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007071357A Pending JP2008234191A (ja) | 2007-03-19 | 2007-03-19 | ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080235700A1 (ja) |
JP (1) | JP2008234191A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010152458A (ja) * | 2008-12-24 | 2010-07-08 | Fujitsu Ltd | 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 |
JP2011138506A (ja) * | 2009-12-26 | 2011-07-14 | Intel Corp | コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化 |
JP2011175624A (ja) * | 2009-12-31 | 2011-09-08 | Intel Corp | Cpu及びgpuの間のリソース共有 |
JP2014052962A (ja) * | 2012-09-10 | 2014-03-20 | Fujitsu Ltd | プロセッサおよびプロセッサの評価方法 |
JP2014514660A (ja) * | 2011-04-14 | 2014-06-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 論理コアの動的マッピング |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009058042A1 (en) * | 2007-10-29 | 2009-05-07 | Intel Corporation | A method of external performance monitoring for virtualized environments |
US7827321B2 (en) | 2008-10-02 | 2010-11-02 | International Business Machines Corporation | Central processing unit measurement facility |
US9449314B2 (en) | 2008-10-02 | 2016-09-20 | International Business Machines Corporation | Virtualization of a central processing unit measurement facility |
KR101867960B1 (ko) * | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
US9658937B2 (en) | 2015-03-17 | 2017-05-23 | Qualcomm Incorporated | Optimization of hardware monitoring for computing devices |
US11295204B2 (en) * | 2017-01-06 | 2022-04-05 | International Business Machines Corporation | Area-efficient, reconfigurable, energy-efficient, speed-efficient neural network substrate |
US9875167B1 (en) * | 2017-03-29 | 2018-01-23 | Google Inc. | Distributed hardware tracing |
US10365987B2 (en) | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
US11048540B2 (en) * | 2018-06-29 | 2021-06-29 | Intel Corporation | Methods and apparatus to manage heat in a central processing unit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744405A (ja) * | 1993-07-30 | 1995-02-14 | Hitachi Ltd | 仮想計算機システムの仮想計算機動作時間計測制御方式 |
JPH09101906A (ja) * | 1995-10-09 | 1997-04-15 | Hitachi Ltd | 並列計算機の性能測定方法 |
JP2006004211A (ja) * | 2004-06-18 | 2006-01-05 | Hitachi Ltd | ハードウェアモニタを用いた性能解析方法 |
-
2007
- 2007-03-19 JP JP2007071357A patent/JP2008234191A/ja active Pending
-
2008
- 2008-03-06 US US12/043,329 patent/US20080235700A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744405A (ja) * | 1993-07-30 | 1995-02-14 | Hitachi Ltd | 仮想計算機システムの仮想計算機動作時間計測制御方式 |
JPH09101906A (ja) * | 1995-10-09 | 1997-04-15 | Hitachi Ltd | 並列計算機の性能測定方法 |
JP2006004211A (ja) * | 2004-06-18 | 2006-01-05 | Hitachi Ltd | ハードウェアモニタを用いた性能解析方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010152458A (ja) * | 2008-12-24 | 2010-07-08 | Fujitsu Ltd | 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 |
JP2011138506A (ja) * | 2009-12-26 | 2011-07-14 | Intel Corp | コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化 |
JP2011175624A (ja) * | 2009-12-31 | 2011-09-08 | Intel Corp | Cpu及びgpuの間のリソース共有 |
JP2014514660A (ja) * | 2011-04-14 | 2014-06-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 論理コアの動的マッピング |
KR101835056B1 (ko) | 2011-04-14 | 2018-03-08 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 논리적 코어들의 동적 맵핑 |
JP2014052962A (ja) * | 2012-09-10 | 2014-03-20 | Fujitsu Ltd | プロセッサおよびプロセッサの評価方法 |
Also Published As
Publication number | Publication date |
---|---|
US20080235700A1 (en) | 2008-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008234191A (ja) | ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法 | |
US9965324B2 (en) | Process grouping for improved cache and memory affinity | |
JP5015665B2 (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
JP3882930B2 (ja) | 共用リソースを使用するための仮想計算機の管理 | |
CN107015862B (zh) | 用于具有不同能力的核心的线程和/或虚拟机调度 | |
US5748468A (en) | Prioritized co-processor resource manager and method | |
KR101850318B1 (ko) | 가상 메모리 관리 장치 및 방법 | |
JP5648544B2 (ja) | スケジューリングプログラム、および情報処理装置 | |
WO2011104824A1 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
US20230129140A1 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
JP2005338985A (ja) | 記憶領域管理方法及びシステム | |
CN110825506A (zh) | 一种嵌入式操作系统的任务调度方法、装置及存储介质 | |
US20130117549A1 (en) | Method for executing multiple operating systems and electronic apparatus | |
Tzenetopoulos et al. | Interference-aware orchestration in kubernetes | |
JP2017091330A (ja) | 計算機システム及び計算機システムのタスク実行方法 | |
JP6135392B2 (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 | |
WO2012098684A1 (ja) | スケジューリング方法およびスケジューリングシステム | |
WO2022194162A1 (zh) | 用于处理中断请求的方法和装置 | |
JP2004178578A (ja) | 競合調停装置、競合調停方法および競合調停プログラム | |
Modi et al. | CABARRE: Request Response Arbitration for Shared Cache Management | |
US20200334079A1 (en) | Processing system for managing process and its acceleration method | |
US20130191839A1 (en) | Information processing apparatus, control method therefor, and computer-readable storage medium | |
US11256633B2 (en) | Processing system with round-robin mechanism and its memory access method | |
JPWO2011114495A1 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
WO2016092667A1 (ja) | 計算機及び割込み制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090917 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101221 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110419 |