CloudSim资源调度「建议收藏」

CloudSim资源调度「建议收藏」    本菜鸡的毕业设计选择的就是面向数据中心能耗优化的粒子群算法的设计与实现,别问我为啥选这个,我也不知道,在网上查询了很多之后发现也就GitHub上面就4个项目,好像也就第四能用。然后就是YouTube上面有一个印度小哥的视频,做了一个高大上的界面,用的InternetTopologyZoo做了一个界面,非常酷眩,然而没有源代码,全程是成果展示,心痛的要死。但是仅仅是云任务调度,而这…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

       本菜鸡的毕业设计选择的就是面向数据中心能耗优化的粒子群算法的设计与实现,别问我为啥选这个,我也不知道,在网上查询了很多之后发现也就GitHub上面就4个项目,好像也就第四能用。然后就是YouTube上面有一个印度小哥的视频,做了一个高大上的界面,用的Internet Topology Zoo做了一个界面,非常酷眩,然而没有源代码,全程是成果展示,心痛的要死。但是仅仅是云任务调度,而这种仿真题目,按照老师给的要求应该是虚拟机到物理机的映射的优化以及在这个基础上扩展,网上资料很少,这里我用了一点笨办法狗出来了,希望能帮到其他人(这也是我第一次写博客0.o,错误的地方大佬请指正)。

1.环境的准备

        这里讲的是用JAVA及Eclipse进行仿真,JAVA环境变量就不提了,这个肯定都会,然后从网上下载一个CloudSim的包,之后啊,就直接用Eclipse进行Import->Maven->Existing Maven Project导入,等它自动配置下好需要的一些jar包,第一步就搞定了。

 2.云环境的准备

      这里说的云环境其实也就是物理机,虚拟机以及云任务的参数,这里说的是能耗优化问题,所以物理机和虚拟机的主要参数是MIPS,也就是CPU的计算能力,其次则是内存RAM,处理器核数目PES,带宽BW以及存储空间大小几个参数,如下图:

CloudSim资源调度「建议收藏」

这个是CloudSim中的示例,我貌似修改了一些参数,记不太清了,但是无所谓,因为一般来说你都需要根据自己要做的东西进行这些参数的设计,你可以以根据这些参数进行自己参数的生成,最简单的方法就是生成多级文件,第一级命名为物理机和虚拟机的数目,如20-60等等,第二级则是可以命名为“PM-CPU”“PM-RAM””VM-CPU”等等的方法,之后再规定其参数的范围,写成几种规格的对应第一级命名个数的数据,直接写成TXT文件即可;又或者规定一定范围直接写随机数,根据自己的目的进行场景的生成(读写文件还是很简单的对吧,毕竟我这菜鸡都会)。云任务的主要参数则是长度,如果你对云任务没什么特定要求的话,你其实可以不用生成云任务的,因为它自带0.0,比如下图:

CloudSim资源调度「建议收藏」

这个自带的dvfs的例子当中用的是它2110303的云任务,其中又1052个云任务,一般来说没有什么特定要求,那么它是完全足够了的。之后的仿真也是模仿这个例子完成的。

3.读取并处理数据

      现在则是要对之前生成的数据进行一个读取了,根据上面的那个图片,在那个例子的包当中新建一个你喜欢的名字的类,如pso,首先直接复制dvfs中的内容进去,类名自己记得修改。之后进入PlanetLabRunner这个类,暴力一点方法是直接在里面写代码,不过如果之后还要进行别的操作的时候就比较麻烦,也可以新建一个你喜欢的名字的类,如Pla,同样继承自RunnerAbstract,然后在pso中把PlanetLabRunner的调用替换为Pla。之后则是对Pla编程,这里主要就是创建了hostList,vmList和cloudletList。如果你什么都不修改的话它就是用的就是Constants类中的参数和201110303中的云任务参数,这里我们要做的则是读取我们之前生成好的数据,然后带入到创建这三个列表的方法中,这是CloudSim自带的0.0,如下图。

CloudSim资源调度「建议收藏」

具体的参数和涵义我就不细说了。

4.虚拟机映射至物理的调度方法实现

       把数据都读出来了之后就要实现自己的调度方法,这里首先进入RunnerAbstract类,这里面有一个名为getVmAllocationPolicy()的方法,这个方法中有很多选择分支语句,对应了dvfs或者说pso,也就是程序入口类中字符串vmAllocationPolicy的内容,比如dvfs类对应的就是dvfs,这里首先你可以修改一下vmAllocationPolicy中的内容,之后在getVmAllocationPolicy()方法中添加一条选择语句。CloudSim资源调度「建议收藏」

 

之后进入PowerVmAllocationPolicySimple类中,你会发现其实它空空如也,真正的调度方案的实现在它的父类

PowerVmAllocationPolicyAbstract类中,这里你可以找到一个findHostForVm()的方法,这里也就是为虚拟机选择物理机的地方啦(故名思意?emmmm)。

在这里本来采用的是FF的法子,我对它进行了一点点修改。不过这里实际上是每个虚拟机创建的时候都会为它寻找一次合适的映射方法,如果把算法写在这里,如果是FF,FFD什么的倒是还行,(原谅我狭隘的只考虑做毕业设计的选择,毕竟大佬看这也没啥帮助)但是毕业设计在这方面大多数都是蚁群/粒子群/遗传等等的群智能算法,那如果虚拟机多的时候,仿真一次要跑好多次算法,每次结果还都不大一样,这就很头疼,所以应当只跑一次。我直接用的最偷懒的方法,在PlanetLabRunner类读取数据的时候就直接跑算法,然后把映射方案写到文本文件当中,然后在findHostForVm()当中读取,然后再分配。

CloudSim资源调度「建议收藏」

省略掉的是它原来的顺序方案。这个方法倒对所有的算法都还算友好,不管你是用什么算法仿真,但是都是可以用的。

5.云任务调度的实现

     仅仅完成以上四个步骤,你查看控制台会发现实际只有你虚拟机数目的个数的云任务被执行了,其他的任务绑定时会说虚拟机不可用。如果你跑过例子你会发现它云任务的分配方式是给每一个云任务分配一个虚拟机,但如果虚拟机数目少于云任务(反正我的虚拟机一般就几十个到一两百,用的是它20110303的,有1052个任务),那么其他的任务就无法执行。这个时候就需要修改一下调度方法了。最简单的方法是你自己写一个简单的调度算法,如果要求比较高,那么可以写一个PSO/GA/SA等等方法,以时间最短原则绑定云任务。其次,也可以参照刘鹏教授的《云计算》第二版一书的两个例子,写一个顺序调度和一个贪心调度方法(这里提醒一下第三版没有这个内容了,第二版第九章还是第十章才有,我要吐槽一下他第三版把那一章删掉了….)。

 

最后,关于虚拟机映射至物理机和云任务的绑定就是这样了。除此之外还可以用NetworkTopology

类当中的buildNetworkTopology()以及mapNode()方法构建网络拓扑,CloudSim自带的拓扑比较简单,如果要求较高的话则是可以通过修改这些实现自定义的拓扑连接。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182368.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言delay函数的作用,delay用法(delay函数使用)「建议收藏」

    c语言delay函数的作用,delay用法(delay函数使用)「建议收藏」是delaytodo还是delaydoing还是delaydo?还是什么啊~~问下delayvt.延期,延缓;推迟Wedecidedtodelayourholidayuntilnextmonth.我们决定将休假延至下个月。所以应该是delaydoing函数名:delay功能:将程序的执行暂停一段时间(毫秒)用法:voiddelay(uns…

    2022年6月2日
    144
  • 阿基米德三角形「建议收藏」

    阿基米德三角形「建议收藏」已知抛物线\(C:x^2=2py\),弦\(AB\)过\(C\)的焦点\(F\),过\(A,B\)两点作抛物线\(C\)的两条切线,若两切线相交于点\(P\),则(1)

    2022年8月3日
    6
  • C++编程技巧—对数运算实现

    C++编程技巧—对数运算实现可以调用 C C 中现成的算法库实现整数对数运算 比较高效的 64 位整数对数运算实现方法如下 intLog2 uint64 tn intresult if n amp 0xffffffff00 result 32 n 32 if n amp 0x00000000ff

    2025年8月27日
    3
  • 云计算安全

    云计算安全

    2021年8月1日
    72
  • 大疆测评攻略

    他说大疆测评也刷人比例还很高总结来网上的有关注意事项都是各方面搬一点,总结一下测评的题主要为:性格测试,逻辑测试,计算题,场景题。这类的题⽬我能给你们的建议只是针对性格测试和场景题这类的主观性题。DJI大疆2019在线测评-知乎https://zhuanlan.zhihu.com/p/76053124大疆招聘网申测评测试笔试题https://zhuanlan.zhihu.com/p/157371591大疆在线测试三段论https://bbs.yingjiesheng.com/thr

    2022年4月4日
    100
  • 详解 傅里叶变换的物理意义

    详解 傅里叶变换的物理意义这是一篇辅助理解傅里叶变换的博客,下面如果有不适合或错误的表达,请大家在评论区给我留言,我一定积极修改。一、傅里叶分析关于任意函数的傅里叶变换频域(频率,振幅、相位三维正交)图像,韩同学给出一个形象的解释,这里借用韩同学的图片准确表达一下,一个函数的傅里叶级数展开如下式,二、傅里叶变换在了解了时域与频域的空间特征后,那我们再来看下傅里叶变换,这里可以看潘工的文章,潘工有趣的引入了:简单→分解→正交→内积思想,并提出函数之间内积(投影)的定义,,其中g表示共轭。e^ix本质上是一个单位圆,则原

    2025年7月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号