質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

5352閲覧

timeコマンドのrealがsys + userにならない

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/09/18 02:32

編集2018/09/18 03:54

質問

man timeには以下のように記載しています。

項目意味
real(tcsh にはない) 経過した実時間
userそのプロセスがユーザモードで消費した CPU 時間の合計
sysそのプロセスがカーネルモードで消費した CPU 時間の合計

ここからプロセスはユーザモード、カーネルモードのどちらかしかないのでreal = user + sysになると思いました。

しかしtimeコマンドを使用して、あるコマンドの実行時間を計測すると

real 11m29.355s user 6m31.730s sys 0m10.745s

real - (user + sys)が5分弱あります。
この5分はいったい何なのでしょうか?
ユーザモード、カーネルモードのどちらでもないモードが存在しているのでしょうか?


追記

timeコマンドのソースコードを読んで、計測はsys/times.hに定義されているtimesで行われていることが分かったので、Cのタグを追加。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

回答ではない・・・ですが

tcsh

1usr~ % \time -p soe 100000000 ←timeコマンド 2Time:1.153672 3 4*** prime count: 5761455 *** 5real 1.31 6user 1.23 7sys 0.07 8usr~ % time soe 100000000  ←tcsh timeコマンド 9Time:1.150063 10 11*** prime count: 5761455 *** 121.248u 0.059s 0:01.30 99.2% 0+0k 0+0io 0pf+0w 13usr~ % 14

timeを''でエスケープするとtcshの内部コマンドではなく本来のtimeコマンドが実行されます。

投稿2018/09/18 12:02

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/19 01:19

timeコマンドと言っても色々な種類があるのですね、初めて知りました。 私の環境(CentOS Linux release 7.3.1611)ではtimeコマンドは/usr/bin/timeでGNU timeだったので、 エスケープしても同じコマンドが実行されたようです。 勉強になりました。
guest

0

差は、CPUを割り当てられていない時間です。
イベント待ち(IO完了待ち、キーイン待ち、タイマー待ち、等)か、CPUが足りなくてCPU待ちの場合。

投稿2018/09/18 04:00

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/19 01:15

> イベント待ち(IO完了待ち、キーイン待ち、タイマー待ち、等)か、CPUが足りなくてCPU待ちの場合 具体的にどのような場合に割り当てられないかを教えていただきありがとうございます。 IOがかなり重たいプログラムなので納得しました。
guest

0

ベストアンサー

「消費した時間」なのではなくて、「消費した CPUの時間」なんですよ。
IO待ち中やsleep中はCPUを使っていないので、sysやuserに含まれません。

投稿2018/09/18 03:57

taka-saan

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/19 01:14

なるほど、確かに"経過した実時間"と"消費したCPU 時間"とmanにも書いていますね。ご回答ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/09/19 01:20

皆様のご回答どれも参考になりました。どれもベストアンサーにしたかったのですが、最初に回答いただいたtaka-saan様の回答をベストアンサーにさせていただきます。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問