リアルタイム時間がユーザー時間より低い理由

リアルタイム時間がユーザー時間より低い理由

ビデオファイルを変換するスクリプトがあり、テストデータに基づいてサーバー上で実行して時間を測定しますtime。その結果、私は以下を見る:

real    2m48.326s
user    6m57.498s
sys     0m3.120s

リアルタイム時間がユーザー時間よりはるかに低いのはなぜですか?これはマルチスレッドと関係がありますか?それとも何ですか?

編集する:スクリプトが2分48秒ほど実行されたと思います。

ベストアンサー1

リアルタイムは通常、他の2つよりも大きいため、表示される出力はわずかに奇妙です。

  • Real時間は壁時計の時間です。 (ストップウォッチを使用して測定できます)
  • User時間は、プロセス内でユーザーモードで送信された時間です。
  • Sysプロセス内でカーネルが費やしたCPU時間。

したがって、タスクが複数のプロセッサによって同時に実行される場合、CPU時間は使用される壁時計時間よりも高くなります。

同時/マルチスレッド/パラレルタイプのアプリケーションですか?

たとえば、これはLinuxシステムでコマンドを実行したときに得られる結果ですtime find .。予想通り、realこのシングルユーザー/シングルコアプロセスは他のプロセスよりもはるかに長くかかります。

real    0m5.231s
user    0m0.072s
sys     0m0.088s

経験則は次のとおりです。

  • 実際の<ユーザー:プロセスはCPUにバインドされており、複数のコア/ CPUで並列実行を利用します。
  • 実際の≒ユーザー:プロセスはCPUに縛られ、並列実行を利用しません。
  • 物理>ユーザー:プロセスはI / Oバインドされています。マルチコアで実行すると利点はほとんどありません。

おすすめ記事