東京都港区、新人OLさんからのお便りです。
こんにちは。いつも楽しくブログよんでいます。
Cufflinksというソフトウェアの、解析にかかる時間と最大メモリを調べたいのですが、簡単なコマンドはありませんか?
これからもがんばってください。
こんにちは。いつもありがとうございます。
お便りは自作自演ですが、今回は time
コマンドをご紹介します。
time コマンドは、計測したいコマンドの前につけると、コマンドの実行にかかった時間を表示してくれるコマンドです。
timeコマンド
実は同名のコマンドが二つあり、シェルによって多少異なるようですが、
bash では、
組み込みコマンドの $ time
(以下、無印time) と、
GNU版の $ /usr/bin/time
(以下、GNUtime)が使えます。
GNUtimeは、サーバによっては入っていたりいなかったりします。(インストール方法は後述)
そして、このGNUtime を使用すると、実行時間だけでなく、メモリ使用量なども調べることができます。
実行してみましょう。
$ /usr/bin/time ls R bin log src testdata 0.00user 0.00system 0:00.00elapsed 50%CPU (0avgtext+0avgdata 984maxresident)k 0inputs+0outputs (0major+312minor)pagefaults 0swaps
-p
オプションをつけると、無印time と同じ出力になります。
$ /usr/bin/time -p ls R bin log src testdata real 0.00 user 0.00 sys 0.00
-f
オプションで、時間、メモリなどを任意の形式で出力させることができます。
せっかくなので、お便りにあった、Cufflinks の解析にかかる時間と最大メモリを調べてみましょう。
下のコマンドで、-f " "
内の%M
は最大メモリ使用量(キロバイト単位)、%E
は実時間([hours:]minutes:seconds の形式)が入ります。
$ usr/bin/time -f "Memory:%M KB time:%E" cufflinks -p 4 -o result/sample -g GRCm38/genes.gtf -M GRCm38/mask.gtf data/sample_sorted.bam : > Map Properties: > Normalized Map Mass: 32990420.77 > Raw Map Mass: 32990420.77 > Fragment Length Distribution: Truncated Gaussian (default) > Default Mean: 200 > Default Std Dev: 80 [18:39:32] Assembling transcripts and estimating abundances. > Processed 187507 loci. [*************************] 100% Memory:3895128 KB time:45:54.24
メモリは約3.7GB、時間は約45分かかったようです。
他にも出力フォーマットは様々あり、
Webサイトやman
コマンド $ man /usr/bin/time
で調べることができますよ。
新人OLさんも、ぜひ使ってみてくださいね。
GNUtime のインストール
ダウンロードはこちらから https://ftp.gnu.org/gnu/time/
wget https://ftp.gnu.org/gnu/time/time-1.9.tar.gz #執筆時点で最新 tar zxvf time-1.9.tar.gz cd time-1.9
中に INSTALL というファイルがあるので、目を通しましょう。
書いてあるとおりにINSTALLしていけばOKです。
./configure make make check # 任意 make install # sudo権限が必要な場合が多い。 make installcheck # 任意 ln -s path/to/time-1.9/time ~/bin/ # 権限がない場合は、自分のわかりやすい場所に置きます。
参考
以下を参考にしました。ありがとうございました。
GNU Time - GNU Project - Free Software Foundation