使用Cloudsim实现基于多维QoS的资源调度算法之二:实现基于多维QoS的资源调度算法,cloudsimqos


1.Cloudsim体系结构及核心类
CloudSim是一款云计算仿真软件,其由澳大利亚墨尔本大学网格实验室和Gridbus项目于2009年推出,它是一个函数库,可在Windows和Linux系统上跨平台运行,CloudSim的体系结构主要分为四个层次,如图1所示:

图1 Cloudsim 体系结构 Cloudsim仿真层为云计算的虚拟数据中心环境的配置和仿真提供支持,包括虚拟机、内存、容量及带宽的接口,该层用于主机分配到虚拟机的策略研究,并通过扩展核心的虚拟机调度函数实现。
Cloudsim最上层是用户代码层,该层提供一些基本的实体,如主机、应用、虚拟机,用户数和应用类型,以及代理调度策略等。通过扩展这些实体,云应用开发人员可以在该层开发各种用户需求分布、应用配置、云可用性场景等应用调度技术,并执行Cloudsim支持的云配置的Robust测试。
通过扩展Cloudsim提供的基本功能,研究者能基于特定环境和配置进行测试,完成云计算关键技术的开发研究。
CloudSim继承了GridSim并支持云计算的研究和开发,CloudSim的组件工具均为开源的。其中CloudSim具有两个独特功能:
第一,提供虚拟化的引擎,使用户可在数据中心的节点上建立和管理独立的、协同的虚拟化服务;
第二,在对虚拟化服务分配处理核心时,可在时间共享和空间共享之间灵活切换。
在CloudSim函数库中有几个主要核心类,如表1所示:
表1 Cloudsim主要核心类 2.Cloudsim工作模型
在云数据中心,将特定应用的虚拟机分配给主机由虚拟机分配控制器(VmAllocationPolicy)完成,Cloudsim在主机层和虚拟机层都实现了基于时间共享和空间共享的调度策略。
通常情况下,来自不同用户的任务相对独立,假设有m个用户User={User1, User2,…, Userm},n个任务Task={t1,t2,…,tn},n个虚拟化资源VM={VM1,VM2,…VMn},以及p个数据中心Datacenter={Datacenter1, Datacenter2,…Datacenterp},Cloudsim的工作模型如图2所示:


图2 Cloudsim的工作模型 其中,CIS(Cloud Information Service)将用户请求映射到合适的云服务提供商,DatacenterBroker模拟SaaS提供商代理,根据QoS的需求协商资源和服务的分配策略。VmScheduler是实现主机组件的抽象类,模拟虚拟机的分配调度策略,扩展此抽象类能调整处理器的共享策略。VmAllocationPolicy代表虚拟机监视器调度策略,该策略用于将虚拟机分配给主机。

3.实现基于多维QoS的资源调度算法

开始仿真模拟时,首先需要创建一个数据中心,然后再数据中心中创建CPU、内存等资源,此时只需要向代理中心注册资源信息,用户就可以使用数据中心的资源进行仿真模拟。
在仿真资源分配试验中,其步骤及其各个步骤中的代码如下:
(1) 初始化Cloudsim包,代码如下:
Int num_user= 1 ; //定义用户数量
Calendar calendar=Calendar.getInstance();
boolean trace_flag=false;
CloudSim.init(num_user, calendar, trace_flag); //初始化CloudSim包
(2)创建数据中心(Datacenter),代码如下所示:
DataCenter datacenter()=createDatacenter("Datacenter_0");
(3) 创建数据中心代理(Broker),代码如下所示:
DatacenterBroker broker=createBroker();
Int brokerId=broker.get_id();
(4) 创建虚拟机,代码如下所示:
vmlist=new VirtualMachineList(); //创建虚拟机列表
Vmvm=new Vm(vmid, brokerld, mips, PesNumber, ram, bw, size,
vmm,new CloudletSchedulerTimeShared()); //创建虚拟机
vmlist.add(vm); //加入虚拟机列表
broker.submitVMList(vmlist);//提交虚拟机列表
(5) 创建云任务,代码如下所示:
cloudletList = new CloudletList();//创建云任务列表
Cloudlet cloudlet=new Cloudlet(id, length, file_size, output_size);
cloudlet.setUserlD(brokerld);
……
cloudletList.add(cloudlet); //将任务加入任务列表
……
broker.submitCloudletList(cloudletList);//向代理提交任务列表
(6) 执行资源调度算法,完成任务到虚拟机的映射,代码如下所示:
broker. bindCloudletsToVms();
(7) 启动仿真程序,代码如下所示:
CloudSim.startSimulation();
(8) 打印仿真结果,代码如下所示:
List<Cloudlet> newList = broker.getCloudletReceivedList();
CloudSim.stopSimulation();
printCloudletList(newList);
注:任务到虚拟机的映射是由DatacenterBroker类中的bindCloudletsToVms()函数实现。该函数根据不同的策略来实现任务的映射。在《云计算》刘鹏著的示例中,提供了两种映射算法,一种是作业顺序分配的算法、另一种是以总完成时间最短为导向的贪心算法。本人的目标是基于多维QoS的资源调度算法,所以重载了云任务Cloudlet类,在类中增加了与QoS相关的属性,比如资源需求、QoS需求、作业优先级等。然后在资源分配函数中根据这些属性的值,选定分配策略,来完成任务到虚拟机的映射。另外个人认为,在资源调度层面,并不需要指定每维QoS的具体来源、具体意义,映射算法中只需要将其作为一个参数做相应的运算即可。


路由器QoS的详细设置

回答不不是很详细明白
1.."优先权"和"IP优先"的关系是什么?
优先权"和"IP优先"都是QOS的控制过程。
对同一流中的不同数据包发送处理的过程简单来讲

情况一
在设备能够完全轻松的处理数据包是
QOS的功能并不明显
情况二
在设备不能线型处理时
QOS开始发挥作用IP优先级,在队列里把数据包分为0,1,2,3.。个级别
进行优先处理7为最高
情况三
在情况二无法应对的时候
在不能入站(进入队列)就存在抖动缓冲区里,缓冲区满了,丢弃包
这里还没有用到“优先级”
优先级发挥作用是用在语音等低延迟的数据包中。
比如说百度MP3试听。。语音包对网络的要求很高。。在听MP3是经常会有
缓冲0%的时候,这是就用到优先级,发生这一情况的原因是抖动缓冲区中的
为空也就是没有。只能等待数据进入空的缓冲区里,优先级高的先进。

2.IP服务类型里,"最大可靠性","最大吞吐量","最小延迟"
Tos这个服务说实话,已经过时了,大多应用程序不支持。建议配置正常服务就好了。
Tos是一般针对网络控制服务来说的,像telnet ftp,icmp,dns,snmp来讲的
因为比如telnet要求最低延迟,因为它是传输数量少的交换数据
ftp要求最大吞吐量,因为传输大量的数据,snmp要求最大可靠性

3.最后一行802.1p的优先权又是指什么?
传统地讲,802.1p优先级(也叫Cos)是针对交换机的,ip优先级针对路由器的。想一些功能高的交换机支持

802.1p优先级也支持IP优先。
拓扑图有交换机 路由器就都配置。

4.要保证qq和msn语音视频聊天的通畅,目标地址或端口应该怎么设?
只是理论,
拓扑图不知道。。。目的端口就是要进行标记的设备(),把数据包进行标记
转发数据后,其他的设备实行QOS机制就可以了。、
vpn好弄 隧道两头就可以。。现在不好说
端口qq msn都有固定的端口号。。细节PASS

5.要设置bt,迅雷,电驴的优先级为最低,该怎么设置.
ip优先级0 802.1q 0 tos 正常 优先级低
 

我的电脑里没有 QoS数据包调度程序 ?

hello 你的操作系统是不是家庭版的啊 家庭版的就没有这个 专业版才有的
其实这个优化没有什么作用的。
我们先看看微软是怎样解释这个问题的。 在微软的KB316666号知识库中对QoS的问题是如下解释的: 与 Windows 2000 一样,在 Windows XP 中,程序也可以通过 QoS 应用程序编程接口 (API) 来利用 QoS。所有程序可以共享百分之百的网络带宽,特别要求带宽优先权的程序除外。其他程序也可以使用这种“保留”的带宽,正在发送数据的请求程序除外。默认情况下,程序保留的带宽累计可达终端计算机每个接口的基本链接速度的百分之二十。如果保留带宽的程序发送的数据量没有完全用完带宽,保留带宽的未用部分可用于同一主机上的其他数据流。 在微软的KB316666中明确表示许多发表的技术文章和新闻组文章多次提到 Windows XP 通常为 QoS 保留百分之二十的可用带宽的说法是错误的。 我们首先来明确QoS的真正含义是什么。QoS的中文意义是:联网服务质量。具体是指在整个网络连接上应用的各种通信或程序类型优先技术。QoS技术的存在是为了获得更好的联网服务质量。QoS是一组服务要求,网络必须满足这些要求才能确保适当服务级别的数据传输。 QoS 的实施可以使类似网络电视,网络音乐等实时应用程序最有效地使用网络带宽。由于它可以确保某个保证级别有充足的网络资源,所以它为共享网络提供了与专用网络类似的服务级别。它同时提供通知应用程序资源可用情况的手段,从而使应用程序能够在资源有限或用尽时修改请求。在Windows XP系统中引入QoS技术的目标是建立用于网络通讯的保证传输系统。 从上面这些微软对QoS的解释我们可以知道通过在组策略编辑器中把QoS的20%修改为0%达不到优化网络性能的目标。而在组策略里面的修改的20%参数是指当使用了QoS API编写程序需要访问网络时能够使用的最大带宽量,如果我们设置为0%,那就意味着使用QoS API编写的应用程序不得不和其他应用程序争夺有限的带宽,可能产生的后果就是需要优先通信的数据没有得到优先权。从这一点来说把QoS的20%修改为0%不但没有好处还会产生使得某些实时网络应用程序不能有效使用网络带宽的问题。所以这个所谓的优化技巧可以说是一个误导。
 

相关内容