タグ

ブックマーク / yohei-a.hatenablog.jp (4)

  • よく使う strace のオプション - ablog

    Linuxstrace を使ってシステムコールのトレースを調べる時によく使うオプションをメモ。 特にお気に入りのオプションは -T、-c、-ff & -o です。 書式 システムコールを詳細に追う tt: 行頭にタイムスタンプを出力(マイクロ秒) T: 行末にシステムコール内での所要時間を出力(マイクロ秒) ff: 子プロセスのシステムコールもトレースし、-o との併用でプロセス(スレッド)毎に別ファイルに出力 o: 指定したファイル名に出力。-ff と併用すると、ファイル名. に出力 s: 出力文字数を指定。デフォルト32文字。read/write システムコールなどで読み書きした内容を全て確認したい場合は、大きくする。 p: プロセスIDを指定。 $ strace -Ttt -ff -s 1500000 -o <ログ出力先ファイル名> -p <PID> もしくは $ strace

    よく使う strace のオプション - ablog
    Jxck
    Jxck 2016/06/13
  • perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog

    Linuxでddで1GBのファイルを作成し perf でプロファイリングし、Flame Graph (炎のグラフ?)にして可視化したものです。 Flame Graphs は perf(Linux)、SystemTap(Linux)、DTrace(Solaris、Oracle Linux(UEK)、Mac OS X、FreeBSD)、XPerf.exe(Windows) などでのプロファイリング結果を可視化して最も使われているコードパスを早く正確に特定することができます。実体はプロファイリング結果をグラフ(SVG)に変換する Perl スクリプトです。 下から上に行くほどコールスタックが深く、左から関数名のアルファベット順でソートされています。一番上で横幅が広い関数がCPUを長く使っています。今回は "_aesni_enc1" つまり暗号化がボトルネックになっていることがわかります。 システ

    perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog
  • strace でシステムコールの所要時間を調べる - ablog

    システムコールの所要時間は strace の -T オプションで調べることができる。 上はEXCELでピボットテーブルを使ってグラフ化したもの I/Oレスポンス(read システムコールの所要時間)は5〜15ミリ秒であることがわかる 例 strace でシステムコールのトレースを取得する $ strace -ttT -o strace-T_fs_`date +'%Y%m%d%H%M%S'`.log dd if=OVMRepo.vmdk of=/dev/null iflag=direct bs=1M count=1000 -T: システムコールの所要時間(秒.マイクロ秒)を出力 ※マイクロ秒=1/1,000,000秒 -tt: タイムスタンプをマイクロ秒で出力 -o: トレースを指定したファイルに出力 出力結果 $ less strace-T_fs_20150111143101.log [.

    strace でシステムコールの所要時間を調べる - ablog
    Jxck
    Jxck 2015/01/13
  • sysのCPU使用率が高い場合にその内訳を調べる方法 - ablog

    OSレベルで sys のCPU使用率が高い場合に perf*1 を使って、何の処理の割合が高いか調べる方法です。 perf は 特定のプロセスだけでなくOS全体の統計を見れる カーネル(sys)とユーザー(user)の両方を見れる ところが非常に便利だと思う*2。 準備 ひたすら write システムコールを発行し続けるプログラムを作成する $ cat write_loop.c #include <unistd.h> int main(void) { while(1) { write(1, "foo\n", 4); } } コンパイルする $ gcc write_loop.c -o write_loop 実行権限を付与する $ chmod u+x write_loop 検証 ひたすらwriteシステムコールを発行するプログラムを実行する $ ./write_loop > /dev/null

    sysのCPU使用率が高い場合にその内訳を調べる方法 - ablog
  • 1