はじめに
過去対向システムが既存機能を使いたい希望があり、
ピーク時間帯の応答時間(TAT)の99.0パーセントタイル値を取得する依頼がありました。
「なんだ?99.0パーセントタイルって」という状態だったので、ググって参考にしたのは以下のページでした。
@atsutama さんの投稿
99.0パーセントタイルってどういう意味?
awkコマンドで取得
もちろん色んな方法があると思いますが、よっぽど叩かれている機能だったし、
ピークごと機能ごと定期的に取得しているわけではなかったので、
ログから取得せざるを得ませんでした。
色々調べたところ、既存ツールがあったので
そこからコマンドを少しずつ抜粋したり応用してできました。
まず、機能と期間に絞るログ整形はした上で、以下のような形でファイルで出力しました。
※時間帯は全部同じ(ピーク時間帯の1時間)
#分、秒、応答時間ms
00 00 1000
00 00 2000
00 00 1500
00 01 800
その上、以下コマンドを実行すると
ちょうど応答時間msが99.0パーセントタイル値で出力されました。
cat ファイル名 | sort -n | awk 'BEGIN{c=0} length($0){a[c]=$0;c++]END{pt=(c/100*(100-99)); pt=pt%1?int(pt-0.5)+1:pt; print a[c-pt-1]}'
検証方法
一番簡単なのは、100行くらいデータを作成して、
excelとかに貼り付けて取得した99.0パーセントタイル値が同じであるかを
コマンド結果と比較することで簡単にいけました。