2019年11月14日木曜日

[コマンド] timeコマンドで解析時間を記録

mappingやassemble、basecallingなどの解析を行う際に、これまでは解析時間を結構適当に把握していた。ちょっと時間かかったねとか、何日か(?)過ぎたとか。ハードウェアの増強等も随時行っており、アバウトすぎる実行時間把握は費用対効果等を見積もる際にも良くないなと思うようになった。実行時間を計測するためにはtimeコマンドが使える。しょっちゅう調べた上で忘れるので記録しておく。

[ time ] コマンド:コマンドの実行時間と実行時のシステムリソース情報を計測する
https://www.atmarkit.co.jp/ait/articles/1810/25/news022.html


以下は、macOSに入っているtimeのmanualを出力したもの。
  
NAME
     time -- time command execution

SYNOPSIS
     time [-lp] utility

DESCRIPTION
     The time utility executes and times utility.  After the utility finishes, time
     writes the total time elapsed, the time consumed by system overhead, and the time
     used to execute utility to the standard error stream.  Times are reported in sec-
     onds.

     Available options:

     -l      The contents of the rusage structure are printed.

     -p      The output is formatted as specified by IEEE Std 1003.2-1992
             (``POSIX.2'').

     Some shells may provide a builtin time command which is similar or identical to
     this utility.  Consult the builtin(1) manual page.

DIAGNOSTICS
     The time utility shall exit with one of the following values:

     1-125   An error occurred in the time utility.

     126     The utility was found but could not be invoked.

     127     The utility could not be found.

     Otherwise, the exit status of time shall be that of utility.

SEE ALSO
     builtin(1), csh(1), getrusage(2)

FILES
     /usr/include/sys/resource.h

STANDARDS
     The time utility conforms to IEEE Std 1003.2-1992 (``POSIX.2'').

BUGS
     The granularity of seconds on microprocessors is crude and can result in times
     being reported for CPU usage which are too large by a second.



出力
real 0m0.011s
user 0m0.006s

sys 0m0.004s

real: コマンドの実行開始から終了までにかかった実時間
user: プログラム自体の処理にかかったCPU時間
sys: コマンドを実行するのに使用したカーネル処理にかかったCPU時間

CPU時間というのを知らなかったので調べたが、個々のプログラムやプロセスを処理するのにCPUを占有して使った時間のことを言うようだ。実際にプログラムがスタートしてから終了するまでには、データの読み込みや結果の書き出しがあるわけなので、経過時間の方が長くなるようだ。また、マルチコアの場合は、複数のコアやスレッドのCPU時間が合計されるようだ。