GridSim Package 学习笔记(一)
GridSim项目就不介绍了,在网上可以找到,它是当前流行的一种网格模拟器。 由于做论文要用到它,就只好学习如何使用它,主要是学习如何使用该项目开发的包资源。首先我们需要到GridSim项目的首页去下载GridSim项目工具包(gridsimtoolkit4.0)。在改项目中的jars文件夹中有两个jar包,gridsim.jar它包含了gridsim和 simjava2类文件,还有一个jar包就是simjava2.jar,它仅仅包含simjava v2.0类文件。在examples文件夹下是教我们如何使用GridSim包的一些case。我也是从读这些例子的源码开始的。所做笔记也大多是把例子中的注释翻译了一下,再多就是做了一些总结。相信这样能够加深一下记忆,有助于理解。(其中可能会有些错误呦,如蒙哪位高手看过之后,还望不要见笑,能够加以指正!^_^!) Example1 该例子教我们如何运用gridsim包去创建一个网格资源。 在我们使用gridsim包之前我们需要初始化gridsim包 初始化方法:GridSim.init(num_user, calendar, trace_flag, exclude_from_file,exclude_from_processing, report_name); 参数: num_user:number of users,网格用户的个数; int calendar:当前日期,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:生成的报告文件的路径,如果不需要生成报告文件,可以初始化为null;String 一个网格资源可以包括一个或多个机器,而一台机器又可以包括一个或多个PEs((Processing Elements or CPUs)。
在我们创建网格资源的时候我们首先要声明这个网格资源包括多少机器,并将这些机器存放于gridsim.MachineList的对象中。而我们在创建机器对象时又必须声明这台机器包括多少PE,并且学要将这些PE放到gridsim.PEList对象中。因此在我们初始化GridSim之后,需要安在以下步骤来创建一个网格资源。 setp1:Create PEs and add these into an object of PEList. 方法: PEList peList1 = new PEList(); //创建一个PEList对象,用以存放PE int MIPSRating = 377; //定义MIPS peList1.add( new PE(0, MIPSRating) ); //将PE对象放到PEList中 如果一台机器包括多个PE,你还可以按照以上方法,创建多个PE对象,并将它们放到PEList中。 step2: Create one Machine with its id and list of PEs or CPUs 方法: MachineList mList = new MachineList(); //创建一个MachineList对象,用以存放Machine mList.add( new Machine(0, peList1) ); //创建一个Machine对象,并把它放到MachineList中 同理,如果一个网格资源包括多个machine的话,可以安装step2创建多个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); 参数: arch:系统结构;String os: 操作系统类型;String mList:改网格资源包括的机器;MachineList ResourceCharacteristics.TIME_SHARED:共享时间;gridsim.ResourceCharacteristics.TIME_SHARED time_zone:资源所在的时区;double cost:使用资源需要的费用;double step4: create a GridResource object. GridResource gridRes = new GridResource(name, baud_rate, seed,resConfig, peakLoad, offPeakLoad, holidayLoad, Weekends, Holidays); 参数: name:网格资源名称;String baud_rate:网络连接速度;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这两个参数应该是定义改网格资源的工作日和休息日吧。(要有点人性化吗,不过好像holidays设为空了。^_^) 以上就是创建一个网格资源的大致步骤了。概括起来就是: 创建GridSource中每个Machine所包括的PE->创建GridSource所包括的Machine->创建GridSource的ResourceCharacteristics->创建一个GridSource GridSim Package 学习笔记(一)
GridSim项目就不介绍了,在网上可以找到,它是当前流行的一种网格模拟器。 由于做论文要用到它,就只好学习如何使用它,主要是学习如何使用该项目开发的包资源。首先我们需要到GridSim项目的首页去下载GridSim项目工具包(gridsimtoolkit4.0)。在改项目中的jars文件夹中有两个jar包,gridsim.jar它包含了gridsim和 simjava2类文件,还有一个jar包就是simjava2.jar,它仅仅包含simjava v2.0类文件。在examples文件夹下是教我们如何使用GridSim包的一些case。我也是从读这些例子的源码开始的。所做笔记也大多是把例子中的注释翻译了一下,再多就是做了一些总结。相信这样能够加深一下记忆,有助于理解。(其中可能会有些错误呦,如蒙哪位高手看过之后,还望不要见笑,能够加以指正!^_^!) Example1 该例子教我们如何运用gridsim包去创建一个网格资源。 在我们使用gridsim包之前我们需要初始化gridsim包 初始化方法:GridSim.init(num_user, calendar, trace_flag, exclude_from_file,exclude_from_processing, report_name); 参数: num_user:number of users,网格用户的个数; int calendar:当前日期,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:生成的报告文件的路径,如果不需要生成报告文件,可以初始化为null;String 一个网格资源可以包括一个或多个机器,而一台机器又可以包括一个或多个PEs((Processing Elements or CPUs)。
在我们创建网格资源的时候我们首先要声明这个网格资源包括多少机器,并将这些机器存放于gridsim.MachineList的对象中。而我们在创建机器对象时又必须声明这台机器包括多少PE,并且学要将这些PE放到gridsim.PEList对象中。因此在我们初始化GridSim之后,需要安在以下步骤来创建一个网格资源。 setp1:Create PEs and add these into an object of PEList. 方法: PEList peList1 = new PEList(); //创建一个PEList对象,用以存放PE int MIPSRating = 377; //定义MIPS peList1.add( new PE(0, MIPSRating) ); //将PE对象放到PEList中 如果一台机器包括多个PE,你还可以按照以上方法,创建多个PE对象,并将它们放到PEList中。 step2: Create one Machine with its id and list of PEs or CPUs 方法: MachineList mList = new MachineList(); //创建一个MachineList对象,用以存放Machine mList.add( new Machine(0, peList1) ); //创建一个Machine对象,并把它放到MachineList中 同理,如果一个网格资源包括多个machine的话,可以安装step2创建多个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); 参数: arch:系统结构;String os: 操作系统类型;String mList:改网格资源包括的机器;MachineList ResourceCharacteristics.TIME_SHARED:共享时间;gridsim.ResourceCharacteristics.TIME_SHARED time_zone:资源所在的时区;double cost:使用资源需要的费用;double step4: create a GridResource object. GridResource gridRes = new GridResource(name, baud_rate, seed,resConfig, peakLoad, offPeakLoad, holidayLoad, Weekends, Holidays); 参数: name:网格资源名称;String baud_rate:网络连接速度;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这两个参数应该是定义改网格资源的工作日和休息日吧。(要有点人性化吗,不过好像holidays设为空了。^_^) 以上就是创建一个网格资源的大致步骤了。概括起来就是: 创建GridSource中每个Machine所包括的PE->创建GridSource所包括的Machine->创建GridSource的ResourceCharacteristics->创建一个GridSource 下面给出一些gridsim相关文献的索引和简介:
1、Visual Modeler for Grid Modelling and Simulation (GridSim) Toolkit 图形化界面方面的介绍,里面关于mvc模式的介绍还不错 2、Using the GridSim Toolkit for Enabling Grid Computing Education 主要还是围绕介绍gridsim这个仿真工具的,里面给出了时间、价格限制下的调度算法,算法的伪代码还是可以参考地 3、A Taxonomy of Computer-based Simulations and its Mapping to Parallel and Distributed Systems Simulation Tools 关于各种网络环境、分布式环境下仿真工具的一篇综述 里面提到了gridsim,simgrid,对前者的说明没什么新意。 文中认为后者中SG提供比较底层的api,开发比较自由,当然也比较难,MSG更加面向用户些,但是提供的东西就会有所限制了。我感觉这两个东西其实提供的底层api功能各有特色,虽都不怎么完善,但是仿真一般的算法还都是可以用的 4、QoS-based Scheduling of Workflow Applications on Service Grids 对于价格和时间限制的调度的一个应用例子,仍然只提供了伪码 但感觉gridsim能做得事情还是比我想象的多 里面有几个步骤值得注意一下: 1)、资源发现和执行时间预测,是通过与gis交互取得的,可见gridsim也提供了这种预测机制,不 过不知道里面有没有考虑估计的偏差率的问题,因为simgrid里面就做了10%的偏差设置,这样可 以仿真出预测失效对结果的影响 2)、工作流的任务分类,既然能分类,那成批调度应该也能做。 3)、用户执行时间限制的考虑 不过不知道gridsim能否调度的过程中可以同时分配若干任务到一个计算单元,后面的等待前面的算完后再开始执行。我所看到的相关假设都是,轮询,调度任务过去,如果发现资源忙,就调度到别的资源 |
|