Linux で実行する一連のリアルタイムの金融取引プログラムがあります。コードは C++ で記述されており、データベース集約型 (MySQL) です。重要な場所でメモリ テーブルを使用しようとしました。私は常にレイテンシーに気を配っていますが、1 日の特定の時間帯では生のスループットだけがボトルネックになります。
このシステムを適切にプロファイリングするにはどうすればよいですか? (a) アプリケーション コードの実行、つまりアプリ コードの CPU バウンド、(b) MySQL での実行、または (c) ネットワーク関連の呼び出しなどの OS システム コールでの実行に費やされた時間の割合を確認できるようにしたいと考えています。 . また、少なくともデータベースについては、ディスクでの待機に費やされた時間を確認したいと思います。
また、レイテンシーのプロファイリングと最適化は、スループットのプロファイリングと最適化とは大きく異なることも認識しています。スループットを最適化するには、上記を測定できる従来のプロファイラーが適切だと思います。レイテンシを最適化するには、マイクロ秒単位の正確なタイム スタンプをログに記録するだけで十分だと思いますが、異常値が表示されたときに、すべての時間が費やされた場所を特定することは依然として困難です。
私はこれについて正しい方法で考えていますか?私を助けるかもしれないツールは何ですか?