论文部分内容阅读
容器技术作为虚拟机的一种轻量级替代方案,在保证容器之间资源隔离的同时,其处理能力、内存和网络吞吐率都接近物理机原始性能。作为容器的应用引擎,Docker能够高效部署、执行和管理容器。然而现有的Docker资源管理机制较为简单,无法针对容器中运行应用特征和资源需求,进行应用感知的动态资源分配,以在保证应用服务质量的前提下,最大化系统整体利用率。针对以上问题,首先在Docker环境下运行标准压力测试程序,分析容器的实际资源分配情况。然后针对四种典型场景,即CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型、CPU密集型/实时型,分别选取了对应的应用,并比较分析每种应用在Docker环境下单独执行和多个并发运行时的资源使用及性能情况。基于上述实验分析,设计了容器静态调度算法和基于运行时监控的容器动态调度算法。静态调度算法,主要针对运行多个同种应用容器,根据应用特点和服务质量协议要求,最大化节点上容器实例数量。动态调度算法,面向异构并发容器,优先保证实时型应用容器服务质量的同时,保证批处理型应用容器的性能;并根据节点运行现状,推荐新增合适的实例类型,从而减少与当前运行时容器的资源竞争,最大化节点的资源利用率。最后实现了相应的调度算法和运行机制。实验结果显示,动态调度机制提高了系统使用效率,没有引入明显的运行开销。节点上同时运行实时型和批处理型应用容器时,调度机制可以将实时型应用容器满足服务要求的时间长度延长87.05%,同时运行的批处理应用容器执行时间最多仅延长2.9%。此外,通过调度推荐机制,根据当前运行实例情况,推荐最优实例类型,在容器实例数增大2.3倍时,批处理型应用容器的执行时间最多仅延长9.3%。