タグ

dtraceに関するiga_kのブックマーク (6)

  • RubyKaigi 後日譚: GC のレイテンシを可視化する人の補足 - ローファイ日記

    RubyKaigiでお話ししてきました。BPFのObservability関連の機能を紹介しながら実際にサンプルをRubyで書いていくみたいな流れでした。以下に資料を。 docs.google.com 一番見せたかった「RubyのGC関係USDTを用いてレイテンシを可視化する」というツールのデモが...流せなかったので*1、心残りを洗い流すべく補足記事を書きます。 USDT? Rubyを特定のオプション --enable-dtrace でconfigureしてビルドすると、USDTと呼ばれる情報がRubyのバイナリに付与されます。この情報を使うとRubyの生きているプログラムに対して、さまざまな細かい情報を取得できるようになります。例えば以下のタイミングでイベントがフックされます。 オブジェクト一般、シンボル、文字列、配列、ハッシュの作成 C定義のメソッドの呼び出し、リターン GCの開

    RubyKaigi 後日譚: GC のレイテンシを可視化する人の補足 - ローファイ日記
    iga_k
    iga_k 2022/09/13
    udzuraさんのRbBCC 講演資料+後日談。dtraceなことをLinuxでつかえるのがBCC。
  • DTrace をためしてみました - kiwamu日記

    Rails 実行時の CPU 使用率がけっこう高いので、DTrace でなにかわからないものかと使ってみました。 以下のような環境のもとで、ここのサンプルをちょっと改良して、Apache Bench (以下、ab) で負荷をかけている Rails アプリをトレースしてみました。関数呼び出しごとの回数、平均処理時間、合計処理時間なんかをみています。GC にかかった CPU 時間なんかもトレースできるので、DTrace、面白いですね。 DTrace は軽いはずなんですが、関数呼び出しをすべてひろって集計とかをゴリゴリしているので、さすがにトレースの負荷が高かったです。 (^^; # アプリの監視という意味では、もっと粗粒度のもの、リクエストごととか、データベース問い合わせごとでみるはずなので、そのくらいであればオーバヘッドはほとんど無視できるのでしょう。 ちなみに、DTrace のスレッドロー

    DTrace をためしてみました - kiwamu日記
  • DTraceProbes - Ruby - Ruby Issue Tracking System

    = DTrace Probes A list of DTrace probes and their functionality. "Module" and "Function" cannot be defined in user defined probes (known as USDT), so they will not be specified. Probe definitions are in the format of: provider:module:function:name(arguments) Since module and function cannot be specified, they will be blank. An example probe definition for Ruby would then be: ruby:::function-entry(

    iga_k
    iga_k 2019/05/03
    Rubyでのdtraceのprobe集
  • Preface - Dynamic Tracing Guide

    Preface DTrace is a comprehensive dynamic tracing framework for the illumos™ Operating System. DTrace provides a powerful infrastructure to permit administrators, developers, and service personnel to concisely answer arbitrary questions about the behavior of the operating system and user programs. The illumos Dynamic Tracing Guide describes how to use DTrace to observe, debug, and tune system beha

    iga_k
    iga_k 2019/05/03
    dtrace入門書。PDFもあった。
  • バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 18 日目です。 ユビレジではたくさんのお客様の大量の POS データをお預かりしており、様々なバッチ処理も実行されています。今回は特定のケースでバッチ処理の一部が 30 分以上かかっていた処理を 14 秒で終わるようにした話について書きたいと思います。前回の Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記 に引き続き DTrace を使った話になります。 はじめに ユビレジでは CSV ファイルでお客様が特定のデータをダウンロードしたりアップロードできる機能があります。CSV ファイルにエクスポートしたり、CSV ファイルから DB に取り込む処理を Worker を起動してバッチ処理しています。 大量のデータを保有しているアカウントと同量のデータを用意して手元の環境で試したところ時間がかかるこ

    バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記
  • Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 5 日目です。 同僚が「Ruby 2.5 が SEGV するんだけど」というので調べて見たときの話です。結論から言うと Ruby 2.6 では直っています。 クラッシュログ 同僚の変更内容を手元の macOS で動かすと確かに SEGV して以下の様なクラッシュログが出力されていました。 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGABRT) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY VM Regions Near 0: --> __TEXT 000

    Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記
    iga_k
    iga_k 2018/12/20
    神記事だこれは・・・。めっちゃ勉強になる。dtraceをスッと出してきて使えるようになりたい。
  • 1