私はc++でアプリケーションを開発しています。アプリケーションのコンポーネントの 1 つは、データ処理に (Matlab エンジンを介して) Matlab を使用します。同時に、データ取得システムがデータをディスクにストリーミングしています。ときどき、集中的な Matlab 処理の期間中に、取得システムがクラッシュします。Matlab のプロセッサ アフィニティを使用可能なプロセッサのサブセットに設定することで、この問題は解決されます。ただし、アプリケーションは 1 日に数回、複数のマシンで起動されるため、毎回アフィニティを手動で設定するのは不便です。エンジンはショートカット経由ではなくアプリケーション内から起動されるため、ショートカットのコマンドライン経由でプロセッサ アフィニティを設定するトリックは機能しません。プログラムでアフィニティを設定する方法を探していましたが、成功は限られていました。
私は次のオプションを検討しました(優先順にランク付けされています):
- エンジンの起動時に、アプリケーション内から matlab エンジンのプロセッサ アフィニティを指定します。
- 完全な Matlab アプリケーション自体とは別に、matlab エンジンの既定のプロセッサ アフィニティを指定します。
- 最後の手段として、Matlab の既定のアフィニティを設定します (エンジンと非エンジンの両方の使用)。Matlab は展開マシンで他の目的に使用されるため、これは最も望ましくありません。他の用途に制限しないことが望ましいでしょう。
アプリケーション内からプロセッサ アフィニティを設定することは可能ですか。そうでない場合、この問題に取り組む正しい方法は何ですか? これらのオプションに関するアドバイス、またはその他の提案/解決策は大歓迎です。