2012-02-22 9 views
0

プロセスに関連付けられているprocessIDがあります。私はこのプロセスをCreateProcess()関数を使って作成しました。実行中に、実行されているプロセッサの数と、この実行可能ファイルがマルチコアマシンで使用された時間を追跡したいと思います。特定のプロセスが実行されているプロセッサの数を取得

同じもののC++コードを記述したいと思います。誰も私にこれを助けることができますか?

私はWindows XPマルチコアマシンを使用しています。

+0

コードを表示してください。 – gideon

答えて

1

GetProcessAffinityMask

は、指定されたプロセスのプロセスアフィニティマスクとシステムのシステムアフィニティマスクを取得します。

GetProcessTimes

は、指定されたプロセスのためのタイミング情報を取得します。

+1

これは、プロセスが*実行できるプロセッサーを私が知っている限り、実際にスケジューリングされているプロセッサーに関する情報は提供しません。 –

0

Windowsのイベントトレース(ETW)と(すべてのコンテキストスイッチで発行される)CSwitchイベントを使用して、このレベルの詳細をVista以降で取得できます。

さまざまなツール(例:Windows Performance Toolkit)がこのデータをキャプチャして視覚化します。

ただし、これはWindows XPではサポートされていません。

一般的な同時実行性(つまり、指定した時間に実行されているスレッドの数)を知りたい場合は、HKEY_PERFORMANCE_DATAのperfmonスレッドデータを定期的にサンプリングできます。 「スレッド状態」カウンタは、プロセス内のすべてのスレッドの瞬時の状態(つまり、各スレッドが実行中かどうか)を表示します。明らかに、このサンプリングプロセスは最大並行性を(プロセッサ数-1)に制限します。

本当に詳細が必要ですか?通常、GetProcessTimesで十分です。

更新

あなたは、テストマシン上でアプリケーションを実行すると、単純にパフォーマンスモニタを使用して、各CPUの使用率を測定することができます。また、予期せず実行されるものがないように、各プロセスのCPU使用率を測定する必要があります。

レポートのデータを取得するには、perfmonを管理者として実行します。

  • 右側の[パフォーマンスモニタ]に移動して、リアルタイムのパフォーマンスチャートを表示します。監視するオブジェクト/カウンタを選択します(すべてのプロセッサとプロセスの「%Processor Time」)。 Perfmonはリアルタイムでデータのキャプチャを開始する必要があります。
  • グラフを右クリックしてキャプチャの頻度を選択します(たとえば、アプリが何時間も実行されている場合は、毎秒データを必要としません)。
  • 右側のツリーで[パフォーマンスモニタ]ノードを右クリックし、[新規|データコレクタセット]を選択します。名前を入力し、他のデフォルトをクリックします。
  • 右側のデータコレクタセット([データコレクタセット|ユーザー定義]の下)に移動します。ツールバーボタンを使用して(または右クリックして)データ収集を開始および停止することができます。
  • パフォーマンスモニタのグラフに戻り、「ログデータの表示」(2番目のツールバーボタン)を選択します。 [ソース]タブからログファイルを選択します。キャプチャされたデータのグラフが表示されます。
  • グラフを右クリックし、[名前を付けてデータを保存]を選択します。CSVまたはTSVを選択できます。

これだけです。

+0

アプリケーションのパフォーマンスを分析するために、自分のマルチスレッドアプリケーションが稼働しているオペレーティングシステムやプロセッサのコア使用率に関係なく、マシンのすべてのコアを確実に活用するプログラムが必要です。 – psp

+0

これは単なるテスト用の場合(つまり制御された環境にある場合)、アイドル状態のマシンを取り出し、perfmonを使用して、マシンがアイドリングしている間に各CPUのパフォーマンスを測定します。それはごくわずかです。その後、あなたのアプリを実行し、各CPUの性能を測定します。すべてのプロセスのCPU使用率を測定し、バックグラウンドプロセス(インデックスサービスやウィルスチェッカーなど)が実行されていないことを確認したい場合もあります。問題がある場合は、それらを無効にします。 – arx

+0

okですが、そのデータを何らかの方法でファイルに取得して、そこからレポートを生成できる方法はありますか? – psp

関連する問題