1

Windows で Process Explorer を使用してプロセスを調べています。

このプロセスの [プロパティ] 内の [スレッド] タブを見ると、CPU 使用率が高いスレッドが 1 つ表示されます (デュアル コア サーバーの合計 CPU が約 30 ~ 49% であるため、その単一スレッドを間隔に相当する単一の CPU 時間)。

ここで、このスレッドを観察すると、時間の 98% が「準備完了」の状態で費やされ、他の時間は「実行中」の状態になります。間隔の観点からこれをよりよく説明するには、次のようにします。

t=0, CPU = 35, State = Ready 
t=1, CPU = 49, State = Ready 
t=2, CPU = 50, State = Ready 
t=3, CPU = 39, State = Ready 
t=4, CPU = 32, State = Ready 
t=5, CPU = 35, State = Ready 
t=6, CPU = 37, State = Running
t=7, CPU = 40, State = Ready 
t=8, CPU = 42, State = Ready 
t=9, CPU = 43, State = Ready 

Ready の状態で、このスレッドがこれほど多くの CPU を使用できるのはなぜでしょうか?

事前に助けてくれてありがとう!

4

1 に答える 1

2

これは標準的なハイゼンベルグの働きであり、あなたが見るものはそれを観察する行為の影響を受けます。Process Explorer が実行中のスレッドのスナップショットを作成するには、それ自体がプロセッサを取得する必要があります。これにより、特に 2 コア プロセッサでは、別のスレッドがビジー状態で実行される可能性が低くなります。「準備完了」は、スレッドがアクティブであることを意味します。スナップショットが作成された時点でプロセッサを取得する機会がなかっただけです。

状態は、メニーコア プロセッサでのみ信頼できます。Mark Russinovichが使用する種類:)

于 2013-11-08T12:53:13.010 に答える