リアルタイムがユーザー時間よりも短くなる理由


31

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

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

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

編集:そして、スクリプトは約2分48秒実行されていたと思います


あなたの編集を再-それは完全に理にかなっています、なぜならreal時間は以下で説明するように壁時計時間であるためです(つまり、ストップウォッチがあった場合に測定するもの)
レヴォン

回答:


42

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

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

したがって、作業が複数のプロセッサによって同時に行われた場合、CPU時間は経過した壁時計時間よりも長くなると思います。

これは同時/マルチスレッド/並列タイプのアプリケーションでしたか?

例として、これはtime find .コマンドを発行したときにLinuxシステムで取得するものです。予想どおり、経過real時間は、このシングルユーザー/シングルコアプロセスのその他の時間よりもはるかに長くなります。

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

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

  • real <user:プロセスはCPUバウンドであり、複数のコア/ CPUでの並列実行を利用します。
  • real≈user:プロセスはCPUバウンドであり、並列実行を利用しません。
  • real> user:プロセスはI / Oバウンドです。複数のコアで実行しても、ほとんど利点はありません。

avconvマルチスレッドかどうかはわかりません。そうかもしれません。avconvの新世代ですffmpeg。7つの短いflvファイルを変換していました(それぞれ約20秒)。
コビレキ

リアルタイムは通常、他の2つよりも大きくなりますが、他の状況について質問します
-kobylecki

4
この説明は正しいです。このプロセスは4つのコアで実行されたようです。リアルタイム/ sys /ユーザー時間の計算方法の詳細については、ハイパースレッディングの説明も参照してください。正確には関係していませんが、概念は同じです。
バハマ

@kobyleckiのリアルタイムは、avconvが複数のコアで実行されているように見えるため、他のリアルタイムよりも小さくなります。私はそのソフトウェアもその実行方法も知らないので、100%の主張をしたくはありませんが、これは利用可能な情報(3行の時間測定と知識に基づいたものです) )
レボン

このfind例のusr値では、割り込み中にほとんどの時間が費やされているため、findマルチスレッド化されていたとしても低いままです(英語の時制をマスターしていない場合は申し訳ありません)。
エマニュエル

13

言われたことを説明するために、2つのスレッドプロセスで計算を行います。

/*a.c/*
    #include <pthread.h>
    static void  * dosomething () {
        unsigned long a,b=1;
        for (a=1000000000; a>0; a--) b*=3;
        return NULL;
    }
    main () {
        pthread_t one, two;
        pthread_create(&one,NULL, dosomething, NULL);
        pthread_create(&two,NULL, dosomething, NULL);
        pthread_join (one, NULL);
        pthread_join (two, NULL);
    }
/* end of a.c */

コンパイル

gcc a.c -lpthread

(これは説明のためだけであり、実際には-D_REENTRANTフラグを追加する必要がありました)

$ time ./a.out

real    0m7.415s
user    0m13.105s
sys     0m0.032s

(2つの遅いコアを持つIntel Atomでの時間です:))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.