パフォーマンス収集方法についてUnderstanding Performance Collection Methods

Visual Studio プロファイリング ツールには、パフォーマンス データを収集するための 5 つの方法が用意されています。The Visual Studio Profiling Tools provide five methods that you can use to collect performance data. ここでは、これらの方法について説明し、特定の方法がデータの収集方法としてどのようなシナリオに適しているのかを示します。This topic describes the different methods and suggests some scenarios in which collecting data with a particular method can be appropriate.

注意

Windows 8 および Windows Server 2012 の強化されたセキュリティ機能によって、Visual Studio プロファイラーがこれらのプラットフォームでデータを収集する方法に大幅な変更が必要になりました。Enhanced security features in Windows 8 and Windows Server 2012 required significant changes in the way the Visual Studio profiler collects data on these platforms. UWP アプリにも新しい収集手法が必要です。UWP apps also require new collection techniques. Windows 8 および Windows Server 2012 アプリケーションのパフォーマンス ツール」を参照してください。See Performance Tools on Windows 8 and Windows Server 2012 applications.

メソッドMethod 説明Description
サンプリングSampling アプリケーションが実行する作業についての統計データを収集します。Collects statistical data about the work performed by an application.
インストルメンテーションInstrumentation 各関数呼び出しのタイミングに関する詳細情報を取得します。Collects detailed timing information about each function call.
同時実行Concurrency マルチスレッド アプリケーションに関する詳細情報を収集します。Collects detailed information about multi-threaded applications.
.NET メモリ.NET memory .NET メモリの割り当ておよびガベージ コレクションに関する詳細情報を収集します。Collects detailed information about .NET memory allocation and garbage collection.
階層の相互作用Tier interaction SQL Server データベースに対する ADO.NET の同期の関数呼び出しに関する情報を収集します。Collects information about synchronous ADO.NET function calls to a SqlServer database.

階層相互作用プロファイル データは、Visual Studio の任意のエディションを使用して収集できます。Tier interaction profiling can be collected using any edition of Visual Studio. ただし、階層相互作用プロファイル データを表示できるのは、Visual Studio Enterprise のみです。However, tier interaction profiling data can be viewed only in Visual Studio Enterprise.

一部のプロファイル方法では、ソフトウェアおよびハードウェアのパフォーマンス カウンターなど、ここで示した以外の情報も収集できます。By using some of the profiling methods, you can also collect additional data, such as software and hardware performance counters. 詳細については、「追加のパフォーマンス データの収集」を参照してください。For more information, see Collecting Additional Performance Data.

サンプリングSampling

サンプリング プロファイル方式では、プロファイリング実行中にアプリケーションが実行した作業に関する統計データを収集します。The sampling profiling method collects statistical data about the work that is performed by an application during a profiling run. サンプリング方式は負荷が少ないため、アプリケーション メソッドの実行にほとんど影響しません。The sampling method is lightweight and has little effect on the execution of the application methods.

サンプリングは、Visual Studio プロファイリング ツールの既定の方式です。Sampling is the default method of the Visual Studio Profiling Tools. サンプリング方式は、次のような用途に適しています。It is useful for the following:

  • アプリケーションのパフォーマンスを初めて調査する場合Initial explorations of the performance of your application.
  • プロセッサ (CPU) の使用に関連するパフォーマンス上の問題を調査する場合Investigating performance issues that involve the utilization of the processor (CPU).

サンプリング プロファイル方式では、コンピューター プロセッサを一定の間隔で中断し、関数の呼び出し履歴を収集します。The sampling profiling method interrupts the computer processor at set intervals and collects the function call stack. 排他サンプル カウントは、実行中の関数を対象にインクリメントされ、包括カウントは、呼び出し履歴のすべての呼び出し元関数を対象にインクリメントされます。Exclusive sample counts are incremented for the function that is executing and inclusive counts are incremented for all of the calling functions on the call stack. サンプリング レポートには、プロファイリング対象のモジュール、関数、ソース コード行、および命令について、これらのカウントの合計が表示されます。Sampling reports present the totals of these counts for the profiled module, function, source code line, and instruction.

既定では、サンプリング間隔は CPU のサイクル数に設定されます。By default, the profiler sets the sampling interval to CPU cycles. ただし、この間隔の種類を別の CPU パフォーマンス カウンターに変更することや、カウンター イベントの回数を間隔として設定することもできます。You can change the interval type to another CPU performance counter and you can set the number of counter events for the interval. また、ADO.NET 経由で行われた SQL Server データベースに対するクエリについての情報を表す階層の相互作用のプロファイル (TIP) データを収集することもできます。You can also collect tier interaction profiling(TIP) data that provides information about the queries that are made to a SQL server database through ADO.NET.

サンプリングを使用したパフォーマンス統計情報の収集Collecting Performance Statistics by Using Sampling

サンプリング データ値についてUnderstanding Sampling Data Values

サンプリング メソッドのデータ ビューSampling Method Data Views

インストルメンテーションInstrumentation

インストルメンテーション プロファイル方式では、プロファイル対象アプリケーションにおける関数呼び出しのタイミングに関する詳細情報を収集します。The instrumentation profiling method collects detailed timing for the function calls in a profiled application. インストルメンテーション プロファイル方式は、次のような用途に適しています。Instrumentation profiling is useful for the following:

  • ディスク I/O などの入出力のボトルネックを調査する場合Investigating input/output bottlenecks such as disk I/O.
  • 特定のモジュールまたは一連の関数について詳細に調査する場合Close examination of a particular module or set of functions.

インストルメンテーション方式では、インストルメント化対象ファイル内の各関数、およびこれらの関数によって行われた各関数呼び出しのタイミングに関する情報をキャプチャするコードを、バイナリ ファイルに挿入します。The instrumentation method injects code into a binary file that captures timing information for each function in the instrumented file and each function call that is made by those functions. また、この方式では、関数がファイルへの書き込みなどの操作をオペレーティング システムに要求した時間も記録されます。Instrumentation also identifies when a function calls into the operating for operations such as writing to a file. インストルメンテーション レポートでは、関数またはソース コード行の実行にかかった時間の合計が、次の 4 つの値を使用して表されます。Instrumentation reports use four values to represent the total time spent in a function or source code line:

  • 包括経過: 関数またはソース行の実行にかかった時間の合計。Elapsed Inclusive - The total time that is spent executing the function or source line.

  • アプリケーション包括: オペレーティング システムに対する呼び出しにかかった時間を除く、関数またはソース行の実行にかかった時間。Application Inclusive - The time that is spent executing the function or source line, but excluding time that is spent in calls to the operating system.

  • 排他経過: 関数本体内またはソース コード行内のコードの実行にかかった時間。Elapsed Exclusive - The time that is spent executing code in the body of the function or source code line. 関数またはソース行から呼び出された関数の実行にかかった時間は除きます。Time that is spent executing functions that are called by the function or source line is excluded.

  • アプリケーション排他: 関数本体内またはソース コード行内のコードの実行にかかった時間。Application Exclusive - The time that is spent executing code in the body of the function or source code line. オペレーティング システムへの呼び出しにかかった時間、および関数またはソース行から呼び出された関数の実行にかかった時間は除きます。Time that is spent executing calls to the operating system and time that is spent executing functions that are called by the function or source line is excluded.

インストルメンテーション方式を使用して、CPU およびソフトウェアの両方のパフォーマンス カウンターを収集することもできます。You can also collect both CPU and software performance counters by using the instrumentation method.

インストルメンテーション データ値についてUnderstanding Instrumentation Data Values

インストルメンテーションを使用した詳細なタイミング データの収集Collecting Detailed Timing Data by Using Instrumentation

インストルメンテーション メソッドのデータ ビューInstrumentation Method Data Views

同時実行Concurrency

同時実行プロファイルでは、マルチスレッド アプリケーションに関する情報が収集されます。Concurrency profiling collects information about multithreaded applications. リソース競合プロファイルでは、競合するスレッドによる共有リソースへのアクセスで待機が発生するたびに、詳細な呼び出し履歴情報が収集されます。Resource contention profiling collects detailed call stack information every time that competing threads are forced to wait for access to a shared resource. また、同時実行の視覚化では、マルチスレッド アプリケーションが、アプリケーション自体、ハードウェア、オペレーティング システム、およびホスト コンピューター上の他のプロセスと対話する方法に関する、より一般的な情報が収集されます。Concurrency visualization also collects more general information about how your multithreaded application interacts with itself, the hardware, the operating system, and other processes on the host computer:

  • リソース競合レポートには、発生した競合の合計数と、リソースに対する合計待機時間 (待機が発生したモジュール、関数、ソース コード行、命令についての合計待機時間) が表示されます。Resource contention reports display the total number of contentions and the total time that was spent waiting for a resource for the modules, functions, source code lines, and instructions in which the waiting occurred. また、タイムライン グラフにも発生した競合が表示されます。Timeline graphs also show the contentions as they occurred.

  • 同時実行ビジュアライザーでは、パフォーマンスのボトルネック、十分に活用されていない CPU、スレッドの競合、スレッドの移行、同期の遅延、重複 I/O の領域などを特定するためのグラフィカルな情報が表示されます。The concurrency visualizer displays graphical information that you can use to locate performance bottlenecks, CPU underutilization, thread contention, thread migration, synchronization delays, areas of overlapped I/O, and other information. グラフィカルな出力は、呼び出し履歴とソース コードのデータにできる限りリンクされます。When possible, the graphical output links to call stack and source code data. 同時実行の視覚化データは、コマンド ラインおよび Windows アプリケーションについてのみ収集できます。Concurrency visualization data can be collected only for command line and Windows applications.

リソース競合データ値についてUnderstanding Resource Contention Data Values

スレッドおよびプロセスの同時実行データの収集Collecting Thread and Process Concurrency Data

リソース競合データのビューResource Contention Data Views

同時実行ビジュアライザーConcurrency Visualizer

.NET メモリ.NET Memory

.NET メモリ割り当てプロファイル方式では、プロファイリング対象アプリケーションで .NET Framework オブジェクトにメモリが割り当てられるたびに、コンピューター プロセッサに対して割り込みを行います。The .NET memory allocation profiling method interrupts the computer processor at each allocation of a .NET Framework object in a profiled application. オブジェクトの有効期間データも収集する場合は、.NET Framework のガベージ コレクションの実行後に、毎回プロファイラーがコンピューター プロセッサに対して割り込みを行います。When object lifetime data is also collected, the profiler interrupts the processor after each .NET Framework garbage collection.

プロファイラーは、割り当てで作成されたオブジェクト、またはガベージ コレクションで破棄されたオブジェクトの型、サイズ、および数に関する情報を収集します。The profiler collects information about the type, size, and number of objects that were created in an allocation or were destroyed in a garbage collection.

  • メモリの割り当てイベントが発生すると、プロファイラーは関数の呼び出し履歴に関する追加情報を収集します。When an allocation event occurs, the profiler collects additional information about the function call stack. 排他的割り当てカウントは、現在実行中の関数を対象にインクリメントされ、包括的割り当てカウントは、呼び出し履歴のすべての呼び出し元関数を対象にインクリメントされます。Exclusive allocation counts are incremented for the function that is currently executing and inclusive counts are incremented for all the calling functions on the call stack. .NET レポートには、プロファイリング対象の型、モジュール、関数、ソース コード行、および命令について、これらのカウントの合計が表示されます。.NET reports present the totals of these counts for the profiled types, modules, functions, source code lines, and instructions.

  • ガベージ コレクションが発生すると、プロファイラーは、破棄されたオブジェクトに関するデータと、ガベージ コレクションの各ジェネレーション内のオブジェクトに関する情報を収集します。When a garbage collection occurs, the profiler collects data about the objects that were destroyed and information about the objects in each garbage collection generation. プロファイリング実行の終了時には、明示的に破棄されなかったオブジェクトに関するデータが記録されます。At the end of the profiling run, the profiler records data about the objects that were not explicitly destroyed. オブジェクトの有効期間レポートには、プロファイリング実行中にメモリが割り当てられた各型の合計が表示されます。The Object Lifetime report displays the totals for each type that was allocated in the profiling run.

.NET メモリのプロファイリングは、サンプリング方式またはインストルメンテーション方式で実行できます。.NET memory profiling can be used in either sampling or instrumentation mode. 選択するモードによって、.NET メモリのプロファイリングに固有のメモリ割り当てレポートおよびオブジェクトの有効期間レポートに影響が及ぶことはありません。The mode that you select does not affect the Allocation and Object Lifetime reports that are unique to.NET memory profiling:

  • .NET メモリのプロファイリングをサンプリング モードで実行すると、サンプリング間隔としてメモリ割り当てイベントが使用され、メモリが割り当てられたオブジェクトの数と、割り当てられたメモリの総バイト数が、レポートの包括値および排他値として表示されます。When you run .NET memory profiling in sampling mode, the profiler.NET uses memory allocation events as the interval and displays the number of objects that were allocated and the total bytes that were allocated as the inclusive and exclusive values in the reports.

  • .NET メモリのプロファイリングをインストルメンテーション モードで実行すると、タイミングに関する詳細情報と共に、包括的割り当て値および排他的割り当て値が収集されます。When you run .NET memory profiling in instrumentation mode, detailed timing information is collected together with the inclusive and exclusive allocation values.

メモリの割り当ておよびオブジェクトの有効期間のデータ値についてUnderstanding Memory Allocation and Object Lifetime Data Values

.NET メモリの割り当ておよび有効期間データの収集Collecting .NET Memory Allocation and Lifetime Data

.NET メモリのデータ ビュー.NET Memory Data Views

階層の相互作用Tier Interaction

階層の相互作用のプロファイリングでは、ADO.NETADO.NET ページまたはその他のアプリケーションと ASP.NETASP.NET データベースとの間で行われた同期的な SQL ServerSQL Server 呼び出しに関する情報が、プロファイリング データ ファイルに追加されます。Tier-interaction profiling adds information to a profiling data file about synchronous ADO.NETADO.NET calls between an ASP.NETASP.NET page or other application and a SQL ServerSQL Server database. データには、呼び出しの回数と時間、および最長時間と最短時間が含まれます。Data includes the number and time of calls, and the maximum and minimum times. 階層の相互作用データは、サンプリング、インストルメンテーション、.NET メモリ、または同時実行の各方式で収集されたプロファイリング データに追加できます。Tier-interaction data can be added to profiling data that is collected with the sampling, instrumentation, .NET memory, or concurrency methods.

階層相互作用プロファイリング データTier Interaction Profiling Data

プロファイリング ツールによって収集される階層の相互作用データTier interaction data that is collected by Profiling Tools

階層相互作用データの収集Collecting tier interaction data

階層相互作用のビューTier Interaction Views

関連項目See also

方法: Web サイトのパフォーマンス データを収集するHow to: Collect Performance Data for a Web Site
パフォーマンス プロファイリングのビギナーズ ガイドBeginners Guide to Performance Profiling