1.Cloudsim體系結(jié)構(gòu)及核心類(lèi)
CloudSim是一款云計(jì)算仿真軟件,其由澳大利亞墨爾本大學(xué)網(wǎng)格實(shí)驗(yàn)室和Gridbus項(xiàng)目于2009年推出,它是一個(gè)函數(shù)庫(kù),可在Windows和Linux系統(tǒng)上跨平臺(tái)運(yùn)行,CloudSim的體系結(jié)構(gòu)主要分為四個(gè)層次,如圖1所示:
3.實(shí)現(xiàn)基于多維QoS的資源調(diào)度算法
開(kāi)始仿真模擬時(shí),首先需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)中心,然后再數(shù)據(jù)中心中創(chuàng)建CPU、內(nèi)存等資源,此時(shí)只需要向代理中心注冊(cè)資源信息,用戶(hù)就可以使用數(shù)據(jù)中心的資源進(jìn)行仿真模擬。
在仿真資源分配試驗(yàn)中,其步驟及其各個(gè)步驟中的代碼如下:
(1) 初始化Cloudsim包,代碼如下:
Int num_user= 1 ; //定義用戶(hù)數(shù)量
Calendar calendar=Calendar.getInstance();
boolean trace_flag=false;
CloudSim.init(num_user, calendar, trace_flag); //初始化CloudSim包
(2)創(chuàng)建數(shù)據(jù)中心(Datacenter),代碼如下所示:
DataCenter datacenter()=createDatacenter("Datacenter_0");
(3) 創(chuàng)建數(shù)據(jù)中心代理(Broker),代碼如下所示:
DatacenterBroker broker=createBroker();
Int brokerId=broker.get_id();
(4) 創(chuàng)建虛擬機(jī),代碼如下所示:
vmlist=new VirtualMachineList(); //創(chuàng)建虛擬機(jī)列表
Vmvm=new Vm(vmid, brokerld, mips, PesNumber, ram, bw, size,
vmm,new CloudletSchedulerTimeShared()); //創(chuàng)建虛擬機(jī)
vmlist.add(vm); //加入虛擬機(jī)列表
broker.submitVMList(vmlist);//提交虛擬機(jī)列表
(5) 創(chuàng)建云任務(wù),代碼如下所示:
cloudletList = new CloudletList();//創(chuàng)建云任務(wù)列表
Cloudlet cloudlet=new Cloudlet(id, length, file_size, output_size);
cloudlet.setUserlD(brokerld);
……
cloudletList.add(cloudlet); //將任務(wù)加入任務(wù)列表
……
broker.submitCloudletList(cloudletList);//向代理提交任務(wù)列表
(6) 執(zhí)行資源調(diào)度算法,完成任務(wù)到虛擬機(jī)的映射,代碼如下所示:
broker. bindCloudletsToVms();
(7) 啟動(dòng)仿真程序,代碼如下所示:
CloudSim.startSimulation();
(8) 打印仿真結(jié)果,代碼如下所示:
List<Cloudlet> newList = broker.getCloudletReceivedList();
CloudSim.stopSimulation();
printCloudletList(newList);
注:任務(wù)到虛擬機(jī)的映射是由DatacenterBroker類(lèi)中的bindCloudletsToVms()函數(shù)實(shí)現(xiàn)。該函數(shù)根據(jù)不同的策略來(lái)實(shí)現(xiàn)任務(wù)的映射。在《云計(jì)算》劉鵬著的示例中,提供了兩種映射算法,一種是作業(yè)順序分配的算法、另一種是以總完成時(shí)間最短為導(dǎo)向的貪心算法。本人的目標(biāo)是基于多維QoS的資源調(diào)度算法,所以重載了云任務(wù)Cloudlet類(lèi),在類(lèi)中增加了與QoS相關(guān)的屬性,比如資源需求、QoS需求、作業(yè)優(yōu)先級(jí)等。然后在資源分配函數(shù)中根據(jù)這些屬性的值,選定分配策略,來(lái)完成任務(wù)到虛擬機(jī)的映射。另外個(gè)人認(rèn)為,在資源調(diào)度層面,并不需要指定每維QoS的具體來(lái)源、具體意義,映射算法中只需要將其作為一個(gè)參數(shù)做相應(yīng)的運(yùn)算即可。