1

すべてのプロセスのリストは必要ありません。Windowsのタスクマネージャーに表示されるような合計パーセンテージだけです。

私はcoldfusionを介してこの情報を使用しますが、現在のCPU使用率の総数を見つけようとしているだけであらゆる種類の問題が発生しています。

それがwmiまたはt-sqlのどちらからのものであるかは関係ありません。ゲージチャートにデータを入力するために使用する総数が必要であり、ajaxを介して現在のCPU使用率が表示されます...

ありがとうございました...

4

3 に答える 3

2

私の場合は、問題のマシンにperfmonカウンターを設定して、合計CPUを測定します。これは、数秒ごとにCSVファイルに書き込むように構成できます。

次に、そのファイルを1分ごとにデータベースに書き込むタスクを作成し、CFにそのデータを読み取らせて、時間の経過に伴うグラフを表示できるようにします。または、最新の値が必要な場合は、CFにCSVファイルの最後の値を読み取らせ、それをゲージに使用します。

個人的には、すべてのWebサーバーのデータベースにすべてのデータを保存しているので、時間の経過に伴うパフォーマンスを確認し、ビジー期間または問題のある期間のレポートを実行できます。私たちにとって素晴らしい作品です。

お役に立てば幸いです。

于 2010-08-21T07:43:39.253 に答える
2

Win32_PerfRawData_PerfOS_Processor WMIクラスを使用して、この情報を取得できます。クエリでは、を使用しますWin32_PerfFormattedData_PerfOS_Processor.Name='_Total'WMIの使用の詳細と、この記事のサンプルvbscirptコードについては、 ColdFusionとWMIの記事を参照してください。

于 2010-08-24T20:40:09.420 に答える
0

これは他の誰かの答えですが、T-SQLでは次のように使用できます。

  DECLARE @ts_now BIGINT
    SELECT @ts_now = cpu_ticks / CONVERT(FLOAT, ms_ticks) FROM sys.dm_os_sys_info

    SELECT top 1 record_id,
            DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS EventTime, 
            SQLProcessUtilization,
            SystemIdle,
            100 - SystemIdle - SQLProcessUtilization AS OtherProcessUtilization,
            100 - SystemIdle AS TotalCPU
    FROM (
            SELECT 
                    record.value('(./Record/@id)[1]', 'int') AS record_id,
                    record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int') AS SystemIdle,
                    record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]', 'int') AS SQLProcessUtilization,
                    TIMESTAMP
            FROM (
                    SELECT TIMESTAMP, CONVERT(XML, record) AS record 
                    FROM sys.dm_os_ring_buffers 
                    WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
                    AND record LIKE '% %') AS x
            ) AS y 
    ORDER BY record_id DESC
于 2011-03-23T14:43:23.713 に答える