关键词:
虚拟化
库操作系统
云计算
无服务
操作系统
硬件辅助
摘要:
无服务计算,又被称为“函数即服务”,是云计算领域正兴起的一个事件驱动服务模型。在无服务模型中,应用由被单独执行和管理的函数组成,由用户请求触发并动态执行。目前,云服务提供商普遍采用容器或虚拟机来执行这些函数,在无服务模型中的函数通常执行时间很短(毫秒级)的情况下,容器和虚拟机的启动用时给响应用户请求带来了较高的延迟。同时,不同函数间的通信基本上依靠网络设备和共享内存完成,导致了很高的性能开销。研究发现,库的启动影响较大且产生大量重复,而且新兴技术Unikernel适用于无服务环境,因此将Unikernel作为函数提供服务(Uaa F),作为可被共享的库函数,从而降低应用的响应延迟和减少内存重复占用。首先,在此方法中,应用表现为不同的函数组合的形式,应用的请求及功能函数被分隔在不同的函数中并分别运行在单独的Unikernel——根据函数定制的最小化库操作系统中,保证了响应函数极低的启动延迟。其次,提供了一个更高效的通信模型来加速同一服务器上的不同函数间的交互。借助现存的硬件技术(VMFUNC指令),调用其它基于Unikernel的虚拟机中的函数并访问其中的数据,从而在不同虚拟机间无缝切换,类似于进程间通信。最后,部署了不同Unikernel间的函数调用的内存分配和协调机制,提供库函数的Unikernel可为多个请求提供服务,避免了不断重复的初始化。相比于普遍的无服务云计算模型,Uaa F的响应延迟不受库函数初始化的影响,不产生空闲缓存,能更有效地处理大量重复请求。对于客户机,Uaa F不引入复杂的开发,可以支持各种Unikernel,推广其在云计算领域的利用。本方法的概念原型实现基于KVM,其上可部署四种Unikernel(Mirage OS,Solo5,Include OS和OSv)。实验结果表明,Uaa F可以显著地减少无服务云计算应用的启动延迟和内存占用。并且,所采用的基于VMFUNC的通信模型确保了不同的Unikernels之间可以高效地调用。