自分で言ったように、Hユーザースレッドを表示するためにヒットできます。
ただ、将来の参考のために(と楽しみのために)、の計算のCPU使用率を聞かせて!
ちょっとした背景:
最新のオペレーティングシステムには、スケジューラがあります。すべてのプロセスとそのスレッドが計算時間のかなりの部分を確保することを目的としています。私はあまりスケジューリングを行いません(本当に複雑です)。しかし、最終的には実行キューと呼ばれるものがあります。これは、すべてのプロセスのすべての命令が順番に実行されるのを待つ場所です。
すべてのプロセスは、その「タスク」を実行キューに入れ、プロセッサの準備が整うと、それらをポップして実行します。たとえば、プログラムがスリープ状態になると、実行キューから自分自身を削除し、実行の準備が整うと「行末」に戻ります。
このキューでのソートは、プロセスの優先度(「nice value」とも呼ばれます。つまり、プロセスはシステムリソースに適しています)に関係しています。
キューの長さにより、システムの負荷が決まります。たとえば、2.5の負荷は、CPUがリアルタイムで処理できるすべての命令に対して2.5命令があることを意味します。
ところで、Linuxでは、この負荷は10ミリ秒間隔で計算されます(デフォルト)。
次に、CPU使用率のパーセント値について説明します。
2つのクロックがあり、1つが呼び出されt
、リアルタイムを表しているとします。1秒ごとに1秒を測定します。私たちが呼ぶもう一つの時計c
。実行する処理がある場合にのみ実行されます。つまり、プロセスが何かを計算したときにのみクロックが実行されます。これはCPU時間とも呼ばれます。システム上のすべてのプロセスは、それらの1つを「持っています」。
単一プロセスのプロセッサ使用率を計算できるようになりました。
またはすべてのプロセスに対して:
マルチコアマシンでは、CPUが完全に使用された場合、毎秒4秒の計算を計算できるため、これはもちろん3.9の値になる可能性があります。
ウィキペディアには次の例があります。
6 CPU UNIXマシンで実行されているソフトウェアアプリケーションは、ユーザーの要件を満たすために3つのUNIXプロセスを作成します。これら3つのプロセスはそれぞれ2つのスレッドを作成します。ソフトウェアアプリケーションの作業は、アプリケーション用に作成された6つの独立した実行スレッドに均等に分散されます。リソースの待機が関与しない場合、合計CPU時間は経過したリアルタイムの6倍になると予想されます。
これはこれを行う小さなPythonスニペットです
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
完璧な世界では、システム負荷は100-66.93 = 33,1%であると推測できます。(しかし、実際にはI / O待機、スケジューリングの非効率性などの複雑なことのために間違っているでしょう)
loadとは対照的に、これらの計算の結果は常に 0からプロセッサ数の間、つまり0から1または0から100%の値になります。100%のCPUを使用する3つのタスクを実行するマシンと、100%のタスクを実行するマシンを区別する方法は現在ありません。たとえば、多くのコンピューターで多数のプロセスのバランスをとろうとしている場合、CPU使用率はほとんど役に立ちません。負荷はそこにあるものです。
現在、実際には、これらの処理タイムクロックが複数あります。たとえば、I / Oを待つためのものがあります。したがって、I / Oリソース使用率も計算できます。
これは元の質問に関しては役に立たなかったかもしれませんが、興味深いことを願っています。:)