论文部分内容阅读
随着云计算的不断发展,其中的虚拟化技术也得到了提升,而在云计算环境中最受人关注的莫过于其上的资源调度问题。随着云计算环境规模的扩大,导致能源消耗的不断增加,资源调度作为资源使用的核心,同时也是云计算中节约能源的核心,自然就越来越重要。云计算中主要的资源分为四大类,CPU、内存、磁盘以及网络带宽,在本论文中主要研究的是CPU和网络带宽资源的调度问题。在Xen开源系统中,由于系统未区分CPU密集型任务和IO密集型任务,导致IO密集型任务可能在运行期间未得到能够处理网络包的CPU资源,使得该任务需要等待下一周期分配CPU资源后才能进行IO任务的处理。该处理方法的结果是IO密集型任务的响应时延较高,无法满足服务等级协议(SLA)。同时,在IO密集型任务过多时,网络带宽可能达到上限,使得某个客户域DomainU可能无法获取到和适量的带宽资源,而某个客户域的带宽资源可能未使用或者使用未达到其上限,导致带宽资源的浪费。因此,本论文在CPU资源调度中使用了RNN和Q-learning算法进行CPU资源地分配。首先,通过过往数据来进行训练RNN网络模型进行分类,通过CPU资源各周期剩余的credit值以及所处的状态的序列数据进行分类当前客户域DomainU运行的任务类型,主要分为IO密集型任务和其他类型。其后,根据该分类结果可以确定IO密集型任务和其他类型任务的比例,进而使用均分方法进行Cap值上限的设定,以及通过使用Q-learning算法进行强化学习时间片长短的动作调整,保证在该状态下可以达到最快的任务完成时间。当时间片较长时,有利于CPU密集型任务的执行,因为可以减少上下文切换的次数,减少系统的开销。当时间片较短时,任务之间切换的频率较高,可以使得IO密集型任务可以更大几率获得执行,从而减少IO任务的响应时延。实验结果表明,上述方法可以缩短整体任务的执行时间。在网络带宽调度中,通过检测网络总带宽的使用量来衡量当前系统中IO密集型任务的运行数量,当总带宽使用量超过阈值时,通过监控数据,若发现某个客户域DomainU的带宽使用量未达到上限,则将其未超过平均带宽的部分拿出,进行分配到其他客户域,以使得带宽的利用率得到提升,减少资源的浪费。