With their high parallelism and resource needs, many scientific applications benefit from cloud deployments. Today, scientific applications are executed on dedicated pools of VMs, resulting in resource fragmentation: users pay for underutilised resources, and providers cannot reallocate unused resources between applications. While serverless cloud computing could address these issues, its programming model is incompatible with the use of shared memory and message passing in scientific applications: serverless functions do not share memory directly on the same VM or support message passing semantics when scheduling functions dynamically. We describe Faabric, a new serverless cloud runtime that transparently distributes applications with shared memory and message passing across VMs. Faabric achieves this by scheduling computation in a fine-grained (thread/process) fashion through a new execution abstraction called Granules. To support shared memory, Granules are isolated using WebAssembly but share memory directly; to support message passing, Granules offer asynchronous point-to-point communication. Faabric schedules Granules to meet an application's parallelism needs. It also synchronises changes to Granule's shared memory, and migrates Granules to improve locality.
翻译:没有服务器的云计算可以解决这些问题,但其编程模式与在科学应用中使用共同记忆和传递信息不相容:没有服务器的功能不能直接在同一VM上共享记忆,或者支持信息传递语义,同时动态地排程功能。我们描述Faabric,这是一个无服务器的新运行时段,以透明的方式将应用程序分布在共享的记忆和信息跨VMs。Faabric通过一个精细的(笔记/进程)模式进行计算,从而实现这一点。为了支持共享记忆,Granules使用WebAsse,但直接共享记忆;为了支持信息传递,Granules提供不连续的点对点通信。Faabric安排Granules满足应用程序的平行需求。它也同步到Granule的共享记忆,并将Granules迁移到改善位置。