コマンドラインで「時間」を使用する場合の「システム時間」とは


10

私はUbuntu 14.04の標準端末でスクリプトのtime時間を計るために使用していPerlます。

私はそれがストップウォッチ時間であることを読みましreal timeた。ユーザーとして、プログラムを開始してから終了するまで実行しているプログラムを確認するのに費やしている時間。しかし、私は何が何時userかはわかりませんsystime控えめに言っても、上のmanページはあいまいです。

それがやや明確であるもののというreal時間は間の分割があるusersys、彼らが何を表しているかは明らかではありません。

私のスクリプトでは、C ++とPerlを互いに比較して違いを確認しています。実際に取得しているデータを知りたいのですが。出力例は次のとおりです。

real    0m24.198s
user    0m23.120s
sys     0m1.030s

誰かがデフォルトの時間形式がユーザーに伝えていることを詳しく説明してくれませんか?私はLinuxの初心者なので、あまり多く考えないでください。

[1]興味深いことに、C ++はreal時間に関して私のベンチマークでPerlよりもはるかに高速ですが、sysC ++は実際にsysはPerlよりも多くの時間を使用しているため、時間にはそれほど違いはありません。これが私が彼らの意味を知りたい理由です


回答:


15

ウィキペディアから:

  • ユーザー時間とシステム時間

「ユーザーCPU時間」という用語は、最初は少し誤解を招く可能性があります。明らかに、合計CPU時間は、CPUがプログラムのアクションの実行に費やした時間と、CPUがプログラムの代わりにカーネルのシステムコールの実行に費やした時間の合計です。プログラムが配列をループするとき、ユーザーのCPU時間を累積しています。逆に、プログラムがexecやforkなどのシステムコールを実行すると、システムのCPU時間を累積します。

  • リアルタイムvs CPU時間

この文脈での「リアルタイム」という用語は、ストップウォッチの使用と同様に、経過した「ウォールクロック」時間を指します。合計CPU時間(ユーザー時間+システム時間)は、その値よりも多い場合と少ない場合があります。プログラムは、ユーザーモードでもシステムモードでも、待機してまったく実行されない時間を費やす可能性があるため、合計CPU時間よりも長くなる可能性があります。プログラムは、CPU時間(ユーザーとsysの両方)がtimeコマンドによって報告される値に追加される子をフォークする可能性があるため、合計CPU時間は実時間よりも大きくなる可能性があります。


1
どうしてウィキペディアの記事を見つけられなかったのか理解できません。ありがとうございました。
Alrekr 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.