工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> モノのインターネットテクノロジー

Linux perfで分散アプリケーションをプロファイリング:実践ガイド

成熟したアプリケーションを最適化するのは、干し草の山から針を探すようなものです。真のパフォーマンス・ボトルネックを特定する最善の方法は、直感ではなくデータに意思決定を任せることです。実際、最も時間を消費するコードは、往々にして最も明らかでないものです。

コードが遅いと疑ったとき、まず証拠を確認してから修正します。

プロファイリングは、その直感を測定可能な事実に変えます。市場には数十のプロファイラがありますが、マルチスレッドや分散システムに適したツールを選ぶのは困難です。Callgrindのような従来の命令カウント・プロファイラは、特に激しいミューテックス競合下では、ウォールクロック時間ではなく命令数を測定するため、タイミングを歪める可能性があります。

一方、統計的プロファイラは、低オーバーヘッドで実行中のプログラムをサンプリングするため、複雑な並行ワークロードに最適です。Linuxのperfは、このアプローチの代表的な例です。

以下は、perfとBrendan GreggのFlameGraphを組み合わせて、分散アプリケーションのホットスポットを特定するステップ・バイ・ステップのワークフローです。例は、RTI Connext 5.3.0のc/hello_dynamicサンプルを対象とします。

1. perfをインストール
Ubuntuでは:

sudo apt-get install linux-tools-common linux-tools-3.13.0-107-generic

2. FlameGraphをクローン
リポジトリを便利な場所(例:ホーム・ディレクトリ)にクローン:

git clone https://github.com/brendangregg/FlameGraph

3. サンプルをビルド
rti_workspace/examples/cに移動し、デバッグ・シンボル付きでコンパイル:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2
プラットフォームに合うmakefile名に置き換えてください。

4. パブリッシャをプロファイリングしながら実行
サブスクライバをバックグラウンドで起動し、perfを起動:

objs/x64Linux3gcc4.8.2/Hello sub & sudo perf record -g objs/x64Linux3gcc4.8.2/Hello pub
短いテスト期間後、Ctrl+Cでパブリッシャを停止。perfがperf.outを生成します。

5. FlameGraph用にデータを変換
perf出力を折りたたみスタック・ファイルに変換:

perf script -f | ~/FlameGraph/stackcollapse-perf.pl > out.perf-folded
炎グラフを生成:
~/FlameGraph/flamegraph.pl out.perf-folded > perf.svg

6. 結果を検査
Webブラウザでperf.svgを開きます。横軸は各関数で費やされた時間を示し、積み上げ棒はコール・スタックを表します。棒をクリックするとそのスタックにズームインします。サブスクライバなしでパブリッシャを実行すると、グラフの右側部分が消え、DDSがサブスクライバ存在時のみデータを送信することを確認できます。

perfには他にも多くのオプションがあります - サンプリング周波数の調整、カーネル・コードの除外、特定CPUへのフォーカスなど。ヒントや補完的なツールを発見したら、コメントで共有してください。

ハッピー・プロファイリング!

モノのインターネットテクノロジー

  1. 医療におけるAI:実証済みの実用的な5つの活用事例と具体例
  2. CNC木工ルーター:高品質家具などへの多用途・高精度対応
  3. Microchip、スケーラブルな宇宙ミッション向けArmベースMCUを発表 - COTSから耐放射線強化まで
  4. 誘導型近接センサー:回路設計、機能、実用応用
  5. アナログセンサーとデジタルセンサー:種類、応用、実例
  6. EthereumとGoogle Cloudで構築するハイブリッドブロックチェーン・クラウドアプリケーション
  7. React NativeとAWSで構築するスケーラブルなサーバーレスモバイルアプリ
  8. ZigBeeメッシュが不足する4つのアプリケーション:スター型トポロジーがより適するケース
  9. ローコードプラットフォームでITボトルネックを解消:デジタルトランスフォーメーションをシンプルに
  10. Ovo Energy、VChargeスマートグリッド買収で分散型エネルギー戦略を強化
  11. モリブデンは他元素と合金化できるか? 合金化と高温利用の専門的知見