E(T)=Ec(T)+En(T)+Eo(T) (1)
其中,Ec(T)表示计算机的能耗,En(T)表示各种网络设备的能耗,Eo(T)表示空调等附属设备的能耗,使用焦耳作为上述能耗的单位。
3.3任务量
本文设计的任务量度量不是面向硬件的,而是面向应用的,因为只有这样才能够清晰地反映软件系统的特征,使任务量成为一个有机整体,使软件层的能效得到更好的优化。为了使模型更通用,并且与具体算法无关,其度量结果又能够很好地反映算法的特征,本文采用底层硬件系统的性能来度量任务量。
3.4有效任务量
任意一个计算本质上包括两个部分的任务:
(1)执行算法的运算任务。执行算法的运算任务是由CPU完成的,可以通过CPU的工作状态度量。
(2)I/O任务。I/O操作分为内存、本地磁盘和网络数据I/O。
3.4.1内存I/O
从算法的角度来看,为了提高性能而读写内存,内存读写的次数将会直接影响到磁盘和网络的I/O次数。原因有三个,一是内存属于媒介设备,它是外部存储和CPU的中间媒介,主要功能是调和CPU与外部存储的速度矛盾。与作为媒介的各级缓存一样,所有被读取的外部存储数据都需要经过内存,因此,这部分的内存读写不应该作为有效任务量。二是内存使操作系统做了很多性能上的优化,从而操作系统对内存的读写需求不是来自于算法或软件系统。在Linux系统中,内存分为四个部分,即实际内存、共享内存、Buffer、Cache。Cache为已经读取的磁盘数据的缓冲区,Buffer为即将被写入磁盘的数据的缓冲区。在使用过程中,只要还有未被占用的内存,Buffer和Cache就会充分利用。因此,操作系统对内存的读写不仅仅包括对实际内存和共享内存的读写,以至于和仅对两者读写的结果相差比较大,这体现了内存的不可测量性。三是磁盘和网络的读写可以真实的反映一个任务输入的数据量、计算过程中产生并存储在外部存储的数据量、结果数据量。综上所述,本文不将内存的读写数据量算入有效任务量。
3.4.2磁盘I/O
理论上来说,由于所有的输入数据都由磁盘提供,所有的输出数据都被保存在磁盘里,所以将磁盘I/O作为有效任务量。
3.4.3网络I/O
虽然网络I/O减少不会对本地I/O造成影响,但是由于网络I/O具有分布式计算的特点,可以在很大程度上决定计算的性能,并且网络I/O的大小与算法相关,所以将网络I/O作为有效任务量;但是那些与总线和网络设备一样参与数据传输的设备的I/O操作,不会影响到其他设备的I/O操作,因此,这部分的网络I/O不计入有效任务量。
3.4.4CPU运算量的量纲统一
用磁盘和网络的工作状态来度量I/O任务量,则 (2)
其中, 为T时间内的任务量, 是CPU的运算量, 是磁盘读写的运算量,L (T)是网络收发的运算量,符号 和 表示聚集函数。下面研究怎样使 、L (T)、L (T)的量纲统一。 可以通过执行的浮点运算量来度量,则在任意时刻t,
(3)
其中, 是t时刻CPU的频率, 是t时刻CPU的使用率, 是CPU的核心数, 是每周期的浮点运算次数。由于CPU每次都是对两个长度的机器字长进行浮点运算,所以(3)式可以写为
(4)
其中, 表示机器字长,则 的单位为 云计算能耗模型与度量方法研究(3):http://www.751com.cn/jisuanji/lunwen_3913.html