すべてのプロセスのリストは必要ありません。Windowsのタスクマネージャーに表示されるような合計パーセンテージだけです。
私はcoldfusionを介してこの情報を使用しますが、現在のCPU使用率の総数を見つけようとしているだけであらゆる種類の問題が発生しています。
それがwmiまたはt-sqlのどちらからのものであるかは関係ありません。ゲージチャートにデータを入力するために使用する総数が必要であり、ajaxを介して現在のCPU使用率が表示されます...
ありがとうございました...
すべてのプロセスのリストは必要ありません。Windowsのタスクマネージャーに表示されるような合計パーセンテージだけです。
私はcoldfusionを介してこの情報を使用しますが、現在のCPU使用率の総数を見つけようとしているだけであらゆる種類の問題が発生しています。
それがwmiまたはt-sqlのどちらからのものであるかは関係ありません。ゲージチャートにデータを入力するために使用する総数が必要であり、ajaxを介して現在のCPU使用率が表示されます...
ありがとうございました...
私の場合は、問題のマシンにperfmonカウンターを設定して、合計CPUを測定します。これは、数秒ごとにCSVファイルに書き込むように構成できます。
次に、そのファイルを1分ごとにデータベースに書き込むタスクを作成し、CFにそのデータを読み取らせて、時間の経過に伴うグラフを表示できるようにします。または、最新の値が必要な場合は、CFにCSVファイルの最後の値を読み取らせ、それをゲージに使用します。
個人的には、すべてのWebサーバーのデータベースにすべてのデータを保存しているので、時間の経過に伴うパフォーマンスを確認し、ビジー期間または問題のある期間のレポートを実行できます。私たちにとって素晴らしい作品です。
お役に立てば幸いです。
Win32_PerfRawData_PerfOS_Processor WMIクラスを使用して、この情報を取得できます。クエリでは、を使用しますWin32_PerfFormattedData_PerfOS_Processor.Name='_Total'
。WMIの使用の詳細と、この記事のサンプルvbscirptコードについては、 ColdFusionとWMIの記事を参照してください。
これは他の誰かの答えですが、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