Popcorn 正在为 Linux 内核开发一个分布式线程执行系统。

弗吉尼亚理工大学 предложил 供 Linux 内核开发人员讨论的一组实现分布式线程执行系统的补丁 爆米花 (分布式线程执行),它允许您通过主机之间线程的分布和透明迁移来组织应用程序在多台计算机上的执行。 使用 Popcorn,应用程序可以在一台主机上启动,然后不间断地转移到另一台主机。 在多线程程序中,允许将单个线程迁移到其他主机。

与项目不同 抢救通过允许保存进程状态并在另一个系统上恢复执行,Popcorn 在应用程序执行期间提供主机之间的无缝动态迁移,无需用户操作并确保运行并发线程的所有主机之间的虚拟内存一致性。

爆米花软件堆栈形式 补丁 Linux 内核和 библиотека 测试演示了如何使用 Popcorn 系统调用来迁移分布式应用程序中的线程。 在内核级别,通过分布式共享内存的实现提出了对虚拟内存子系统的扩展,它允许不同主机上的进程访问公共且一致的虚拟地址空间。 虚拟内存页面一致性由协议确保,该协议在读取内存页面时将其复制到主机,并在写入时使内存页面无效。

主机之间的交互是使用内核级处理程序来执行的,该处理程序通过 TCP 套接字传输消息。 值得注意的是,TCP/IP用于简化开发过程中的调试和测试。 开发人员明白,从安全和性能的角度来看,TCP/IP 并不是在主机之间传输内核结构和内存页面内容的最佳方式。 所有运行分布式应用程序的主机必须具有相同的信任级别。 主要算法稳定后,将使用更高效的运输方式。

Popcorn 自 2014 年以来一直作为一个研究项目进行开发,旨在研究创建分布式应用程序的可能性,其线程可以在不同节点上执行 异质 可以组合基于不同指令集架构(Xeon/Xeon-Phi、ARM/x86、CPU/GPU/FPGA)的内核的计算系统。 向Linux内核开发人员提出的这组补丁仅支持在具有x86 CPU的主机上执行,但Popcorn Linux还有功能更多的版本,它允许应用程序在具有不同CPU架构(x86和ARM)的主机上运行。 要在异构环境中使用 Popcorn,必须使用特殊的 编译器 基于LLVM。 当在具有相同架构的主机上分布式运行时,不需要使用单独的编译器进行重建。

Popcorn 正在为 Linux 内核开发一个分布式线程执行系统。

此外,还可以注意到 公告 有点类似的项目 电叉 实现初始原型 API,用于在集群中的其他计算机上启动子进程(如 fork(),但将分叉进程传输到另一台计算机)。
该代码是用 Rust 编写的,到目前为止只允许克隆不使用文件等系统资源的非常简单的进程。 当进行 telefork 调用时,内存和进程相关的结构将被克隆到运行服务器处理程序(telepad)的另一台主机。 使用 ptrace,进程的内存反射被序列化,并与进程和寄存器的状态一起传输到另一个主机。 该 API 还允许您将进程状态保存到文件中并通过它恢复它。

来源: opennet.ru

添加评论