Man page - time(7)

Packages contains this manual

Available languages:

en fr es pl ja ru ro

Manual

TIME

名 前
説 明
実 時 間 (real time) と プ ロ セ ス 時 間
ハ ー ド ウ ェ ア ク ロ ッ ク
ソ フ ト ウ ェ ア ク ロ ッ ク , HZ, Jiffy
System and process clocks; time namespaces
高 精 度 タ イ マ ー
紀 元
要 素 別 の 時 刻
タ イ マ ー の ス リ ー プ と 設 定
timer slack
関 連 項 目
こ の 文 書 に つ い て

名 前

time - 時 間 と タ イ マ ー の 概 要

説 明

実 時 間 (real time) と プ ロ セ ス 時 間

実 時 間 は 、 特 定 の 時 点 か ら 計 っ た 時 間 と 定 義 さ れ る 。 特 定 の 時 点 と は 、 過 去 の 標 準 的 な 時 点 (下 記 の 紀 元 (Epoch) と カ レ ン ダ 時 刻 の 説 明 を 参 照 ) や 、 プ ロ セ ス の 一 生 に お け る 何 ら か の 時 点 (例 え ば 、 開 始 時 ) で あ る ( 経 過 時 間 )。

プ ロ セ ス 時 間 は 、 プ ロ セ ス に よ っ て 使 わ れ た 総 CPU 時 間 と 定 義 さ れ る 。 多 く の 場 合 、 ユ ー ザ ー 時 間 と シ ス テ ム 時 間 に 分 け ら れ る 。 ユ ー ザ ー CPU 時 間 は 、 コ ー ド を ユ ー ザ ー モ ー ド で 実 行 す る の に 使 っ た 時 間 で あ る 。 シ ス テ ム CPU 時 間 は 、 そ の プ ロ セ ス の た め に カ ー ネ ル が シ ス テ ム モ ー ド で 実 行 す る の に 使 っ た 時 間 で あ る (例 え ば 、 シ ス テ ム コ ー ル を 実 行 す る の に 使 っ た 時 間 )。 time (1) コ マ ン ド は プ ロ グ ラ ム の 実 行 に 費 さ れ た 総 CPU 時 間 を 計 る の に 使 用 さ れ る 。 プ ロ グ ラ ム は 、 自 身 が 費 し た 総 CPU 時 間 を times (2), getrusage (2), clock (3) を 使 っ て 計 る こ と が で き る 。

ハ ー ド ウ ェ ア ク ロ ッ ク

多 く の コ ン ピ ュ ー タ が (電 池 で 駆 動 さ れ る ) ハ ー ド ウ ェ ア ク ロ ッ ク を 持 っ て い る 。 カ ー ネ ル は 起 動 時 に ソ フ ト ウ ェ ア ク ロ ッ ク を 初 期 化 す る た め に ハ ー ド ウ ェ ア ク ロ ッ ク を 読 み 込 む 。 よ り 詳 し い 情 報 は 、 rtc (4) と hwclock (8) を 参 照 す る こ と 。

ソ フ ト ウ ェ ア ク ロ ッ ク , HZ, Jiffy

タ イ ム ア ウ ト を 設 定 し た り (例 え ば select (2), sigtimedwait (2))、 CPU 時 間 を 計 測 し た り (例 え ば getrusage (2)) す る 様 々 な シ ス テ ム コ ー ル の 精 度 は ソ フ ト ウ ェ ア ク ロ ッ ク の 分 解 能 (resolution) に 制 限 さ れ る 。 ソ フ ト ウ ェ ア ク ロ ッ ク と は 、 カ ー ネ ル が 管 理 す る jiffy 単 位 で 時 間 を 計 測 す る ク ロ ッ ク の こ と で あ る 。 jiffy の 大 き さ は カ ー ネ ル 定 数 HZ の 値 で 決 定 さ れ る 。

HZ の 値 は カ ー ネ ル の バ ー ジ ョ ン と ハ ー ド ウ ェ ア プ ラ ッ ト フ ォ ー ム で 異 な る 。 i386 の 場 合 は 以 下 の 通 り で あ る : 2.4.x と そ れ よ り 前 の カ ー ネ ル で は 、 HZ は 100 で あ っ た の で 、 jiffy の 値 は 0.01 秒 に な っ て い た 。 2.6.0 以 降 で は 、 HZ は 1000 に 増 や さ れ た の で 、 jiffy の 値 は 0.001 秒 で あ る 。 カ ー ネ ル 2.6.13 以 降 で は 、 HZ の 値 は カ ー ネ ル 設 定 パ ラ メ ー タ ー に な り 、 100, 250 (デ フ ォ ル ト ), 1000 と い う 値 に で き る 。 そ れ ぞ れ jiffy の 値 は 0.01, 0.004, 0.001 秒 に な る 。 カ ー ネ ル 2.6.20 以 降 で は 、 300 も 利 用 で き る よ う に な っ て い る 。 300 は 一 般 的 な 映 像 フ レ ー ム レ ー ト の 公 倍 数 で あ る (PAL, 25HZ; NTSC, 30HZ)。

times (2) シ ス テ ム コ ー ル は 特 殊 な ケ ー ス で あ り 、 こ の シ ス テ ム コ ー ル は カ ー ネ ル 定 数 USER_HZ で 定 義 さ れ た 粒 度 で 時 間 を 報 告 す る 。 ユ ー ザ ー 空 間 の ア プ リ ケ ー シ ョ ン は sysconf(_SC_CLK_TCK) を 使 っ て こ の 定 数 の 値 を 知 る こ と が で き る 。

System and process clocks; time namespaces

The kernel supports a range of clocks that measure various kinds of elapsed and virtual (i.e., consumed CPU) time. These clocks are described in clock_gettime (2). A few of the clocks are settable using clock_settime (2). The values of certain clocks are virtualized by time namespaces; see time_namespaces (7).

高 精 度 タ イ マ ー

Linux 2.6.21 よ り 前 で は 、 タ イ マ ー や ス リ ー プ 関 連 の シ ス テ ム コ ー ル の 精 度 も jiffy の サ イ ズ に よ り 制 限 さ れ て い た 。

Linux 2.6.21 以 降 で は 、 Linux は 高 精 度 タ イ マ ー (high-resolution timers; HRTs) を サ ポ ー ト し て お り 、 CONFIG_HIGH_RES_TIMERS で 制 御 で き る 。 高 精 度 タ イ マ ー を サ ポ ー ト し て い る シ ス テ ム で は 、 タ イ マ ー と ス リ ー プ 関 連 の シ ス テ ム コ ー ル の 精 度 は も は や jiffy に 制 約 さ れ る こ と は な く 、 ハ ー ド ウ ェ ア が 許 す 限 り の 精 度 と な る (最 近 の ハ ー ド ウ ェ ア で は マ イ ク ロ 秒 単 位 の 精 度 が 一 般 的 で あ る )。 高 精 度 タ イ マ ー が サ ポ ー ト さ れ て い る か は 、 clock_getres (2) を 呼 び 出 し て 分 解 能 を 確 認 す る か 、 /proc/timer_list 内 の "resolution" エ ン ト リ ー を 参 照 す る か で 判 断 で き る 。

高 精 度 タ イ マ ー は す べ て の ハ ー ド ウ ェ ア ア ー キ テ ク チ ャ ー で サ ポ ー ト さ れ て い る 訳 で は な い (対 応 し て い る ア ー キ テ ク チ ャ ー は x86, arm, powerpc で あ る )。

紀 元

UNIX シ ス テ ム は 時 刻 を 紀 元 (1970-01-01 00:00:00 +0000 (UTC)) か ら の 秒 数 で 表 現 す る 。

A program can determine the calendar time via the clock_gettime (2) CLOCK_REALTIME clock, which returns time (in seconds and nanoseconds) that have elapsed since the Epoch; time (2) provides similar information, but only with accuracy to the nearest second. The system time can be changed using clock_settime (2).

要 素 別 の 時 刻

ラ イ ブ ラ リ 関 数 の 中 に は tm 型 の 構 造 体 を 使 う も の が あ る 。 こ の 構 造 体 は 要 素 別 の 時 刻 を 表 し 、 時 刻 の 値 を 別 々 の 要 素 (年 ・ 月 ・ 日 ・ 時 ・ 分 ・ 秒 な ど ) に 分 け て 格 納 す る 。 こ の 構 造 体 は ctime (3) に 記 述 さ れ て お り 、 カ レ ン ダ 時 刻 を 要 素 別 の 時 刻 に 変 換 す る 関 数 に つ い て も 記 述 さ れ て い る 。 要 素 別 の 時 刻 を 表 示 可 能 な 文 字 列 に 変 換 す る 関 数 に つ い て は 、 ctime (3), strftime (3), strptime (3) に 記 述 さ れ て い る 。

タ イ マ ー の ス リ ー プ と 設 定

様 々 な シ ス テ ム コ ー ル と 関 数 に よ り 、 指 定 さ れ た 一 定 の 時 間 、 プ ロ グ ラ ム は ス リ ー プ (実 行 を 停 止 ) す る こ と が 可 能 で あ る 。 nanosleep (2), clock_nanosleep (2), sleep (3) を 参 照 す る こ と 。

様 々 な シ ス テ ム コ ー ル に よ り 、 プ ロ セ ス は 将 来 の あ る 時 点 で 有 効 期 間 が 終 了 す る タ イ マ ー を 設 定 で き る 。 ま た オ プ シ ョ ン と し て 繰 り 返 し 間 隔 が 指 定 で き る も の も あ る 。 alarm (2), getitimer (2), timerfd_create (2), timer_create (2) を 参 照 す る こ と 。

timer slack

Linux 2.6.28 以 降 で は 、 ス レ ッ ド の "timer slack" 値 を 制 御 す る こ と が で き る 。 "timer slack" は 、 停 止 中 の シ ス テ ム コ ー ル が タ イ ム ア ウ ト 以 外 で wake-up さ れ る (起 こ さ れ る ) 際 に 、 カ ー ネ ル に 許 容 さ れ る 遅 延 時 間 で あ る 。 こ の 遅 延 を 認 め る こ と で 、 カ ー ネ ル は wake-up イ ベ ン ト を ま と め て 行 う こ と が で き 、 そ の 結 果 、 シ ス テ ム 全 体 の wake-up 数 を 減 ら し 、 電 力 を 節 約 す る こ と が で き る 。 詳 細 は prctl (2) の PR_SET_TIMERSLACK の 説 明 を 参 照 の こ と 。

関 連 項 目

date (1), time (1), timeout (1), adjtimex (2), alarm (2), clock_gettime (2), clock_nanosleep (2), getitimer (2), getrlimit (2), getrusage (2), gettimeofday (2), nanosleep (2), stat (2), time (2), timer_create (2), timerfd_create (2), times (2), utime (2), adjtime (3), clock (3), clock_getcpuclockid (3), ctime (3), ntp_adjtime (3), ntp_gettime (3), pthread_getcpuclockid (3), sleep (3), strftime (3), strptime (3), timeradd (3), usleep (3), rtc (4), time_namespaces (7), hwclock (8)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。