主页 英特尔® 软件网络

创建高能效软件(第二部分)

作者: Bob Steigerwald、Rajshree Chabukswar、Karthik Krishnan、Jun De Vega
发布日期: 2007年9月13日 | 最后修改日期: 2008年8月27日
数据效率

正如简介中所述,数据效率可通过最大限度减少数据移动来降低能量成本。[Ref2]中的总结表明,以下设计可确保数据效率:

  • 能够最大限度降低数据移动的软件算法
  • 能够保证数据靠近处理基元的内存层次
  • 能够有效利用高速缓存的应用软件

我们已经在计算效率中证明了数据效率可提供性能优势和能量节省。那么,以下章节将为您介绍可使用的数据效率方法能在哪些领域为您带来能量节省:DVD 回放、本机命令排队(NCQ)以及高速缓存使用。

DVD 回放[5]

这一部分将分析 3 个不同的 DVD 回放软件应用的功耗,并提供关于降低功耗的建议。在本次研究中,我们分析了 3 个 DVD 回放应用(DVD 应用 1、应用 2 和应用 3),并采用多种配置进行功耗测量,重点将最大功率节省模式与无功率节省模式进行了比较。其中,用于分析的工作负载是一款 DVD 内容的标准定义,随 MobileMark* 2005 [6] 性能指标评测工具一起发运。为了降低 DVD-ROM 内容的播放功耗,我们还将提供最佳战略推荐。请参见附录 A 了解用于这些试验测试环境的介绍。

测试观察

作为基准,我们将图 9 中测量的数据用于目标节能分析。图 9 表明了 DVD 驱动器旋转是功耗最大的一项内容(短时间内需要 4 瓦以上的能量),因此可通过减少旋转来节省能量。连续读取 DVD 需要消耗大约 2.5 瓦的能量,这是另一个潜在的节能领域。

图 9:典型 DVD 回放状态的基准功耗

图 10 显示了一个 DVD 回放应用中大约 20 分钟的实例,可代表所有以最高性能模式(无功率节省)运行的应用的功率需求。这里值得注意的是:DVD 播放器持续读取的平均功耗约为 2.5 瓦。

图 10:DVD 持续读取时的功率

图 11 显示了当 DVD 设备降速并且不再读取时的功率特征。这一特征在应用 1 采用最大功率节省模式时最为明显。

图 11:最大功率节省模式下的 DVD 功率

 

图 12:应用 2 的 CPU 功率曲线  

 

图 12 中的数据来自应用 2,显示了无功率节省模式与最大功率节省模式之间的巨大差距。究其原因,是由于在无功率节省模式中,应用将系统功率设置改为以可用最大频率运行的状态,并在运行结束后又恢复了原始功率设置。通过观察我们可以清晰地看出,通过在软件设计中对 CPU 能耗加以考虑,即可潜在节约能量。

测试结果

表 1 显示了 3 个 使用 MobileMark 2005 DVD 回放负载的DVD 回放应用所测量出的实际能耗。图 13 则反映了数据情况。值得注意的是,最差能耗情况(应用 2,10143 mWHr)与最佳能耗情况(应用 3,6023 mWHr)之间的差距竟超过了 4000 mWHr,这似乎完全归结于应用开发人员所做的设计方案选择。根据换算,节能比例大约为 40%。对于一块使用时间为 4 小时的电池而言,即使是 10% 的能量节省也可支持电池使用时间延长 24 分钟。

应用

模式

DVD 能耗(mWHr)

CPU 能耗(mWHr)

平台能耗(mWHr)

DVD 应用 1

无节省模式

869.84

663.92

6618.76

最大节省模式

263.41

762.99

6039.41

DVD 应用 2

无节省模式

897.82

3329.53

10143.56

最大节省模式

895.57

1064.02

7509.18

DVD 应用 3

无节省模式

780.93

703.25

6202.04

最大节省模式

781.04

554.87

6023.57

表 1:DVD 回放期间的能耗

图 13:DVD 回放期间的能耗

表 2 中的分析为我们表明,回放期间在 CPU 和 DVD 上测量到的能量节省总和,是总体平台能量节省的主要原因所在(从 83% 至 87%)。

应用

模式

DVD + CPU 能耗(mWHr)

平台能耗(mWHr)

DVD/CPU 节省比例

DVD 应用 1

无节省模式

1533.76

6618.76

87.57%

最大节省模式

1026.4

6039.41

DVD 应用 2

无节省模式

4227.35

10143.56

86.08%

最大节省模式

1959.59

7509.18

DVD 应用 3

无节省模式

1484.18

6202.04

83.08%

最大节省模式

1335.91

6023.57

表 2:DVD 和 CPU 所占的节省比例

建议

根据以上研究结果,我们可以总结出有助于在 DVD 回放期间节省能量的三条指南:

缓冲:以上研究表明,相比其它技术,DVD 回放应用 1 部署的缓冲技术将 DVD 的功耗减少了 70%,平台总功耗减少了约 10%。

最大限度减少 DVD 驱动器使用:为了节省功率,建议您尽量减少 DVD 旋转、减速和读取的次数。

让操作系统来管理 CPU 频率:我们不推荐通过改变 CPU 功率设置来以最高的频率运行处理器。操作系统将采用 Intel SpeedStep® 技术,并随处理需求的增加来自动提升操作频率。

磁盘 I/O[7]

本部分不仅总结了磁盘在进行连续/随机读取和本机命令排队过程中的功率特性分析,而且还分析了文件碎片和磁盘颠簸情况。此外,这一部分还提供了磁盘 I/O 在不同使用模式和功率影响下的功率优化指南。如欲了解更多详细信息和代码范例,请参考 [Ref3]。

背景

由于我们的分析基于硬盘(HDD)的典型性能特点,因而会受到转速RPM、查找时间、旋转延迟和持续传输速率等因素的影响。此外,系统实际的吞吐率还将取决于数据在硬盘上的物理位置。由于磁盘的角速度恒定,因此在每次旋转时,从磁盘最外周读取的数据要比内周多。

一旦应用发出读取请求,磁盘必须首先加速,并且读/写接头必须定位于适当的象限,然后才开始读取数据并随意放在操作系统文件系统的高速缓存中,最后复制到应用缓冲中。

表 3 的测量基于所用 SATA 硬盘的理论规范,它为我们显示了这些操作所花费的相对时间(以毫秒为单位)。鉴于不同硬盘的具体数值可能有所差异,因而这里仅给出了相对时间。(平台规格:英特尔® 酷睿™ 双核处理器 2.0 GHz、Jamison Canyon* CRB、2x512 MB DDR2、40 GB SATA 5400RPM-2.5 英寸移动式硬盘,Windows* XP-SP2)。图 14 显示了闲置、读/写和加速期间的平均功耗。

平均查找时间(毫秒)

平均延迟时间(毫秒)

主轴起转时间(毫秒)

12

5.56

4000

表 3:硬盘性能数据 图 14:硬盘平均功耗

从数据中我们可以清晰看出,硬盘加速所消耗的时间和功率最多。事实上,此时的功耗曲线类似于上文介绍的 DVD 播放器。我们在执行磁盘 I/O 的应用时,应将这种功耗情况考虑在内,并针对硬盘的功耗和性能进行优化。

测试结果

我们进行了 5 次单独的试验来进行评估,目的是为了更好地了解硬盘在使用不同 I/O 方法时的能耗情况:

  • 数据块大小对连续读取的影响
  • 多媒体回放期间的缓冲影响
  • 文件碎片的影响
  • 本机命令排队(NCQ)对随机读取的影响
  • 多线程代码的磁盘 I/O

具体的设置、结果和建议如下所述。如欲了解完整的详细信息,请参见[参考资料]。

数据块大小对顺序读取的影响

前提

读取大量连续数据时,较大数据块中的数据读取需要较低的处理器利用率和较少的能量。

设置

观察

建议

我们创建了一个大文件(约 1 GB),并以不同大小的数据块来读取整个文件。根据所有磁盘 I/O 的常规经验,我们在每次运行之间重启系统,以避免文件系统的高速缓存干扰。

我们通过使用从 1 比特(B)到 64 KB 的不同尺寸的模块来衡量 CPU 利用率。正如我们所预测的那样,CPU 利用率和所需能量随着模块尺寸的增加而降低。CPU 利用率和能耗随模块尺寸的增大而实现平衡。

  • 使用 8 KB 或更大的模块来改进性能
     

 

多媒体回放期间的缓冲

前提

对于多媒体回放,提前读取并将媒体内容置于高速缓存中将可节省能耗。

设置

观察

建议

我们通过两种方式——在约 2 KB 的数据块中读取,或者读取/缓冲整个文件,来对读取/播放一个 MP3 文件(4 MB)所消耗的能量进行比较。

与 DVD 回放试验相类似,读取小型数据块中的数据时,硬盘仍然处于活动状态,并且将比读取整个文件、从缓冲中访问、以及令硬盘处于闲置状态消耗更多的能量。

  • 在多媒体回放中使用缓冲战略来最大限度地减少磁盘读取次数并节省能量
     

 

文件碎片的影响

前提

读取片断文件的性能和能量成本要高于读取连续文件的成本。

设置

观察

建议

以片断和非片断状态分别保存一个 256 MB 的文件。然后读取文件并比较结果。

正如我们预计的那样,读取片断文件的时间比非片段文件的时间要长 2 倍以上(读取片段文件约为 26 秒,而读取连续文件则仅需约 11 秒)。因而,节能比例可见一斑。

  • 可通过在创建大型顺序文件时进行预先分配来避免这一结果的产生,如 .Net* 框架中的 SetLength)。
  • 使用 NtFsControlFile() 来协助文件碎片整理
  • 最终用户可以定期对数据卷进行碎片整理
     

 

本机命令排队对随机读取的影响

前提

有效使用带有 NCQ 的异步 I/O 来改进性能和节约能耗。

设置

观察

建议

我们选择了一组随机文件,并从每个文件的随机偏移位置处读取 64 KB。最后将使用同步 I/O 的测量结果与借助 NCQ 进行异步处理的结果进行比较。

使用 NCQ 时,总时间不仅减少了约 15%,而且任务的总体能量也有类似比例的降低。

  • 处理随机 I/O 的应用或具备多个文件的 I/O 操作时,应采用异步 I/O,以充分利用 NCQ 的优势。
  • 除此之外,将所有读取请求进行排队处理,并利用事件或回叫来确定读取请求是否完成。
     

 

多线程代码的磁盘 I/O

前提

读取片断文件的性能和能量成本高于读取连续文件的成本。

设置

观察

建议

为了便于分析,我们开发了一个基于 IJG 库的 bitmap-to-JPEG 算法,从而可将大量 BMP 转化为 JPEG。此外,我们还创建了该应用的串行版本以及几个多线程版本":

  1. 2 条线程拆分文件并独立工作——互相争夺磁盘访问
  2. 增加一条线程来协调缓冲读/写工作并按顺序处理请求
  3. 使用排队 I/O 来调整线程,以优化读/写操作

由于 I/O 争用和颠簸问题,线程解决方案 1 几乎没有为串行版本带来任何的性能改进。解决方案 2 和 3 (缓冲 I/O 和排队 I/O)提供了非常明显的性能提升(约为 1.52-1.56 倍提升)。相比串行版本,解决方案 2 和 3 还减少了约 30% 的总能量成本。

  • 当多条线程同时争用磁盘 I/O 时,应对 I/O 呼叫进行排队,并充分利用 NCQ 的优势。重新安排顺序可帮助优化请求、改进性能和节省能耗。
  • • 如果由于多条线程争用磁盘而导致明显的硬盘颠簸,那么应将所有的读/写操作整合到一条线程中,以减少读/写磁头的颠簸,并降低硬盘旋转的频率。
     

 

通过无线方式进行文件转换

另一种改善数据效率的方法,是在研究笔记本电脑功耗时,将压缩和未压缩数据通过无线网络进行传输,以确定是否还有更加高能效的方法。在这些试验中,我们重点关注压缩率或文件大小对功耗的影响。而非比较各种压缩算法的执行能力。

我们进行研究的目的,旨在获取能够帮助解答以下问题的数据:

  • 上传之前最好压缩一下数据,还是不对数据进行压缩?
  • 下载前是否也最好对文件进行一下压缩?
  • 无线网卡、CPU 利用率、数据压缩比以及传输时间将对笔记本电脑的功耗造成何种影响?

我们使用的一般方法,是传输大小不一的压缩(使用 GZip 1.2.4)和未压缩数据,并利用 Fluke NetDAQ3 来测量平台功耗。如欲了解有关方法和设置的完整详细信息,请参见有关这一话题的白皮书。[8] 请您注意的是:该功耗研究仅涉及到客户机端(笔记本电脑),而不包括服务器端在内。

测试参数

为了获得可重复使用的一致结果,我们采用了以下参数进行实验:

  1. 为了最大限度降低噪音和干扰,我们在研究中使用了受控网络:
    • 我们在独立环境中设置了无线网络,以减少噪音和干扰
    • 我们采用了专用的专有网络(通过接入点设备),而其中只有一个用于传输数据的客户端
  2. 数据集:具有不同压缩比的各种“txt”和“tif”文件
  3. 压缩算法:
    • 鉴于 Gzip 1.2.4*是开放源代码,并且易于定制,因此我们选择了该算法。
    • 尽管不同的压缩算法可能会影响压缩比,但是本研究所关注的只是压缩比的大小,而非算法。因此 Gzip 1.2.4* 与其它压缩算法之间的区别不在本次研究范围之列。
  4. 我们对测试运行进行了调整,以支持工作负载能够保持足够长的时间(持续时间),从而尽可能地减少平台功率测量中所会出现的错误。每次运行的功耗为 100 次迭代的平均值。

数据集和测试流程

对于是否发送/接收未压缩数据,或者是否在传输数据前使用压缩方式,给定数据集的压缩比起着至关重要的作用。表 4 显示了 5 个不同的数据集,及其相应的数据大小和压缩比。压缩比按照从低(1.2 倍)到高(14.04 倍)的顺序排列。

数据集

初始大小(KB)

压缩比 Gzip 1.2.4

说明

Tulips.tif

1179

1.2 倍

中型文件,压缩比很低

Book1

751

2.45 倍

中型文件,压缩比较低

World95.txt

2935

5.06 倍

大型文件,压缩比较高

Pic

502

8.96 倍

小型文件,压缩比较高

Frymire.tif

3708

14.04 倍

大型文件,压缩比很高

表 4:数据集来自 Jeff Gilchrist 存档压缩测试 (ACT)*(ACT 为一系列数据压缩基准评测)。如欲了解更多详细信息,请访问:http://www.compression.ca/act/act-files.html*。

执行测试时,我们将测试系统(双核英特尔® 酷睿™ 处理器/客户参考主板)网络映射(通过接入点设备)到服务器的文件系统,并采用 Windows™ XP 内部的“COPY”命令,通过无线网络将数据从客户机传至服务器,反之亦然。为了降低意外事件的影响,我们在测量功耗时,还对每次试验都重复进行了 100 次。最终的功耗数据除以 100,便得出了该数据集的平均功耗。

每一数据集的传输流程如下:

  • 将未压缩文件上传到服务器上
  • 压缩文件,并将压缩后的文件上传到服务器上
  • 从服务器中下载未压缩文件
  • 从服务器中下载压缩后的文件,并在客户端上进行解压缩

无线适配器功耗曲线

在研究各种案例之前,我们先来看一下无线适配器的功耗曲线。表 5 列出了无线适配器在禁用、开启但未连接、开启并连接到接入点设备,以及开启但正在搜索信号等状态下的测试平台功耗曲线。

场景

平均平台功耗(瓦)

平均 WLAN 功耗(瓦)

总计

WLAN 无线关闭

13.2

0

13.2

WLAN 无线开启(未连接到接入点设备)

14.1

0.35

14.45

WLAN 无线开启(连接到接入点设备)

14.2

0.45

14.65

WLAN 无线开启(搜索接入点设备)

15.7

1.6

17.3

表 5:WLAN 适配器平均功耗

无线网卡在全力搜索接入点设备(AP)时虽然只需极短的一段时间,但这部分消耗的功率却是最大。当“无线开启”并且系统连接至网络但并未传输任何数据时,平均功耗约为 450 mW。但在搜索接入点设备(AP)时,功耗约为 1600 mW。

观察

CPU 曲线

我们发现,在压缩和解压缩数据时 CPU 利用率较高(压缩时为 99%-100%,解压缩时为 84%-100%);而在传输数据时,使用率却会下降到 4%-7%(无论数据是否压缩)。不出我们所料,在压缩和解压缩时,处理器频率能够达到最大值(最高的性能频率状态)。而在通过网络传输数据时,由于 CPU 使用率较低(4%-7%),处理器的性能频率状态也保持在较低水平。

上传功耗

在此项研究中,我们在不同运行状态下,将上传未压缩数据的总功耗,与压缩后再上传数据的总功耗进行了比较。图 15 显示了上传未压缩数据与压缩后再上传的数据功耗之间的对比情况。图中的辅 Y 轴表示指定数据集的相应压缩比。值得注意的是:具有较高压缩比(高于 1.2 倍)的数据集在压缩和上传时具有一定的功耗优势。而对于具有最低压缩比(在本例中为 1.2 倍)的数据集而言,上传未压缩数据却能实现少量的能量节省。

图 15:通过 WLAN 上传的总功耗(能量)

下载功耗

在此项研究中,我们同样使用了上述数据集来测试下载功耗的情况。图 16 显示了下载未压缩数据与下载压缩数据然后进行解压缩两种情况下的功耗对比。

图 16 显示了每个数据集的平均功耗情况,以及辅 Y 轴上的压缩比。如图所示,对于具有较高压缩比的数据集,下载压缩数据然后解压缩,比下载未压缩数据的能效要高。对于具有最低压缩比(在本例中为 1.2 倍)的数据集,下载未压缩数据更为节能。对于“Book1”数据集(压缩比为 2.45 倍)而言,下载未压缩数据与下载数据并进行解压缩相比,功耗相差无几。

图 16:通过 WLAN 下载的总功耗(能量)

结论

通过无线网络传输的数据文件大小直接影响着传输所需的时间,因此这时所消耗的功率就不限于无线网卡,而是整个平台。为了提高数据效率和能效,我们推荐采用以下方法:

  • 对于具有较高压缩比(大于 3.0 倍)的数据集而言,相比传输未压缩的数据,上传/下载压缩数据能够节省更多功率。对于压缩比较高的数据集而言,应用传输压缩数据将非常有利。
  • 对于压缩比较低(在本例中约为 1.2 倍,几乎没有压缩)的数据集而言,在上传之前压缩数据,或在下载之后解压缩数据将会造成额外的开销。针对这种情况,我们建议采用上传/下载未压缩数据的方法。
  • 对于压缩比约为 2.5-3.0 倍的数据集而言,上传/下载压缩数据与上传/下载未压缩数据在功率节省方面并无太大差别。

 


[1] 您可能会注意到,它并非总是正确的,这点非常有趣。由于处理器状态与电压之间呈平方关系,我们可以得出:相比以更高的 P 状态运行更短时间相比,流程以更低的 P 状态运行更长时间实际上消耗的能量更少。这有待于我们做进一步研究。

[2] 如欲了解这一主题的更多详细信息,请访问:http://www.intel.com/technology/magazine/computing/mobile-power-saving-0506.pdf 

[3] http://us.fluke.com/usen/products/NetDAQ.htm?catalog_name=FlukeUnitedStates 

[4] GV3 是微软提供的一个补丁程序(KB896256),可更改内核功率管理器,使其跟踪整个封装(而非独立内核上)的 CPU 利用率。当一个内核的工作负载远远少于另一个内核时,它可解决功率管理器因不正确计算处理器的优化目标性能状态而产生的问题。在自适应模式中,性能状态设置过低,性能受到负面影响。

[5] 如欲了解有关该研究的更多详细信息,请访问:http://softwarecommunity-zho.intel.com/articles/zho/1089.htm 

[6] 如欲了解有关 MobileMark 2005 的详细信息,请访问:http://www.bapco.com/ 

[7] 如欲了解有关该分析的更多详细信息,请访问:http://softwarecommunity.intel.com/articles/eng/1091.htm 

[8] 如欲了解本主题的更多详细信息,请访问:http://www.intel.com/cd/ids/developer/asmo-na/eng/333927.htm 

[9] 如欲了解有关本研究的全部详细信息,请访问:http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/mobile/333574.htm 

[10]如欲了解有关 Extech 功耗分析器的详细信息,请访问:http://www.extech.com/instrument/products/310_399/380803Power.html 

[11] 请访问:http://LinuxPowerTOP.org 



上一页 1  2  3  4  下一页

第 2 页,共 4 页
我们邀请您在本页 发表评论 (不受客服控制),或直接向我们的支持中心 提问.