元マイクロソフトのエンジニアで初代 Windows タスク マネージャーの開発者である Dave Plummer 氏は、Windows タスク マネージャーで表示される CPU 使用率はリアルタイム データではなく、定期的に更新される周期的な平均であることをオンラインで明らかにしました。プラマーは、Windows ZIP ファイルのサポートや Windows NT スタート メニューなどの象徴的なプロジェクトに携わっており、タスク マネージャーの最初のバージョンを個人的に構築しました。
このツールがシステム リソースを無駄にしないようにするために、彼はこのツールをプログラミングとエンジニアリングの観点から非常にシンプルになるように設計し、1990 年代のコンピューター上でスムーズに実行できるようにしました。しかし、このミニマルなデザインが不正確な数値の基礎を築いています。
プラマー氏は、タスクマネージャーの更新はタイマーによって駆動され、定期的にデータをキャプチャすると述べた。リアルタイムの負荷ではなく、2 回のリフレッシュ間の CPU の統計が表示されます。
CPU 使用時間を単純にリフレッシュ間隔で割った場合、結果は GUI タイマーの精度に大きく依存します。
彼は、ピックアップトラックの後部にメトロノームを積んで、穴だらけの未舗装の道路を運転するようなものだと例えました。完全に安定した状態を維持することは基本的に不可能です。
そこで、彼はより厳密なアルゴリズムを採用しました。つまり、タスク マネージャーに起動以降の各プロセスの合計実行時間 (カーネル時間 + ユーザー時間) を記録させ、現在の値から最後の更新の合計値を引いて、その間隔中のプロセスの CPU 消費量を取得し、それをこの期間中のすべてのプロセスの合計 CPU 消費量で割ります。
この方法は非常に複雑に見えますが、除算を直接行うよりもはるかに正確です。
しかし、テクノロジーの進化により、このアルゴリズムは不十分になってきました。最新の CPU は、動的周波数変調、ターボ アクセラレーション、温度制御周波数の低減、ディープ スリープをサポートしており、これにより、完了した実際のワークロードから CPU 時間の使用量が切り離されます。単一のパーセンテージでは、プロセッサの動作状態を完全に反映することはできません。
Plummer 氏は、CPU 使用時間は以前はワークロードをよく反映していましたが、現在では 2 つの間の相関関係が非常に緩やかになっていると指摘しました。彼は、理想的な CPU 使用率は、完了できる理論上の最大作業量に対する実際の完了作業量の比率を測定する必要があると考えていますが、彼は Microsoft を退職しており、変化を推進することはできません。
