2008-09-16 20 views
131

私のアプリケーションの1つが、私が望むよりも多くのCPUサイクルを消費すると思われます。問題は、バースト的に起こり、タスクマネージャを見るだけではすぐに使用できることを示すために役立つものではありません。プロセスごとにCPUとメモリの使用量を追跡する

CPUの履歴をトラッキングする方法はありますか(&)いくつかのプロセスではメモリ使用量があります。例えば。私は "firefox"の追跡を開始し、1時間ほど後に、その時間中のCPU使用率&のメモリ使用量のグラフが表示されます。

私はこれを実現するための既製のツールまたはプログラムによる方法を探しています。

答えて

142

perfmonStart > Runに入力してEnterキーを押します。パフォーマンスウィンドウが開いたら、+記号をクリックして新しいカウンタをグラフに追加します。カウンタは、PCがどのように動作し、「パフォーマンスオブジェクト」と呼ばれるグループに類似してグループ化されているかのさまざまな側面です。

あなたの質問には、「プロセス」、「メモリ」、「プロセッサ」パフォーマンスオブジェクトを選択できます。これらのカウンタはリアルタイムで表示されます

また、後で検査のためにパフォーマンスデータを保存するユーティリティを指定することもできます。これを行うには、左側のパネルで[パフォーマンスログと警告]を選択します。 (システムモニタのコンソールの下に、前述のカウンタが表示されます。「ファイル」>「スナップインの追加と削除」をクリックし、追加をクリックしてリストから「パフォーマンスログと警告」を選択します。 ")パフォーマンスログとアラートから、"カウンタログ "の下に新しい監視構成を作成し、カウンタを追加し、サンプリングレート、ログ形式(バイナリまたはプレーンテキスト)およびログの場所を指定します。

+1

カウンターログでデータサンプルを取得する理想的な間隔は何ですか? –

+6

MSは明らかにこれを書いたのでUIをPerformanceMonitorに変更しました。どのようにあなたはWindows 2008 R2でこれを行うにはどのようなアイデア? –

+0

@MartinBrown、 'monitoring tools'> 'performance monitor'を開きます。白い画面を右クリックし、「カウンタを追加」をクリックします。 – JNF

1

まあ、グラフはあまり便利ではありませんが、Process Explorerがそれを行うことができます。それを行う代替/より良い方法を探しています。

2

Perfmon.exeはWindowsに組み込まれています。

38

Process Explorerは、処理で使用された合計CPU時間と、プロセスごとの履歴グラフを表示できます。

+0

これを使用して、ランダムバーストでより多くのメモリまたはプロセッサ電源を使用するプロセスを見つける方法を教えてください。あなたは詳しく説明できますか? – Xitcod13

+0

列見出しを右クリックして[列の選択]を選択し、[プロセスパフォーマンス]の[CPU履歴]をチェックします。 – Laurent

+0

ゼロにリセットできますか? –

7

私が同意すると、perfmon.exeを使用すると、監視するすべてのプロセスのカウンタを追加することができます(右パネルを右クリックします)。

パフォーマンスオブジェクト:プロセス 「インスタンスをリストから選択」にチェックを入れ、firefoxを選択します。

+0

ありがとうございます。 1時間のように、あらかじめ定義された時間内にCPU使用率の履歴を確認するにはどうすればよいですか? –

5

WMIはWindows Management Instrumentationであり、すべての最新バージョンのWindowsに組み込まれています。 CPU使用率、ディスクI/O、メモリ使用量などをプログラムで追跡することができます。

Perfmon.exeは、このインターフェイスのGUIフロントエンドであり、プロセスを監視し、ログに情報を書き込んだり、その事実の後でログを分析できるようにします。それは世界で最もエレガントなプログラムではありませんが、仕事を終わらせます。

+4

技術的には、perfmonはWMIに長年取り組んでいる基礎となるWindowsパフォーマンスカウンタAPIへのインターフェイスです。 WMIは、ネームスペース内のパフォーマンスカウンタAPIも公開しています。 –

2

プロセスLassoはグラフではなく、プロセスの自動化と優先度の最適化のために設計されています。は、プロセスごとのCPU使用率の履歴をグラフに白い線で示していますが、はありませんプロセスメモリ使用履歴。

免責事項:私はProcess Lassoの著者ですが、ここで実際にそれを支持しているわけではありません - より良いソリューション(perfmonが最高です)があるためです。

最高のものはWindows Vista +のリソースとパフォーマンスモニタです。 CPU、メモリ、ネットワーク、およびディスクアクセスの使用状況をプロセス別に追跡できます。これは、ずっと前に作成されていたはずのすばらしいシステム情報ユーティリティです。私が間違っていない限り、プロセスごとのCPUとメモリの使用状況を時間の経過とともに追跡することができます(他にも記載されています)。

14

perfmon.exeを使用して、「プロセス」カウンタの下にある「プライベートバイト」カウンタを使用してメモリ使用量を追跡しようとしましたが、正常に動作しています。

6

おそらくこれを使用できます。それはあなたのために働く必要があり、指定されたプロセスのプロセッサ時間を報告します。

@echo off 
: Rich Kreider <[email protected]> 
: report processor time for given process until process exits (could be expanded to use a PID to be more 
: precise) 
: Depends: typeperf 
: Usage: foo.cmd <processname> 

set process=%~1 
echo Press CTRL-C To Stop... 
:begin 
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end 
) else (
echo %%~c%% 
goto begin 
) 
) 

:end 
echo Process seems to have terminated. 
1

私はこれを試していないが、ProcDumpは、よりよい解決策のように思えます。サイトから

説明:

ProcDumpが主な目的CPUスパイク用のアプリケーションを監視し、クラッシュを発生している管理者や開発者がスパイクの原因を特定するために使用することができますスパイク時のダンプコマンドラインユーティリティです。 ProcDumpには、Windowsとタスクマネージャが使用するウィンドウハングと同じ定義を使用したハングウィンドウ監視、未処理の例外監視、システムパフォーマンスカウンタの値に基づいたダンプの生成も含まれています。また、他のスクリプトに組み込むことができる一般的なプロセスダンプユーティリティとしても機能します。

0

CPU/RAM/IO速度の履歴グラフにtaskinfoを使用します。 http://www.iarsn.com/taskinfo.html

しかし、応答が不安定になり、ファルティHD/SSドライブのために割り込み時間に似ています。

関連する問題