ゼロコピーで瞬時にプロセス間の大規模データ通信を可能にする「Eclipse iceoryx」ミドルウェア、Eclipse Foundationが公開
Eclipse Foundationは、データをコピーすることなく瞬時にプロセス間でデータ通信を可能にするミドルウェア「Eclipse iceoryx」を公開しました。
The first major release of Eclipse #iceoryx allows for true zero-copy inter-process-communication on Linux, QNX and MacOS and provides C and modern C++ user APIs. Visit the release page to learn more: https://t.co/pvRYWIjcco #opensource #automotive pic.twitter.com/dOB61PFR4G
— Eclipse Foundation (@EclipseFdn) July 2, 2021
一般に、あるプロセスと別のプロセスが通信を行う場合、何らかのAPIやプロトコルを通じてプロセス間でデータが渡されます。このときデータを受け取った側のプロセスは、自身のメモリ空間にデータのコピーを書き込むことになります。
受け取るデータが少量であればコピーは一瞬で終わりますが、大量のデータを受け取る場合、コピーには時間がかかるでしょう。
例えば、自動車の自動運転システムのような、リアルタイムに大量の動画データを分析し、判断するようなシステムでは、カメラや画像センサーからの画像を取得するプロセスと、その画像データを受け取って分析するプロセスのあいだにはつねに膨大なデータの受け渡しが発生します。
しかもこれをできるだけ遅延なく、高速に受け渡す必要があるわけです。
Eclipse iceoryxは、こうした大規模データをプロセス間で高速に受け渡すことを目的とした可能なミドルウェアです。
データを渡すプロセスを「Publisher」、データを受け取るプロセスを「Subscriber」とすると、PublisherはEclipse iceoryxから要求されたメモリ空間にデータを直接書き込みます。データが書き込まれたら、SubscriberはEclipse iceoryxからAPIを通じてポインタを受け取り、ポインタが示すメモリのデータを参照することでデータを受け取ることができます。
このようにデータをコピーすることなく瞬時に受け渡しできることがEclipse iceoryxの大きな特徴です。
対応するOSはLinux、QNX、macOS。対応するプログラミング言語はCとC++。今後Windows、Rustに対応する予定。
データの受け渡しのタイミングとしてはポーリングとイベントドリブンに対応。
Eclipse iceoryxのソースコードはGitHubで公開されています。
あわせて読みたい
[速報]マイクロソフト「Windows 365 Cloud PC」正式発表。Windowsをクラウドサービスとして月額定額料金で提供、デスクトップ仮想化をベースに
≪前の記事
「今日もシステムが落ちなかった、ありがとう」なんて言われたことのない運用者に光を! クラウド運用に焦点を当てたテックイベント、Cloud Operator Days Tokyo[PR]