是否有可能在 docker 内确定性地运行 linux 进程?

是否有可能在 docker 内确定性地运行 linux 进程?

想象一下我有一个执行一些网络 IO 的 Linux 程序。程序的执行不是确定性的:它会产生不同的结果,具体取决于线程的调度方式、操作系统提供的随机值、内核 IO 的处理方式、执行这段或那段代码需要多长时间、内存大小位于CPU缓存中。

是否可以以这样的方式配置 docker run,使程序始终具有完全相同的行为?只需在运行前指定一些随机种子并具有完全相同的内核调度、完全相同的 CPU 缓存?鉴于所有输入都是在同一时间精确提供的。

今天可能不可能,但是实施这种确定性运行有哪些限制?

答案1

docker 容器只是一个具有不同命名空间的进程,它在系统中的运行与其他进程完全相同(特别是其线程和 I/O 调度)。因此,如果您无法执行标准流程,则您无法在 Docker 容器中执行该流程。

相关内容