我最近部署了一个带有docker的小型Haskell应用程序,使用"scratch-haskell"作为基本映像.
然后我读到了关于Unikernels和HALVM的内容.我有点困惑.
我的码头工人容器大约6MB.Unikernel(使用相同的haskell应用程序)大小与我猜的大致相同.
Unikernel直接在Xen管理程序上运行,而docker Image(或通用LXC)在普通的Linux发行版上运行,该发行版在裸机上运行.
现在,我有"选择"运行具有多个最小容器的Linux或具有多个小Unikernel的Xen机器.
但这两种解决方案的优点和缺点是什么?一个比另一个更安全吗?它们之间是否存在显着的性能差异?
我不太明白,例如HaLVM或类似技术在(OS)线程方面做了什么.
我理解在使用-threaded选项编译代码时,Haskell多线程RTS将使用OS线程重新分配现有的Haskell线程,从而避免阻止外部调用的行为.现在,当您使用HaLVM时,您可能不必进行任何外来呼叫.但是,我想知道这一切是如何混合的,以及HaLVM运行的工作线程数.是否没有其他情况下OS工作线程的缺失可能导致阻塞或其他不良行为?