GridSim Package 學(xué)習(xí)筆記(一)
GridSim項(xiàng)目就不介紹了,在網(wǎng)上可以找到,它是當(dāng)前流行的一種網(wǎng)格模擬器。 由于做論文要用到它,就只好學(xué)習(xí)如何使用它,主要是學(xué)習(xí)如何使用該項(xiàng)目開發(fā)的包資源。首先我們需要到GridSim項(xiàng)目的首頁去下載GridSim項(xiàng)目工具包(gridsimtoolkit4.0)。在改項(xiàng)目中的jars文件夾中有兩個(gè)jar包,gridsim.jar它包含了gridsim和 simjava2類文件,還有一個(gè)jar包就是simjava2.jar,它僅僅包含simjava v2.0類文件。在examples文件夾下是教我們?nèi)绾问褂肎ridSim包的一些case。我也是從讀這些例子的源碼開始的。所做筆記也大多是把例子中的注釋翻譯了一下,再多就是做了一些總結(jié)。相信這樣能夠加深一下記憶,有助于理解。(其中可能會(huì)有些錯(cuò)誤呦,如蒙哪位高手看過之后,還望不要見笑,能夠加以指正!^_^?。?br>Example1 該例子教我們?nèi)绾芜\(yùn)用gridsim包去創(chuàng)建一個(gè)網(wǎng)格資源。 在我們使用gridsim包之前我們需要初始化gridsim包 初始化方法:GridSim.init(num_user, calendar, trace_flag, exclude_from_file,exclude_from_processing, report_name); 參數(shù): num_user:number of users,網(wǎng)格用戶的個(gè)數(shù); int calendar:當(dāng)前日期,calendar = java.util.Calendar.getInstance(); Calendar trace_flag: trace GridSim events/activities; boolean exclude_from_file,exclude_from_processing :list of files or processing names to be excluded from any statistical measures; String[] report_name:生成的報(bào)告文件的路徑,如果不需要生成報(bào)告文件,可以初始化為null;String 一個(gè)網(wǎng)格資源可以包括一個(gè)或多個(gè)機(jī)器,而一臺(tái)機(jī)器又可以包括一個(gè)或多個(gè)PEs((Processing Elements or CPUs)。
在我們創(chuàng)建網(wǎng)格資源的時(shí)候我們首先要聲明這個(gè)網(wǎng)格資源包括多少機(jī)器,并將這些機(jī)器存放于gridsim.MachineList的對(duì)象中。而我們?cè)趧?chuàng)建機(jī)器對(duì)象時(shí)又必須聲明這臺(tái)機(jī)器包括多少PE,并且學(xué)要將這些PE放到gridsim.PEList對(duì)象中。因此在我們初始化GridSim之后,需要安在以下步驟來創(chuàng)建一個(gè)網(wǎng)格資源。 setp1:Create PEs and add these into an object of PEList. 方法: PEList peList1 = new PEList(); //創(chuàng)建一個(gè)PEList對(duì)象,用以存放PE int MIPSRating = 377; //定義MIPS peList1.add( new PE(0, MIPSRating) ); //將PE對(duì)象放到PEList中 如果一臺(tái)機(jī)器包括多個(gè)PE,你還可以按照以上方法,創(chuàng)建多個(gè)PE對(duì)象,并將它們放到PEList中。 step2: Create one Machine with its id and list of PEs or CPUs 方法: MachineList mList = new MachineList(); //創(chuàng)建一個(gè)MachineList對(duì)象,用以存放Machine mList.add( new Machine(0, peList1) ); //創(chuàng)建一個(gè)Machine對(duì)象,并把它放到MachineList中 同理,如果一個(gè)網(wǎng)格資源包括多個(gè)machine的話,可以安裝step2創(chuàng)建多個(gè)machine并把它們存放到MachineList中。 step3:Create a ResourceCharacteristics object that stores the properties of a Grid resource: architecture, OS, list of Machines, allocation policy: time- or space-shared, time zone and its price (G$/PE time unit). 方法: ResourceCharacteristics resConfig = new ResourceCharacteristics( arch, os, mList, ResourceCharacteristics.TIME_SHARED,time_zone, cost); 參數(shù): arch:系統(tǒng)結(jié)構(gòu);String os: 操作系統(tǒng)類型;String mList:改網(wǎng)格資源包括的機(jī)器;MachineList ResourceCharacteristics.TIME_SHARED:共享時(shí)間;gridsim.ResourceCharacteristics.TIME_SHARED time_zone:資源所在的時(shí)區(qū);double cost:使用資源需要的費(fèi)用;double step4: create a GridResource object. GridResource gridRes = new GridResource(name, baud_rate, seed,resConfig, peakLoad, offPeakLoad, holidayLoad, Weekends, Holidays); 參數(shù): name:網(wǎng)格資源名稱;String baud_rate:網(wǎng)絡(luò)連接速度;double seed:long seed = 11L*13*17*19*23+1;什么意思,不大清楚 peakLoad : the resource load during peak hour;double offPeakLoad:the resource load during off-peak hr ;double holidayLoad:the resource load during holiday;double // incorporates weekends so the grid resource is on 7 days a week LinkedList Weekends = new LinkedList(); Weekends.add(new Integer(Calendar.SATURDAY)); Weekends.add(new Integer(Calendar.SUNDAY)); // incorporates holidays. However, no holidays are set in this example LinkedList Holidays = new LinkedList(); Weekends和Holidays這兩個(gè)參數(shù)應(yīng)該是定義改網(wǎng)格資源的工作日和休息日吧。(要有點(diǎn)人性化嗎,不過好像holidays設(shè)為空了。^_^) 以上就是創(chuàng)建一個(gè)網(wǎng)格資源的大致步驟了。概括起來就是: 創(chuàng)建GridSource中每個(gè)Machine所包括的PE->創(chuàng)建GridSource所包括的Machine->創(chuàng)建GridSource的ResourceCharacteristics->創(chuàng)建一個(gè)GridSource GridSim Package 學(xué)習(xí)筆記(一)
GridSim項(xiàng)目就不介紹了,在網(wǎng)上可以找到,它是當(dāng)前流行的一種網(wǎng)格模擬器。 由于做論文要用到它,就只好學(xué)習(xí)如何使用它,主要是學(xué)習(xí)如何使用該項(xiàng)目開發(fā)的包資源。首先我們需要到GridSim項(xiàng)目的首頁去下載GridSim項(xiàng)目工具包(gridsimtoolkit4.0)。在改項(xiàng)目中的jars文件夾中有兩個(gè)jar包,gridsim.jar它包含了gridsim和 simjava2類文件,還有一個(gè)jar包就是simjava2.jar,它僅僅包含simjava v2.0類文件。在examples文件夾下是教我們?nèi)绾问褂肎ridSim包的一些case。我也是從讀這些例子的源碼開始的。所做筆記也大多是把例子中的注釋翻譯了一下,再多就是做了一些總結(jié)。相信這樣能夠加深一下記憶,有助于理解。(其中可能會(huì)有些錯(cuò)誤呦,如蒙哪位高手看過之后,還望不要見笑,能夠加以指正!^_^?。?br>Example1 該例子教我們?nèi)绾芜\(yùn)用gridsim包去創(chuàng)建一個(gè)網(wǎng)格資源。 在我們使用gridsim包之前我們需要初始化gridsim包 初始化方法:GridSim.init(num_user, calendar, trace_flag, exclude_from_file,exclude_from_processing, report_name); 參數(shù): num_user:number of users,網(wǎng)格用戶的個(gè)數(shù); int calendar:當(dāng)前日期,calendar = java.util.Calendar.getInstance(); Calendar trace_flag: trace GridSim events/activities; boolean exclude_from_file,exclude_from_processing :list of files or processing names to be excluded from any statistical measures; String[] report_name:生成的報(bào)告文件的路徑,如果不需要生成報(bào)告文件,可以初始化為null;String 一個(gè)網(wǎng)格資源可以包括一個(gè)或多個(gè)機(jī)器,而一臺(tái)機(jī)器又可以包括一個(gè)或多個(gè)PEs((Processing Elements or CPUs)。
在我們創(chuàng)建網(wǎng)格資源的時(shí)候我們首先要聲明這個(gè)網(wǎng)格資源包括多少機(jī)器,并將這些機(jī)器存放于gridsim.MachineList的對(duì)象中。而我們?cè)趧?chuàng)建機(jī)器對(duì)象時(shí)又必須聲明這臺(tái)機(jī)器包括多少PE,并且學(xué)要將這些PE放到gridsim.PEList對(duì)象中。因此在我們初始化GridSim之后,需要安在以下步驟來創(chuàng)建一個(gè)網(wǎng)格資源。 setp1:Create PEs and add these into an object of PEList. 方法: PEList peList1 = new PEList(); //創(chuàng)建一個(gè)PEList對(duì)象,用以存放PE int MIPSRating = 377; //定義MIPS peList1.add( new PE(0, MIPSRating) ); //將PE對(duì)象放到PEList中 如果一臺(tái)機(jī)器包括多個(gè)PE,你還可以按照以上方法,創(chuàng)建多個(gè)PE對(duì)象,并將它們放到PEList中。 step2: Create one Machine with its id and list of PEs or CPUs 方法: MachineList mList = new MachineList(); //創(chuàng)建一個(gè)MachineList對(duì)象,用以存放Machine mList.add( new Machine(0, peList1) ); //創(chuàng)建一個(gè)Machine對(duì)象,并把它放到MachineList中 同理,如果一個(gè)網(wǎng)格資源包括多個(gè)machine的話,可以安裝step2創(chuàng)建多個(gè)machine并把它們存放到MachineList中。 step3:Create a ResourceCharacteristics object that stores the properties of a Grid resource: architecture, OS, list of Machines, allocation policy: time- or space-shared, time zone and its price (G$/PE time unit). 方法: ResourceCharacteristics resConfig = new ResourceCharacteristics( arch, os, mList, ResourceCharacteristics.TIME_SHARED,time_zone, cost); 參數(shù): arch:系統(tǒng)結(jié)構(gòu);String os: 操作系統(tǒng)類型;String mList:改網(wǎng)格資源包括的機(jī)器;MachineList ResourceCharacteristics.TIME_SHARED:共享時(shí)間;gridsim.ResourceCharacteristics.TIME_SHARED time_zone:資源所在的時(shí)區(qū);double cost:使用資源需要的費(fèi)用;double step4: create a GridResource object. GridResource gridRes = new GridResource(name, baud_rate, seed,resConfig, peakLoad, offPeakLoad, holidayLoad, Weekends, Holidays); 參數(shù): name:網(wǎng)格資源名稱;String baud_rate:網(wǎng)絡(luò)連接速度;double seed:long seed = 11L*13*17*19*23+1;什么意思,不大清楚 peakLoad : the resource load during peak hour;double offPeakLoad:the resource load during off-peak hr ;double holidayLoad:the resource load during holiday;double // incorporates weekends so the grid resource is on 7 days a week LinkedList Weekends = new LinkedList(); Weekends.add(new Integer(Calendar.SATURDAY)); Weekends.add(new Integer(Calendar.SUNDAY)); // incorporates holidays. However, no holidays are set in this example LinkedList Holidays = new LinkedList(); Weekends和Holidays這兩個(gè)參數(shù)應(yīng)該是定義改網(wǎng)格資源的工作日和休息日吧。(要有點(diǎn)人性化嗎,不過好像holidays設(shè)為空了。^_^) 以上就是創(chuàng)建一個(gè)網(wǎng)格資源的大致步驟了。概括起來就是: 創(chuàng)建GridSource中每個(gè)Machine所包括的PE->創(chuàng)建GridSource所包括的Machine->創(chuàng)建GridSource的ResourceCharacteristics->創(chuàng)建一個(gè)GridSource 下面給出一些gridsim相關(guān)文獻(xiàn)的索引和簡介:
1、Visual Modeler for Grid Modelling and Simulation (GridSim) Toolkit 圖形化界面方面的介紹,里面關(guān)于mvc模式的介紹還不錯(cuò) 2、Using the GridSim Toolkit for Enabling Grid Computing Education 主要還是圍繞介紹gridsim這個(gè)仿真工具的,里面給出了時(shí)間、價(jià)格限制下的調(diào)度算法,算法的偽代碼還是可以參考地 3、A Taxonomy of Computer-based Simulations and its Mapping to Parallel and Distributed Systems Simulation Tools 關(guān)于各種網(wǎng)絡(luò)環(huán)境、分布式環(huán)境下仿真工具的一篇綜述 里面提到了gridsim,simgrid,對(duì)前者的說明沒什么新意。 文中認(rèn)為后者中SG提供比較底層的api,開發(fā)比較自由,當(dāng)然也比較難,MSG更加面向用戶些,但是提供的東西就會(huì)有所限制了。我感覺這兩個(gè)東西其實(shí)提供的底層api功能各有特色,雖都不怎么完善,但是仿真一般的算法還都是可以用的 4、QoS-based Scheduling of Workflow Applications on Service Grids 對(duì)于價(jià)格和時(shí)間限制的調(diào)度的一個(gè)應(yīng)用例子,仍然只提供了偽碼 但感覺gridsim能做得事情還是比我想象的多 里面有幾個(gè)步驟值得注意一下: 1)、資源發(fā)現(xiàn)和執(zhí)行時(shí)間預(yù)測,是通過與gis交互取得的,可見gridsim也提供了這種預(yù)測機(jī)制,不 過不知道里面有沒有考慮估計(jì)的偏差率的問題,因?yàn)閟imgrid里面就做了10%的偏差設(shè)置,這樣可 以仿真出預(yù)測失效對(duì)結(jié)果的影響 2)、工作流的任務(wù)分類,既然能分類,那成批調(diào)度應(yīng)該也能做。 3)、用戶執(zhí)行時(shí)間限制的考慮 不過不知道gridsim能否調(diào)度的過程中可以同時(shí)分配若干任務(wù)到一個(gè)計(jì)算單元,后面的等待前面的算完后再開始執(zhí)行。我所看到的相關(guān)假設(shè)都是,輪詢,調(diào)度任務(wù)過去,如果發(fā)現(xiàn)資源忙,就調(diào)度到別的資源 |
|