1. 如何衡量一个时间算法的时间效率
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。
并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。算法的时间复杂度是指执行算法所需要的计算工作量。
时间效率,一定生产时间内,机器实际运转时间与理论运转时间之比,通常用百分率表示。与设备自动化程度、速度、卷装尺寸、工人操作熟练程度及看台数有关。
(1)如何对算法耗能进行评估和优化扩展阅读:
点在空间中变化对点的描述称为被描述点相当于该点的时间【该点运动到某一位置时,被描述点都会有唯一的对应位置,称为此时被描述点的位置】。被描述点可以随时间变化位置不变,可知时间与被描述点的位置有函数关系。
空间使事物具有了变化性,即因为空间的存在,所以事物才可以发生变化。空间是没有能量的事物,即当事物能产生变化时,变化产生的能量已经和阻碍的能量相互抵消。
天文测时所依赖的是地球自转,而地球自转的不均匀性使得天文方法所得到的时间(世界时)精度只能达到10-9,无法满足二十世纪中叶社会经济各方面的需求。一种更为精确和稳定的时间标准应运而生,这就是“原子钟”。
世界各国都采用原子钟来产生和保持标准时间,这就是“时间基准”,然后,通过各种手段和媒介将时间信号送达用户,这些手段包括:短波、长波、电话网、互联网、卫星等。这一整个工序,就称为“授时系统”。
2. 如何度量算法的性能
算法是否高效决定你后面开发的效率和繁琐度。一般最好用博弈论测试下,核心算法不行的话最好推倒重建比较好些。
3. 如何优化策略降低系统能耗
针对云计算系统在运行过程中由于计算节点空闲而产生大量空闲能耗,以及由于不匹配任务调度而产生大量“奢侈”能耗的能耗浪费问题,本文提出一种通过任务调度方式的能耗优化管理方法。
高能耗是云计算系统最为严重的问题之一
云计算系统中,除了处理任务时产生的必要能耗开销,其运行过程中还存在能耗浪费的现象
解决方案
用排队模型对云计算系统进行建模,分析云计算系统的平均响应时间和平均功率,建立云计算系统的能耗模型;
提出基于大服务强度和小执行能耗的任务调度策略,分别针对空闲能耗和“奢侈”能耗进行优化控制。基于该调度策略,设计满足性能约束的最小期望执行能耗调度算法ME3PC (minimum expectation execution energy with performance constraints).
结果
大量实验表明,本文提出的能耗优化管理方法在保证其性能的前提下,大幅度降低了云计算系统的能耗
下一步工作
将研究在给定和真实的云计算系统体系结构下,如何根据任务到达率的大小和分布规律,决策系统中应该处于运行状态的计算机个扮胡数,结合关闭/休眠技术和电压动态调整技术,进一步对云计算系统的能耗进行优化控制,并且将研究的理论成果在实际云平台上进行评测,以验证其正确性
能耗
能耗分类
空闲能耗:由于计算任务达到的随机性,使得单位时间内到达的任务量时而稀疏,时而密集,而现有的云计算系统通常是长时间处于开启状态,等待计算任务的到达。但是当计算机处于空闲状态时,其空闲功率会占峰值功率的50%~60%。因此,云计算系统会产生大量的空闲能耗。奢侈能耗:由于云计算系统中通常包含不同的计算机,实验结果表明,不同计算机对不同计算任务的执行功率和响应时间一般不同。例如,同一图像处理任务分别在CPU 和GPU 上的执行功率和响应时间不同,任务执行完成后,产生的总能耗也不同。因此,当未考虑能耗因素时,不匹配的调度方式会造成:本来用较低能耗就能解决问题,但却用了较高能耗。本文把由于任务的不合理调度而浪费的能耗称为“奢侈”能耗。执行能耗:执行能耗可定义为:任务在计算机上运行时,指令和数据驱动计算机硬件运转所产生的能耗
传统节能的方法
关闭/休眠技术:最大饥模限度的降低空闲能耗,缺点是当使用计算机时需要较长的启动时间,导致系统性能一定程度的下降
电压动态调整技术:为了便于研究,本文假定执行功率为任务整个执行过程的平均耗电功率。根据CMOS 电路动态功率公式Pdynamic~αCV2f 可知,动态功率与厅肢拦电压的平方成正比。因此,降低处理器的电压可以降低处理器的动态功率。但该方法的缺点是,随着电压的下降,处理器的性能会随之下降
虚拟化技术:可实现多个任务在一个计算机的不同虚拟机上运行,通过提高计算机资源利用率,以减少所需计算机数量的方式降低能耗。虚拟化技术实现了计算机资源从物理实体向虚拟实体的迁移,提高了计算机资源的利用率。但虚拟化,特别是深层次的虚拟化本身也要付出高昂的效能代价,因为虚拟化技术通过对底层硬件部件到高层服务应用的层层虚拟,每一级的虚拟都造成了效能的损失。
任务和系统模型
随机任务模型
根据任务对计算机资源的需求特征,可分为计算密集型、通信密集型、数据密集型和I/O密集型等。
随机到达云计算系统的任务可以用三元组(T,Λ,W)表示,第i类任务可以表示为(ti,λi,wi)。ti表示第i类任务,λi表示ti任务单位时间平均到达数量,wi表示ti任务的计算量
云计算系统模型
现有云计算平台的硬件基础设施通常是架构在大规模廉价服务器集群之上,系统中的不同服务器或计算机通常是由不同公司生产,有不同的硬件配置。这些计算机不仅有不同的功能和性能,其耗电的功率也不同,具体可表现为:功能异构、性能异构、空闲功率和峰值功率异构、执行功率异构;
云计算系统可以定义为六元组:(C,Pbusym×n,Pidle,Ppeak,Um×n,S)
+a7+rW9tO//Ksbv6oaLPtc2z1tDL++NDQus/+1xMrHvbW1zc+1zbPUy9DQuf2zzNbQsvrJ++8wsfUxrzGy++"http://www.it165.net/uploadfile/files/2014/0508/20140508200129405.jpg" alt="\">
问题描述
根据2.1节和2.2节的分析,并结合能耗的计算公式E=P*T,则任意一个任务从进入云计算系统到执行完成离开所产生的期望能耗可表示为
\
在给定任务类型、确定云计算系统体系结构的条件下,只有调度概率Pij的值是根据调度策略的不同而动态变化的,云计算系统的期望能耗与任务和计算机之间的调度策略有关
能耗优化管理
实质
根据任务的到达时间和类型、不同计算机的功率和性能、计算机实时的负载情况,对任务进行合理调度,使系统在满足一定性能的条件下,降低云计算系统运行过程中产生的空闲和执行能耗
假设
根据任务对计算机资源的需求特征,可分为计算密集型、通信密集型、数据密集型和I/O密集型等。不同类型任务要处理的数据形式和问题规模一般不同。为了便于研究,本文假定同一类型任务的计算量相同
由于用户服务请求的自主性、地域的分布性,导致不同用户提交的任务之间通常没有优先约束关系,即任务是独立的
假设对于系统中的每个计算机,任务的到达间隔相互独立,且服从同一参数的负指数分布
每个计算机对不同任务的服务时间也相互独立,且服从同一参数的负指数分布
到达间隔时间与服务时间相互独立
不同类计算任务以不同的概率调度到不同的计算机上
性能约束的最小期望执行能耗调度算法ME3PC(minimum expectation execution energy with performance constraints)
调度器针对不同的情况,采用不同的调度策略,详情请参考第3章
根据负载情况,将节点分在三个队列:Clight、Cnormal、Chigh,
如果Clight不为空,则优先考虑集合Clight中的计算机,并采用基于大服务强度的任务调度策略,使对tCi类任务有大服务强度的计算机cCj有较大的调度概率,其中j∈Clight
Clight为空,Cnormal不通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq/+aTwvc3ViPsDgyM7O8dPQvc/Qoda00NDE3LrEtcS8xsvju/pjQzxzdWI+ajwvc3ViPtPQvc++QzxzdWI+ViPrK7zqq/1aOsvLTL+2yLW9uLrU2Nfu0KG1xLzGy+O7+snPCjxwPgo8aW1nIHNyYz0="http://www.it165.net/uploadfile/files/2014/0508/20140508200130420.jpg" alt="\">
定理满足性能约束的最小执行能耗调度算法ME3PC的最坏时间复杂度为O(3mn),其中,m为任务的类型数,n为云计算系统中计算机的个数。
实验
实验环境的设置
为了验证ME3PC算法的有效性,本文使用Matlab 的离散事件模拟工具进行模拟实验。实验环境涉及的相关参数以及取值或取值范围见下表。
实验中任务分为4 类。第i类任务的到达间隔时间服从参数为1/λi的负指数分布。该间隔时间可通过负指数分布函数exprnd(1/λi)来生成,其中,λi的值在[10,15]区间随机生成。根据任务的到达间隔,利用函数cumsum(?)可得到第i 类每个随机任务到达系统的时刻。最终可确定所有6000个任务到达系统的时刻。计算机cj对ti类任务的服务时间服从参数为1/μij的负指数分布,同样,服务时间也通过函数exprnd(1/μij)来生成,参数μij的值在[1,5]区间随机生成
为了让模拟系统的运行存在平衡状态,需要满足条件\
\
实验与结果分析
为了进一步说明ME3PC算法的有效性,本文又设计了最小执行功率调度算法(minimum execution power,简称MEP),并将ME3PC与MEP、经典MIN-MIN 算法进行比较。其中,MEP的算法思想是:在任务调度时,将任务调度到执行功率最小的机器上,而不考虑该计算机当前的负载情况以及执行该任务的服务时间。MIN-MIN是针对独立任务的动态调度算法,广泛应用于同构或异构分布式并行计算环境,有良好的调度性能。本文分别从系统执行任务的平均能耗、任务的平均响应时间、系统的平均功率、负载平衡和可扩展性这5个方面对3种算法进行对比分析
从图2可以看出,采用MEP算法时系统的平均功率最小,ME3PC略大于MEP,MIN-MIN的功率最大,且远大于ME3PC和MEP。分析原因是,MEP算法专注于系统执行功率的优化,任务调度时只将任务调度到执行功率最小的机器上,因此系统平均功率最小,但没有考虑调度的机器性能,因此总体性能最差。MIN-MIN算法则相反,只专注于任务的完成时间,而不考虑能耗、负载平衡等其他因素,因此响应时间最小,但是系统平均功率最大。ME3PC算法则同时考虑了功率和性能因素,虽然系统功率较MEP算法平均增加了6.4%,响应时间比MIN-MIN算法平均增加了5.7%,但是任务在系统中的所产生的能耗却最小,如图4所示。究其原因是:(1)由于ME3PC算法针对空闲或轻载计算机采用了大服务强度优先的调度策略,大大降低了系统中计算机出现空闲的概率,使系统的利用率高于MEP和MIN-MIN。其中,采用ME3PC算法时,系统产生的空闲能耗平均是MEP和MIN-MIN算法的81%和73%,如图5所示。(2)由于优先对空闲和轻载计算机进行调度,最大限度地避免了负载不平衡的发生。因此,ME3PC算法保证了系统的负载平衡,如图6(a)、图6(b)所示。可见,只有同时考虑功率和性能因素才能真正降低云计算系统的能耗。
从实验结果中,我们发现了一个有趣的现象:当计算机个数为1时,3种算法下的系统平均功率、任务平均响应时间和任务平均能耗自然都相等。但是随着计算机个数的增加,系统执行任务的平均能耗却呈线性下降。当计算机个数为8时,系统执行任务的平均能耗最小。随着计算机个数的继续增加,系统执行任务的平均能耗开始增大,且呈指数级增长。究其原因是:(1)当计算机个数从1增加到8的过程中,任务平均响应时间呈指数级减少(如图3所示),但是系统的平均功率的增势却基本趋于平稳(如图2所示),这导致系统执行任务的平均能耗在该过程中是逐渐降低的,并且由于此时系统平均功率的绝对值较小,因此降低的趋势呈线性。(2)当计算机个数从8增加到128的过程中,任务平均响应时间下降的趋势趋于平缓(如图3所示),但是系统的平均功率的增势却呈指数级增加(如图2所示),这导致系统执行任务的平均能耗在该过程中是逐渐增加的,并且由于此时系统平均功率的绝对值较大,因此增长的趋势呈指数级。由此可见,在等能耗的条件下,计算机个数为8时系统有最好的扩展性。对于实际的云计算系统,如何根据系统的体系结构、任务到达的规律确定系统中应该开启或关闭的机器个数,以及开启或关闭哪些机器进行能耗的优化控制,将作为下一步的研究内容。
4. 应该从哪些方面分析和评价算法的性能
分析评价算法性能的四个标准:
1.正确性
能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。
2.易读性
易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。
3.健壮性
输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。
4.时空性
算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。
算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。
(4)如何对算法耗能进行评估和优化扩展阅读:
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。
(1)、有穷性
一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)、确定性
算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。
(3)、可行性
一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
(4)、输入
一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。
(5)、输出
一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。
5. 如何衡量一个算法的优劣有哪些标准
如何衡量一个算法的优劣,见人见智。一个好的算法首先是要能够满足场景的需求,其次是在能够最大限度的节省资源(最低成本原则),最后是实现逻辑简单,比较容易理解(本质上也是最低成本原则)。但是,在现实中硬件资源不变,算法不变情况下,算法执行的效率提高,相对应往往是资源消耗增加。一个合格的算法是在一个可以接受的范围内满足场景需求,而一个优秀的算法则是在满足场景需求的基础上,最大限度的节省资源,简化逻辑。
比如我要完成一项计算任务,要求是在5分钟执行完成。现在有算法1:需要执行1分钟,消耗内存8G;算法2需要执行3分钟,需要消耗内存256M。那么,我们应该如何选择呢?首先,这两种方案都能满足我们的需求;其次:算法1的需要消耗的资源是算法2的32倍,算法1的效率是算法2的3倍。在这种满足需求的情况下,往往更倾向于选择算法2。衡量一个算法的优劣往往要评估多方因素,结合实践,综合比较最终得出结论。
衡量一个算法的的标准主要有3个: 算法的执行效率 , 算法的内存消耗 和 算法的稳定性 。