Docker内でLinuxプロセスを決定論的に実行できますか?

Docker内でLinuxプロセスを決定論的に実行できますか?

いくつかのネットワークIOを実行するLinuxプログラムがあると想像してください。プログラムの実行は決定的ではありません。スレッド予約方法、オペレーティングシステムが提供する任意の値、カーネル IO 処理方法、特定のコードスニペットを実行するのにかかる時間によって、異なる結果が生成されます。 、メモリサイズはCPUキャッシュにあります。

プログラムが常にまったく同じように動作するようにdocker runを設定できますか?実行する前にランダムシードを指定し、まったく同じカーネルスケジュール、同じCPUキャッシュを持っていますか?すべての入力が正確に同時に提供されることを考慮すると。

今日は不可能かもしれませんが、この種の決定論的なタスクを実装するにはどのような制限がありますか?

ベストアンサー1

Dockerコンテナは異なる名前空間を持つプロセスにすぎず、システムの他のプロセス(特にスレッドやI / O予約)と同じように実行されます。したがって、標準プロセスを実行できない場合は、Dockerコンテナでも実行できません。

おすすめ記事