容器化集群资源抢占式调度技术研究
发布时间:2021-11-27 05:54
随着互联网用户规模和应用种类的爆炸式增长,互联网行业面对的数据规模也飞速扩张,分布式集群的重要性日益升高,在云计算技术逐渐成熟后,分布式集群已经成为几乎所有企业和机构在解决数据存储和处理问题时的不二选择。分布式集群可作为多种工作的运行平台,也需要满足多种工作的需求:包括批处理工作和实时工作,不同种类的工作对于服务质量有着不同的衡量标准。分布式系统的一大挑战在于对批处理工作和实时工作进行调度,在降低实时工作超时率的同时减少批处理工作的执行时间以提升集群中资源紧张时的服务质量。容器技术作为一种新兴的虚拟化技术,对信息安全和资源使用都带来了巨大的便利,已经受到各大公司和机构的欢迎,人们开始选择将集群容器化后进行使用。在容器化集群中现有的调度策略的粒度比较粗糙,通常选择直接杀死批处理工作或者预先为实时工作保留集群资源来降低实时工作的超时率,但这会增加批处理工作的执行时间并降低集群资源利用率。本文提出了一种容器化集群中的调度策略,UpPreempt,它可以做出基于容器挂起的细粒度多容器资源抢占决策。UpPreempt在进行调度时支持较紧急的实时工作从正在运行中的批处理工作上抢占资源,在决定抢占时...
【文章来源】:上海交通大学上海市 211工程院校 985工程院校 教育部直属院校
【文章页数】:72 页
【学位级别】:硕士
【部分图文】:
–1Docker架构
上海交通大学硕士学位论文第二章相关工作图2–2虚拟机的架构Figure2–2ArchitectureofVM操作系统的虚拟机实例,但是这种做法会造成很大的资源浪费,并且会拖慢虚拟机创建、销毁等操作的速度,也增加了编排、伸缩和迁移等调度的难度。事实上通常在生产环境中,开发人员的开发环境都是统一的,因此不需要派生出不同的操作系统来进行服务的开发。无论哪种虚拟化技术,安全问题都是通过沙箱(Sandbox)机制来解决的。沙箱是一种隔离进程执行的机制,其目的在于对一些存在安全威胁或暂时不能信任的进程进行权限的管理,例如禁止发行者未知的用户程序访问当前路径的上级目录,或访问其它同组用户的空间及文件等。虚拟化技术通过这一机制来为用户提供虚拟的计算和存储资源,虚拟机通过Hypervisor层来实现沙箱,而容器技术则是通过Linux提供的chroot功能来实现的。原本Linux的chroot是修改根目录的一个命令,容器采用这种方式修改进程组(或树)的根目录,以此限制访问的权限。随着Linux系统命名空间(Namespace)技术的进步,开发人员可以通过命名空间的方式将一个(组)进程与另一个(组)进程进行隔离,使这两个(组)进程之间彼此不能影响,这就是容器机制。而Google提出的Controlgroups(Cgroups)技术被整合进Linux内核之中,这种技术可以对进程组之间的物理资源进行隔离、分配和管理,也成为容器进行物理资源分配的基矗—11—
第二章相关工作上海交通大学硕士学位论文图2–3在Linux系统中的/proc/[PID]/ns/目录下,使用ls-l命令查看文件Figure2–3Seethefilesinthefolder/proc/[PID]/ns/onLinuxsystemusingcommand[ls-l]表2–1Namespace类型Table2–1TypesofLinuxNamespace.类型含义内核版本调用参数Mountnamespaces挂载点2.4.19CLONE_NEWNSUTSnamespaces主机名2.6.19CLONE_NEWUTSIPCnamespaces进程间通信2.6.19CLONE_NEWIPCPIDnamespaces进程id2.6.24CLONE_NEWPIDNetworknamespaces网络通信2.6.29CLONE_NEWNETUsernamespaces用户3.8CLONE_NEWUSER命名空间(Namespace)是Linux系统自带的隔离方法。使用Namespace后,进程组(树)、内存、网络接口套接字、用户(组)名、UTS、IPC等资源不再是全局性的,而是属于某特定的Namespace。程序开发人员使用Linux系统时,对于机器上的资源是否隔离并不关心,而是希望自己可以独占整个机器进行配置和开发,因为如果机器上同时运行着其它应用程序的话,进程之间可能会相互影响,造成无法预料的错误。Linux系统提供的Namespace机制解决了这一问题,不同的Namespace间是彼此透明、互不干扰的。常见的Linux支持的命名空间类型有6种,分别对挂载、主机名/域名、IPC、PID、网络和用户进行隔离,如表2–1所示。在3.8以上版本的Linux系统中的/proc/[PID]/ns/目录下,使用ls-l命令查看文件,如图2–3所示,箭头右侧所指即为所属的namespace的id。创建一个Namespace需要使用Linux提供的schead库函数中的clone()方法,clone方法可以让子进程启动/bin/bash程序,clone()不同于fork(),一般使用clone方法时首先—12—
本文编号:3521682
【文章来源】:上海交通大学上海市 211工程院校 985工程院校 教育部直属院校
【文章页数】:72 页
【学位级别】:硕士
【部分图文】:
–1Docker架构
上海交通大学硕士学位论文第二章相关工作图2–2虚拟机的架构Figure2–2ArchitectureofVM操作系统的虚拟机实例,但是这种做法会造成很大的资源浪费,并且会拖慢虚拟机创建、销毁等操作的速度,也增加了编排、伸缩和迁移等调度的难度。事实上通常在生产环境中,开发人员的开发环境都是统一的,因此不需要派生出不同的操作系统来进行服务的开发。无论哪种虚拟化技术,安全问题都是通过沙箱(Sandbox)机制来解决的。沙箱是一种隔离进程执行的机制,其目的在于对一些存在安全威胁或暂时不能信任的进程进行权限的管理,例如禁止发行者未知的用户程序访问当前路径的上级目录,或访问其它同组用户的空间及文件等。虚拟化技术通过这一机制来为用户提供虚拟的计算和存储资源,虚拟机通过Hypervisor层来实现沙箱,而容器技术则是通过Linux提供的chroot功能来实现的。原本Linux的chroot是修改根目录的一个命令,容器采用这种方式修改进程组(或树)的根目录,以此限制访问的权限。随着Linux系统命名空间(Namespace)技术的进步,开发人员可以通过命名空间的方式将一个(组)进程与另一个(组)进程进行隔离,使这两个(组)进程之间彼此不能影响,这就是容器机制。而Google提出的Controlgroups(Cgroups)技术被整合进Linux内核之中,这种技术可以对进程组之间的物理资源进行隔离、分配和管理,也成为容器进行物理资源分配的基矗—11—
第二章相关工作上海交通大学硕士学位论文图2–3在Linux系统中的/proc/[PID]/ns/目录下,使用ls-l命令查看文件Figure2–3Seethefilesinthefolder/proc/[PID]/ns/onLinuxsystemusingcommand[ls-l]表2–1Namespace类型Table2–1TypesofLinuxNamespace.类型含义内核版本调用参数Mountnamespaces挂载点2.4.19CLONE_NEWNSUTSnamespaces主机名2.6.19CLONE_NEWUTSIPCnamespaces进程间通信2.6.19CLONE_NEWIPCPIDnamespaces进程id2.6.24CLONE_NEWPIDNetworknamespaces网络通信2.6.29CLONE_NEWNETUsernamespaces用户3.8CLONE_NEWUSER命名空间(Namespace)是Linux系统自带的隔离方法。使用Namespace后,进程组(树)、内存、网络接口套接字、用户(组)名、UTS、IPC等资源不再是全局性的,而是属于某特定的Namespace。程序开发人员使用Linux系统时,对于机器上的资源是否隔离并不关心,而是希望自己可以独占整个机器进行配置和开发,因为如果机器上同时运行着其它应用程序的话,进程之间可能会相互影响,造成无法预料的错误。Linux系统提供的Namespace机制解决了这一问题,不同的Namespace间是彼此透明、互不干扰的。常见的Linux支持的命名空间类型有6种,分别对挂载、主机名/域名、IPC、PID、网络和用户进行隔离,如表2–1所示。在3.8以上版本的Linux系统中的/proc/[PID]/ns/目录下,使用ls-l命令查看文件,如图2–3所示,箭头右侧所指即为所属的namespace的id。创建一个Namespace需要使用Linux提供的schead库函数中的clone()方法,clone方法可以让子进程启动/bin/bash程序,clone()不同于fork(),一般使用clone方法时首先—12—
本文编号:3521682
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3521682.html