この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

PerformanceCounter クラス

 

公開日: 2016年10月

Windows NT パフォーマンス カウンター コンポーネントを表します。

名前空間:   System.Diagnostics
アセンブリ:  System (System.dll 内)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Diagnostics.PerformanceCounter

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	SharedState = true)]
public sealed class PerformanceCounter : Component, ISupportInitialize

名前説明
System_CAPS_pubmethodPerformanceCounter()

読み取り専用の新しいインスタンスを初期化、 PerformanceCounter システムやカスタム パフォーマンス カウンターとインスタンスを関連付けることがなく、クラスです。

System_CAPS_pubmethodPerformanceCounter(String, String)

読み取り専用の新しいインスタンスを初期化、 PerformanceCounter クラスし、指定したシステムまたはローカル コンピューターでカスタム パフォーマンス カウンターに関連付けます。 このコンス トラクターでは、カテゴリの 1 つのインスタンスである必要があります。

System_CAPS_pubmethodPerformanceCounter(String, String, Boolean)

初期化の新しい読み取り専用または読み取り/書き込みのインスタンスの PerformanceCounter クラスし、指定したシステムまたはローカル コンピューターでカスタム パフォーマンス カウンターに関連付けます。 このコンス トラクターは、カテゴリには、1 つのインスタンスが含まれる必要があります。

System_CAPS_pubmethodPerformanceCounter(String, String, String)

読み取り専用の新しいインスタンスを初期化、 PerformanceCounter クラスし、指定したシステムまたはローカル コンピューター上のカスタム パフォーマンス カウンターと、カテゴリ インスタンスに関連付けます。

System_CAPS_pubmethodPerformanceCounter(String, String, String, Boolean)

初期化の新しい読み取り専用または読み取り/書き込みのインスタンスの PerformanceCounter クラスし、指定したシステムまたはローカル コンピューター上のカスタム パフォーマンス カウンターと、カテゴリ インスタンスに関連付けます。

System_CAPS_pubmethodPerformanceCounter(String, String, String, String)

読み取り専用の新しいインスタンスを初期化、 PerformanceCounter クラスし、指定したシステムまたは指定したコンピューター上でカスタム パフォーマンス カウンターと、カテゴリのインスタンスに関連付けます。

名前説明
System_CAPS_pubpropertyCategoryName

取得または、このパフォーマンス カウンタのパフォーマンス カウンター カテゴリの名前を設定します。

System_CAPS_pubpropertyContainer

取得、 IContainer を含む、 Componentです。(Component から継承されます。)

System_CAPS_pubpropertyCounterHelp

このパフォーマンス カウンターの説明を取得します。

System_CAPS_pubpropertyCounterName

これに関連付けられているパフォーマンス カウンターの名前を取得または PerformanceCounter インスタンス。

System_CAPS_pubpropertyCounterType

関連するパフォーマンス カウンターのカウンターの種類を取得します。

System_CAPS_pubpropertyInstanceLifetime

取得またはプロセスの有効期間を設定します。

System_CAPS_pubpropertyInstanceName

取得または、このパフォーマンス カウンターのインスタンス名を設定します。

System_CAPS_pubpropertyMachineName

このパフォーマンス カウンターのコンピューター名を取得または

System_CAPS_pubpropertyRawValue

取得または、このカウンターの raw、または計算されない値を設定します。

System_CAPS_pubpropertyReadOnly

取得または設定を示す値かどうかこの PerformanceCounter インスタンスが読み取り専用モードです。

System_CAPS_pubpropertySite

取得または設定、 ISiteComponentです。(Component から継承されます。)

名前説明
System_CAPS_pubmethodBeginInit()

初期化を開始、 PerformanceCounter フォームまたは別のコンポーネントで使用されるインスタンスです。 初期化は実行時に発生します。

System_CAPS_pubmethodClose()

パフォーマンス カウンターを閉じるし、このパフォーマンス カウンターのインスタンスによって割り当てられたすべてのリソースを解放します。

System_CAPS_pubmethodSystem_CAPS_staticCloseSharedResources()

カウンターによって割り当てられているパフォーマンス カウンター ライブラリ共有の状態を解放します。

System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodDecrement()

デクリメント効率的な分割不可能な操作を使用して関連するパフォーマンス カウンターです。

System_CAPS_pubmethodDispose()

Component によって使用されているすべてのリソースを解放します。(Component から継承されます。)

System_CAPS_pubmethodEndInit()

初期化を終了、 PerformanceCounter フォームまたは別のコンポーネントで使用されるインスタンスです。 初期化は実行時に発生します。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodIncrement()

効率的な分割不可能な操作を使用して、関連するパフォーマンス カウンターをインクリメントします。

System_CAPS_pubmethodIncrementBy(Int64)

ずつインクリメントまたはデクリメント効率的なアトミック操作で指定した量によって関連するパフォーマンス カウンターの値。

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodNextSample()

カウンターのサンプルを取得し、基本、または計算されない値を返します。

System_CAPS_pubmethodNextValue()

カウンターのサンプルを取得し、計算される値を返します。

System_CAPS_pubmethodRemoveInstance()

指定されたカテゴリ インスタンスの削除、 PerformanceCounter オブジェクト InstanceName プロパティです。

System_CAPS_pubmethodToString()

返します。、 String の名前を含む、 Component, 、存在する場合。 このメソッドはオーバーライドできません。(Component から継承されます。)

名前説明
System_CAPS_pubfieldSystem_CAPS_staticDefaultFileMappingSize

互換性のために残されています。パフォーマンス カウンターが共有するグローバル メモリのバイト単位のサイズを指定します。 既定のサイズは 524, 288 バイトです。

名前説明
System_CAPS_pubeventDisposed

呼び出しによってコンポーネントが破棄されるときに発生、 Dispose メソッドです。(Component から継承されます。)

PerformanceCounter 定義済みの既存またはカスタムのカウンターを読み取ると公開 (書き込み) のパフォーマンスの両方のコンポーネントを使用できるデータのカスタム カウンターをします。

Windows パフォーマンス モニターに示されている多数の定義済みのカウンターが Add Counters dialog boxします。 .NET Framework のパフォーマンス カウンターの詳細については、次を参照してください。 Performance Counters in the .NET Frameworkします。

この型は、 IDisposable インターフェイスです。 型の使用が完了したらを直接または間接的にその破棄する必要があります。 型の直接 dispose を呼び出してその Dispose メソッドで、 try/catch ブロックします。 直接ことのない破棄する場合など言語構成要素を使用して using (c#) のまたは Using (Visual Basic で)。 詳細については、"を使用して、オブジェクトを実装して IDisposable"」セクションを参照してください、 IDisposable インターフェイスに関するトピック。

System_CAPS_important重要

1.0 および 1.1 の .NET Framework のバージョンでは、このクラスには、完全に信頼できる直前の呼び出し元が必要です。 以降、.NET Framework version 2.0 では、このクラスを必要と PerformanceCounterPermission に対する具体的な操作です。 強くお勧めする PerformanceCounterPermission 部分的に信頼されたコードに付与されません。 読み取りし、書き込みのパフォーマンス カウンターにできる機能は、実行中のプロセスと情報の取得の列挙などの操作を実行するためのコードをできます。

さらを渡す、 PerformanceCounter 信頼性の低いコードにオブジェクトがセキュリティ上の問題を作成できます。 渡さないようにパフォーマンス カウンター オブジェクトなど、 PerformanceCounterCategory または PerformanceCounter, 、信頼性の低いコードです。

パフォーマンス カウンターから読み取れませんのインスタンスを作成、 PerformanceCounter 設定、 CategoryName, 、CounterName, 、し、必要に応じて、 InstanceName または MachineName プロパティ、および、呼び出し、 NextValue パフォーマンス カウンタの読み取りを実行するメソッドです。

パフォーマンス カウンター データを発行するには、1 つまたは複数のカスタム カウンターを使用してを使用してを作成、 PerformanceCounterCategory.Create メソッドのインスタンスを作成、 PerformanceCounter 設定、 CategoryName, 、CounterName と、必要に応じて、 InstanceName または MachineName プロパティ、および [呼び出し、 IncrementBy, 、Increment, 、または Decrement メソッド、またはセット、 RawValue カスタム カウンターの値を変更するプロパティです。

System_CAPS_noteメモ

Increment, 、IncrementBy, 、および Decrement メソッドでは、インタロックを使用して、カウンターの値を更新します。 これにより、マルチ スレッドまたはマルチ プロセスのシナリオもパフォーマンスが大幅に低下の結果で、このカウンターの値を正確に維持できます。 インター ロック精度が不要な場合の操作を指定、更新することができます、 RawValue 、5 までのプロパティを直接倍パフォーマンスが向上します。 ただし、マルチ スレッドのシナリオでカウンターの値に更新プログラムによって無視される場合が、データが不正確になります。

カウンターは、パフォーマンスでデータを収集するメカニズムです。 レジストリでは、それぞれのシステムの機能の特定の領域に関連するすべてのカウンターの名前を格納します。 例には、プロセッサのビジー時間、メモリ使用量、またはネットワーク接続経由で受信したバイト数が含まれます。

各カウンターは、その名前と場所を一意に識別します。 カウンター情報をファイルのパスには、ドライブ、ディレクトリ、1 つ以上のサブディレクトリおよびファイル名が含まれている、同じ方法では、4 つの要素で構成されます。 コンピューター、カテゴリ、カテゴリ インスタンスおよびカウンターの名前。

カウンター情報は、カテゴリ、またはカウンターのデータを測定するパフォーマンス オブジェクトを含める必要があります。 コンピューターのカテゴリには、プロセッサ、ディスク、およびメモリなどの物理的なコンポーネントが含まれます。 プロセスやスレッドなどのシステム カテゴリもあります。 各カテゴリは、コンピューター内の機能の要素に関連して一連の標準カウンターが割り当てられています。 これらのオブジェクトは Windows 2000 のシステム モニター カウンターの追加] ダイアログ ボックスのパフォーマンス オブジェクトのドロップダウン リストに一覧表示され、カウンター パスに含める必要があります。 パフォーマンス データがによってグループ化するカテゴリを使用して、関連します。

場合によっては、同じカテゴリの複数のコピーが存在できます。 たとえば、いくつかのプロセスとスレッドを同時に実行し、一部のコンピューターを含む 1 つ以上のプロセッサします。 カテゴリのコピーには、カテゴリ インスタンスと呼ばれ、各インスタンスに割り当てられている標準のカウンターのセットがあります。 カテゴリには複数のインスタンスを設定できる場合は、カウンター情報の 1 つのインスタンスの指定を含める必要があります。

必要な計算を実行するための最初または前の値を必要とするカウンターのパフォーマンス データを取得する呼び出し、 NextValue メソッドを 2 回と使用のアプリケーションで必要な情報が返されます。

System_CAPS_noteメモ

パフォーマンス カウンターのカテゴリと共にインストールされる、 .NET Framework 2.0 個々 の共有メモリを使用して、独自のメモリが各パフォーマンス カウンター カテゴリを使用します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ のレジストリ キーに FileMappingSize をという名前の DWORD を作成して個々 の共有メモリのサイズを指定できる< 項目名 >\Performance します。 FileMappingSize 値は、カテゴリの共有メモリのサイズに設定されます。 既定のサイズは、131, 072 10 進数です。 FileMappingSize 値が存在しない場合、 fileMappingSize 属性の値、 performanceCounters Machine.config ファイルで指定された要素を使用すると、構成ファイルの処理のオーバーヘッドが増加の原因です。 レジストリでファイル マップのサイズを設定して、アプリケーションの起動時のパフォーマンスの向上を実感できます。 ファイル マップのサイズの詳細については、次を参照してください。 <performanceCounters> 要素します。

Win98WinMe

Performance counters are not supported on Windows 98 or Windows Millennium Edition (Me).

次のコード例では、使用、 PerformanceCounter クラスを作成および使用して、 AverageCount64 カウンターの種類。 例では、カテゴリを作成、カウンターの設定、カウンター、および呼び出しからデータを収集、 CounterSampleCalculator パフォーマンス カウンター データを解釈するクラス。 中間および最終結果は、コンソール ウィンドウに表示されます。 その他のパフォーマンス カウンターの種類の他の例を参照してください、 PerformanceCounterType 列挙します。


using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;

public class App {

    private static PerformanceCounter avgCounter64Sample;
    private static PerformanceCounter avgCounter64SampleBase;

    public static void Main()
    {

        ArrayList samplesList = new ArrayList();

        // If the category does not exist, create the category and exit.
        // Performance counters should not be created and immediately used.
        // There is a latency time to enable the counters, they should be created
        // prior to executing the application that uses the counters.
        // Execute this sample a second time to use the category.
        if (SetupCategory())
            return;
        CreateCounters();
        CollectSamples(samplesList);
        CalculateResults(samplesList);

    }

    private static bool SetupCategory()
    {
        if ( !PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") ) 
        {

            CounterCreationDataCollection counterDataCollection = new CounterCreationDataCollection();

            // Add the counter.
            CounterCreationData averageCount64 = new CounterCreationData();
            averageCount64.CounterType = PerformanceCounterType.AverageCount64;
            averageCount64.CounterName = "AverageCounter64Sample";
            counterDataCollection.Add(averageCount64);

            // Add the base counter.
            CounterCreationData averageCount64Base = new CounterCreationData();
            averageCount64Base.CounterType = PerformanceCounterType.AverageBase;
            averageCount64Base.CounterName = "AverageCounter64SampleBase";
            counterDataCollection.Add(averageCount64Base);

            // Create the category.
            PerformanceCounterCategory.Create("AverageCounter64SampleCategory",
                "Demonstrates usage of the AverageCounter64 performance counter type.",
                PerformanceCounterCategoryType.SingleInstance, counterDataCollection);

            return(true);
        }
        else
        {
            Console.WriteLine("Category exists - AverageCounter64SampleCategory");
            return(false);
        }
    }

    private static void CreateCounters()
    {
        // Create the counters.

        avgCounter64Sample = new PerformanceCounter("AverageCounter64SampleCategory", 
            "AverageCounter64Sample", 
            false);


        avgCounter64SampleBase = new PerformanceCounter("AverageCounter64SampleCategory", 
            "AverageCounter64SampleBase", 
            false);

        avgCounter64Sample.RawValue=0;
        avgCounter64SampleBase.RawValue=0;
    }
    private static void CollectSamples(ArrayList samplesList)
    {

        Random r = new Random( DateTime.Now.Millisecond );

        // Loop for the samples.
        for (int j = 0; j < 100; j++) 
        {

            int value = r.Next(1, 10);
            Console.Write(j + " = " + value);

            avgCounter64Sample.IncrementBy(value);

            avgCounter64SampleBase.Increment();

            if ((j % 10) == 9) 
            {
                OutputSample(avgCounter64Sample.NextSample());
                samplesList.Add( avgCounter64Sample.NextSample() );
            }
            else
                Console.WriteLine();

            System.Threading.Thread.Sleep(50);
        }

    }

    private static void CalculateResults(ArrayList samplesList)
    {
        for(int i = 0; i < (samplesList.Count - 1); i++)
        {
            // Output the sample.
            OutputSample( (CounterSample)samplesList[i] );
            OutputSample( (CounterSample)samplesList[i+1] );

            // Use .NET to calculate the counter value.
            Console.WriteLine(".NET computed counter value = " +
                CounterSampleCalculator.ComputeCounterValue((CounterSample)samplesList[i],
                (CounterSample)samplesList[i+1]) );

            // Calculate the counter value manually.
            Console.WriteLine("My computed counter value = " + 
                MyComputeCounterValue((CounterSample)samplesList[i],
                (CounterSample)samplesList[i+1]) );

        }
    }

    //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
    //    Description - This counter type shows how many items are processed, on average,
    //        during an operation. Counters of this type display a ratio of the items 
    //        processed (such as bytes sent) to the number of operations completed. The  
    //        ratio is calculated by comparing the number of items processed during the 
    //        last interval to the number of operations completed during the last interval. 
    // Generic type - Average
    //      Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number 
    //        of items processed during the last sample interval and the denominator (D) 
    //        represents the number of operations completed during the last two sample 
    //        intervals. 
    //    Average (Nx - N0) / (Dx - D0)  
    //    Example PhysicalDisk\ Avg. Disk Bytes/Transfer 
    //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
    private static Single MyComputeCounterValue(CounterSample s0, CounterSample s1)
    {
        Single numerator = (Single)s1.RawValue - (Single)s0.RawValue;
        Single denomenator = (Single)s1.BaseValue - (Single)s0.BaseValue;
        Single counterValue = numerator / denomenator;
        return(counterValue);
    }

    // Output information about the counter sample.
    private static void OutputSample(CounterSample s)
    {
        Console.WriteLine("\r\n+++++++++++");
        Console.WriteLine("Sample values - \r\n");
        Console.WriteLine("   BaseValue        = " + s.BaseValue);
        Console.WriteLine("   CounterFrequency = " + s.CounterFrequency);
        Console.WriteLine("   CounterTimeStamp = " + s.CounterTimeStamp);
        Console.WriteLine("   CounterType      = " + s.CounterType);
        Console.WriteLine("   RawValue         = " + s.RawValue);
        Console.WriteLine("   SystemFrequency  = " + s.SystemFrequency);
        Console.WriteLine("   TimeStamp        = " + s.TimeStamp);
        Console.WriteLine("   TimeStamp100nSec = " + s.TimeStamp100nSec);
        Console.WriteLine("++++++++++++++++++++++");
    }
}

.NET Framework
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: