ビデオファイルを変換するスクリプトがあり、テストデータに基づいてサーバー上で実行して時間を測定します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バインドされています。マルチコアで実行すると利点はほとんどありません。