パフォーマンスの最適化

基本的な SOME/IP 変換は、AUTOSAR サービスと統合するための更新可能なソリューションを提供するように設計されました。ブローカーの主な課題は、コンパイル時に不明なメッセージと RPC 呼び出しを変換することでした。この問題を解決するために、ランタイム更新では、新しいユニットタイプが導入されるのと同様に、SDV サービスの動的な追加または更新を想定しています。

この動的変換のソリューションは、ランタイム型情報(RTTI)に基づいています。ブローカーは、インストールされているすべてのサービス バンドルから構成を使用し、その構成のデータスキームを使用してリフレクション ベースの変換を行います。

RTTI ベースの変換は柔軟性がありますが、プリコンパイルされたメソッドよりも本質的に遅くなります。負荷の高いデータパスを最適化するには、変換をバイパスする手法を使用します。

SDV では、大量のメッセージや頻繁なメッセージの消費をサポートするために、変換をバイパスして SOME/IP 形式のバイトをコンシューマ サービス バンドルに転送できます。

サービス バンドルは SOME/IP 形式のペイロードを処理します。ペイロードを使用することも、ペイロードを protobuf に変換することもできます。

変換をバイパスするには、 SOME/IP マッピング ファイルのイベントに message_translation_mode: INTERPRET_AS_BYTES を指定します。samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl の例をご覧ください。

変換方法のトレードオフ

変換方法を選択する際は、次のトレードオフを考慮してください。

  • システムとのやり取り: 他の SDV サービスは、元の形式の詳細がわからないと、SOME/IP 形式で転送されたバイトを解釈できません。たとえば、SDV テレメトリーでは、このようなメッセージの個々のフィールドを処理できません。

  • 追加の作業: SOME/IP 形式の元のペイロードを変換するには、サービス バンドルのデベロッパーによる追加の作業が必要です。

ライブラリ ジェネレータ

SDV には、SOME/IP 形式を変換するための自動ジェネレータが用意されています。このジェネレータは、リフレクションなしで直接変換できるように、利用可能なメッセージ定義とマッピングに基づいてライブラリを作成します。転送された SOME/IP バイトを使用するサービス バンドルは、生成されたライブラリを使用できます。

推奨事項: ジェネレータは、OEM がプロジェクトのパフォーマンス要件内で変換できないパフォーマンス クリティカルなイベントを特定した場合にのみ使用してください。このような場合、OEM には RTTI ベースの変換に使用される protobuf 定義と SOME/IP マッピングの両方がすでに存在している必要があります。この同じ構成をジェネレータの入力として使用できます。詳細については、core_services/tools/someip_translation_generator/ ディレクトリの README.md ファイルをご覧ください。