コマンドラインで「時間」を使用するときの「システム時間」とは何ですか?

コマンドラインで「時間」を使用するときの「システム時間」とは何ですか?

私はUbuntu 14.04の標準端末でスクリプトのタイミングを調整することに慣れていますtimePerl

私は持っています読むそれはreal timeストップウォッチの時間です。私は、ユーザーとしてプログラムが開始されてからプログラムが終了するまで実行される時間を見ています。しかし、私は何userをいつ理解していませんsystimeマンページはいくら言ってもあいまいです。

real時代は互いに異なりますが、userそれが何sysを表すのかは明確ではありません。

私のスクリプトでは、違いを確認するためにC ++とPerl [1]をベンチマークしており、実際にどのデータを取得しているのかを知りたいと思います。出力例は次のとおりです。

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

デフォルトの時間形式がユーザーに何を伝えるかを詳しく説明できますか?私はLinuxに初めて触れたので、あまりにも多くの仮定をしないでください。

real[1]興味深いことに、私のベンチマークでは、C ++は時間の点でPerlよりはるかに高速ですが、時間差は大きくなく、sysC ++は実際にsysPerlよりも多くの時間を使用しています。だから私は彼らが何を意味するのか知りたいです。

ベストアンサー1

~からウィキペディア:

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

「ユーザーCPU時間」という用語は、最初は少し誤解を招く可能性があります。明確に言えば、総CPU時間は、CPUがプログラムのために何かを実行するのに費やした時間と、CPUがプログラムに代わってカーネルへのシステムコールを実行するのに費やした時間の組み合わせです。プログラムが配列を繰り返しながら、ユーザーのCPU時間が累積されます。一方、プログラムがexecやforkなどのシステムコールを実行すると、システムCPU時間が累積されます。

  • リアルタイム対CPU時間

この記事では、「リアルタイム」という用語は、ストップウォッチを使用するのと同様に、経過した「ウォールクロック」時間を意味します。合計CPU時間(ユーザー時間+システム時間)は、この値より大きくても短くてもかまいません。プログラムが待機するのに時間がかかり、まったく実行されない可能性があるため(ユーザーモードまたはシステムモードの場合)、実際の時間は合計CPU時間より長くなる可能性があります。プログラムは、CPU時間(ユーザーとシステム)がtimeコマンドによって報告された値に追加される子プロセスを生成できるため、CPU時間の合計が実際の時間よりも長くなる可能性があります。

おすすめ記事