正しいプロファイリング技法

356 Views

April 25, 24

スライド概要

profile-image

儚いエンジニア、どこかふらふらと出現します

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

正しいプロファイリング技法 2024/04/25

2.

自己紹介 ■ 名前 saitos (さいとー) ■ 所属 某 Fin-Tech . バックエンドエンジニア (24年新卒入社) ■ ひとこと 最近、DBMSにはまってます、、

3.

推測するな、計測せよ Rob Pike Notes on Programming in C

4.

なぜプロファイリングするのか? ・ コラボレーション 異なる領域の理解を促進し、効率的な開発と運用を実現 ・ エラーバジェット 可用な数値をベースにした損失可能な信頼性 ・ 共通認識の共有 客観的かつ合理的な指標を持つ SLI/SLO、DevOpsへ ...

5.

プロファイリングに必要なもの 1.ボトルネックの見極め 2.診断トリガの検討 3.診断データの解釈

6.

プロファイリングに必要なもの 1. ボトルネックの見極め ・ 原因を考察 ・ 原因箇所の粒度を高めながら絞り込む [スループットの要因] ・CPUやメモリ使用率 ・ I/O Waite ・キャッシュ ・ネットワーク ・ハードウェアの問題 ・ リソースの設定ミス ・ アクセスの殺到 ・ LBやラウンドロビンの機能不全 ・ DB ・再起動 など ...

7.

プロファイリングに必要なもの 2.信頼できるリアルタイムのトリガ ・ 正しいトリガ ・ 適切なしきい値の設定 何も起こらないところを計測しても診断データが無駄になる 誤補足やスパイクの見逃しに注意する

8.

プロファイリングに必要なもの 3.診断データの解釈 ・ 外れ値や不確実性の排除 ・ 埋もれている詳細 ・ クエリレポートの作成 計測値には不確実性がある 各特性を理解する プロファイリングツールを活用する

9.

プロファイリングの注意点 1. 診断結果のケーススタディを考える 2. 可視化する

10.

プロファイリングの注意点 1.診断結果のケーススタディを考える ・ 何がボトルネックで問題解決のために何をしたか ドキュメントに残す ・ それが問題であるかどうかを証明する計測に時間を割く 間違った問題を追いかけ、時間とリソースを無駄にしない 自分の根拠のない考えから判断していないか → 原因と結果の区別は難しい

11.

プロファイリングの注意点 2.可視化する これだけだと、 どこにボトルネックが あるかわからない

12.

プロファイリングの注意点 2.可視化する ・ グラフ化 ・ 標準偏差や平均などの統計手法を用いる 分析しきれないほど大量のデータを絞り込む 重要な情報のみを抽出する

13.

プロファイリングを目標値にすることの危険性 ・ SLO値の形骸化 ユーザ中心の指標から逸脱 ・ アムダールの法則 全体の処理の5%を最適化したところで、貢献度は5%でしかない ・ グッドハートの法則 目標値に恣意が介入し、適切な測定を歪めてしまう ・ 監視のオーバヘッド ボトルネックを捕捉するとは限らない

14.

プロファイリングのまとめ ・ 本来のプロファイリング目的から逸脱しない ・ 不確実性があることを常に意識する ・ 監視対象の特性を理解する プロファイリングコストを超えるメリット パフォーマンスと取り巻く環境変化を見分けられる!

15.

おわり