前天张擎宇同学告诉我,在有 Wi-Fi 的时候最好使用 Wi-Fi 并关掉 3G 网络,可以省很多电。3G 真的比 Wi-Fi 费电吗?我查阅了文献,发现果真如此。当要传输的数据较少时,电源消耗的差距可以大到 10 倍之多。

蓝线:3G 功耗;绿线:wifi 功耗(来源:TailEnder)蓝线:3G 功耗;绿线:wifi 功耗(来源:TailEnder) 蓝线:3G 功耗;绿线:wifi 功耗;紫线:考虑了 wifi 扫描和建立连接之后的功耗(来源:TailEnder)

原因主要有两方面:

  1. 3G 网络完成数据传输后要保持一段时间的高功率状态;
  2. 3G 网络的发射功率远大于 Wi-Fi 网络。

蜂窝网络与无线局域网

3G 与 wifi 有什么本质区别呢?一个慢,一个快;一个覆盖范围大,一个覆盖范围小。事实上这代表了两种不同形式的网络:蜂窝网络和无线局域网。

不管是 GSM(2G)、GPRS(2.5G)、EDGE(2.5G)、CDMA(3G)、HSPA(3.5G) 还是 4G LTE,它们都是运营商网络,每个基站负责其周围的一块区域,基站的覆盖范围酷似蜂巢,因此称为蜂窝网络(cellular network)。

蜂窝网络蜂窝网络 蜂窝网络

蜂窝网络由于覆盖范围很广,而且有强大的固定基站,因此假定所有用户都能听到基站,而用户与用户之间未必互相能听到。这就要求基站给用户划分好互不干扰的信道。

GSM(2G)最早使用的是时分多路复用(TDM)技术,把时间切成若干片给不同的客户端使用。为了同步时间片的划分,需要定期插入 “心跳”,这些心跳就是我们把 2G 手机放在收音机前时会听到刺耳噪音的原因(当然,现在很少有人听收音机了)。而 CDMA 使用的是码分多路复用(CDM)技术,就是用不同的编码方式来传输信息,就好像大厅里一个人说英语,一个人说汉语,我们可以选择是听英语还是听汉语。

多路复用技术比较(来源:DIFFERENCE BETWEEN GSM AND CDMA – EXPLAINED!!)多路复用技术比较(来源:DIFFERENCE BETWEEN GSM AND CDMA – EXPLAINED!!) 多路复用技术比较(来源:DIFFERENCE BETWEEN GSM AND CDMA – EXPLAINED!!

Wi-Fi 则代表了无线通信技术的另一种应用场景:无线局域网(WLAN)。所谓局域网,就是覆盖范围小(几米)、使用人数少(几十人),假定终端之间都能互相听到,从而 “基站” 就被解放了出来,不需要为每个终端分配信道,而是各个终端自行协商谁在什么时候发送数据,避免冲突。因此,无线局域网基站(接入点)的成本比蜂窝网络基站的成本要低很多,这不仅是量产和发射功率的问题,更重要的是采用的技术不同导致基站的负担不同。当然,无线局域网这样的假定也使得它的扩放性(scalability)不强,用户数量一多,客户端自行协商解决冲突的方法效率就低了。

具体来说,无线局域网里协商解决冲突的方法叫做载波监听/冲突避免(CSMA/CA)。每个客户端要说话之前,要首先竖起耳朵听周围有没有其他人在说话,如果没有,好,吹一声口哨(RTS),表示我要开始发数据了,接收者如果能听到这声口哨,就回应一声(CTS),发送者接收到这个回应后,就可以开始发数据了。接收者接收完数据,要回复一声 “roger that”(ACK)。您看,发送一次数据要这么麻烦,其中任何一个阶段受到其他客户端打扰,都会导致发送失败。

WLAN 载波监听/冲突避免时序图(来源:cs.stanford.edu)WLAN 载波监听/冲突避免时序图(来源:cs.stanford.edu) WLAN 载波监听/冲突避免时序图(来源:cs.stanford.edu)

Wi-Fi 在收到 ACK 之后,如果没有新的数据要传送,就可以睡眠了。每过一段时间,它会醒来问问接入点有没有新的数据传来,如果没有,就继续睡眠。因此基本上只当有数据需要传送的时候,Wi-Fi 才会消耗电能。当然,最开始 Wi-Fi 扫描接入点和连接接入点的过程也是挺费电的,但我们通常不会不断切换 Wi-Fi 接入点。

蜂窝网络的信道分配

前面提到,蜂窝网络是靠基站来分配信道,而不像无线局域网那样是靠客户端自行协商。如果每个手机一开机就向基站申请一个信道并独占之,会造成巨大的资源浪费,因为手机大多数时候是处于静默状态,既不打电话又不发送数据,而信道是稀缺资源,独占信道会严重影响基站能支持的用户数量。

因此,蜂窝网络的标准无一例外地使用了 “用时分配信道” 的方法,也就是有一个共享信道用于申请信道,客户端需要发送数据的时候:

  1. 客户端在共享信道上发出租借信道申请;
  2. 如果基站能收到申请,则分配一个临时独占信道给该客户端;
  3. 客户端使用分配到的信道发送数据;
  4. 数据发送完毕,等待一段时间(对方的回应或者有新数据要发送);
  5. 如果一段时间内没有数据要发送,就释放信道。
    在联通采用的 WCDMA 标准中,这个过程被称为 RRC(Radio Resource Control)。采用 WCDMA 为例,是因为它是国际上市场占有率最高的 3G 标准,其他 3G 标准尽管信道复用方式不同,但分配信道的过程是相似的。

WCDMA(3G)电源状态图(来源:High Performance Browser Networking)WCDMA(3G)电源状态图(来源:High Performance Browser Networking) WCDMA(3G)电源状态图(来源:High Performance Browser Networking)

从电源管理的角度看,客户端平时处于极低功耗的休眠状态(IDLE),有数据要传输时进入高功耗的发射状态(Cell DCH),数据传输完毕后 5 秒内如果没有数据要发送,就进入较低功耗的待机状态(Cell FACH),如果再过 12 秒无数据可传,就回到休眠状态(IDLE)。

WCDMA 电源状态时序(来源:High Performance Browser Networking)WCDMA 电源状态时序(来源:High Performance Browser Networking) WCDMA 电源状态时序(来源:High Performance Browser Networking)

为什么要等好几秒,还要有个额外的待机状态呢?首先回答等几秒的问题。这是因为分配和释放信道是一件既麻烦又耗时的事情。从休眠状态(IDLE)到可以发送数据的连接状态(Cell DCH),要耗近 2 秒的时间(下图所示为 1.717 秒)。打电话、发短信等待一两秒我们不会感觉什么,然而对于看网页、即时通信来说,这个延迟就有些不可接受了。更重要的是,这个连接过程需要消耗很多共享信道和基站的资源,也需要消耗客户端较多的电能,因此应该尽量少做。在数据传输结束后等几秒,就是考虑到发送完数据后可能还有后续数据要发送,或者要接收对方的回应。

HSPA 连接建立的控制平面延迟(来源:高通)HSPA 连接建立的控制平面延迟(来源:高通) HSPA 连接建立的控制平面延迟(来源:高通)

接着回答额外待机状态的问题。随着蜂窝网络标准的演进,带宽越来越快了,高速的数据传输是以提高发射功率为代价的。例如,HSPA 在连通状态的发射功率是 1000~3500 mW,而 GSM 的发射功率只有 800 mW。然而电池行业的发展不遵循摩尔定律,单位体积电池的容量是有限的,降低客户端功耗在蜂窝网络通信中越来越重要。因此 HSPA 在 CDMA 的基础上增加了较低功耗的 “待机状态”(Cell FACH),这个待机状态只消耗几百 mW 的功率,也能以较低的速率(20 kbps)进行少量数据传输,或者在 100 毫秒量级的时间内回到全速发送数据状态(Cell DCH)。这样就在客户端功耗和连接建立的响应时间方面做出了权衡。

3G、GSM 发射功率(来源:TailEnder)3G、GSM 发射功率(来源:TailEnder) 3G、GSM 发射功率(来源:TailEnder)

对 4G LTE 来说,发射功率更高了,就需要更细致的电源管理。因此,4G LTE 在全速发送数据和空闲状态之间,引入了两个中间状态:Short DRX(Short Discontinuous Reception)和 Long DRX(Long Discontinuous Reception)。

4G LTE 电源状态图(来源:High Performance Browser Networking)4G LTE 电源状态图(来源:High Performance Browser Networking) 4G LTE 电源状态图(来源:High Performance Browser Networking)

电池杀手:tail energy

介于全速传送数据与空闲状态之间的待机状态,正是蜂窝网络的电池杀手。在 3G 网络中,这些没有传输任何有效数据的待机状态,消耗了射频模块 50% 的能量,也就是一半左右的能量都被浪费了。在 4G 网络中,这种半睡半醒的中间状态在能量消耗中的占比更大。不过,如果去掉中间状态,射频模块将频繁唤醒和睡眠,不仅会增大数据发送的延迟,而且可能会消耗更多的能量(因为建立连接和分配信道的复杂过程也很耗电)。也就是说,中间状态的时间长度事实上是协议设计者权衡后的结果。

3G 与 4G 各个阶段的能量消耗示意(来源:Comparing LTE and 3G Energy Consumption,AT&T)3G 与 4G 各个阶段的能量消耗示意(来源:Comparing LTE and 3G Energy Consumption,AT&T) 3G 与 4G 各个阶段的能量消耗。注意 3G 的表格中,DCH 阶段不是全部用来发送有效数据,也有末尾等待时间(来源:Comparing LTE and 3G Energy Consumption,AT&T)

无线局域网笑了。无线局域网(WLAN)不需要待机状态,因为它不需要分配独占的信道,也就不需要考虑 “建立连接” 的延迟和功耗。要传输数据时,客户端只需按照载波监听/冲突避免(CSMA/CA)协议,看旁边没人发送数据时,自己就可以发送数据了。这种自组织形式的冲突避免方法不存在 tail energy 的开销,也大大降低了连接建立时的延迟(这是另一个问题,WLAN 几到几十毫秒,3G 却需要几百到几千毫秒),但也不可能享受独占信道的效率:网络规模不可能很大,几十个客户端就是上限了。

鱼与熊掌不可兼得,在蜂窝网络和无线局域网的设计中可见一斑。

另一个影响因素:发射功率

除了前面说的 tail energy,还有一个显而易见的因素:发射功率。WLAN 接入点距离近,蜂窝网络基站距离远,除了频段方面的区别,发射功率也有区别。要想传得远,就得高声喊。下表中的 RX 代表接收,TX 代表发送,每格自上而下分别是 1、2、3 根天线,可见单天线的发射功率都在 1 W 上下。

802.11n 不同工作模式下的功率(来源:Demystifying 802.11n Power Consumption)802.11n 不同工作模式下的功率(来源:Demystifying 802.11n Power Consumption) 802.11n 不同工作模式下的功率(来源:Demystifying 802.11n Power Consumption)

蜂窝网络的功率怎么样呢?前面提到 HSPA(3.5G)中的发射功率是 1~3.5 W(根据信号强度不等),也就是同样在全速发送状态,蜂窝网络比无线局域网的射频芯片在单位时间内要消耗更多能量。但从下图可以看到,除非是在传输大量数据,对于小块数据按照一定间隔发送的情形,3G 射频芯片的功率多数时间也在 1 W 上下,只有较短的时间产生了高功率发射的尖峰。

3G 射频芯片功率随时间的变化(来源:Power consumption analysis of constant bit rate data transmission over 3G mobile wireless networks)3G 射频芯片功率随时间的变化(来源:Power consumption analysis of constant bit rate data transmission over 3G mobile wireless networks) 3G 射频芯片功率随时间的变化(来源:Power consumption analysis of constant bit rate
data transmission over 3G mobile wireless networks)

在信号比较好的情况下,3G 与 WLAN 发送小块数据的功率消耗相当;但不要忘了 3G 有 tail energy,而 WLAN 没有,因此 3G 耗电远比 WLAN 快就不足为奇了。所以,即使您不在乎坑爹的流量费用,为了您的电池续航时间着想,还是在需要的时候打开 Wi-Fi 吧!当然,在不需要的时候,尤其是公共场合,还是最好关掉 Wi-Fi,不然搜索 Wi-Fi 热点同样很耗电,而且不小心连上了未加密或不受信任的 Wi-Fi 热点,可要小心艳照门哦。

给应用开发者的建议

读到这里,如果您是一位应用开发者,应该已经认识到了蜂窝网络中每发送或接收一块数据,天线就会保持开启状态几秒钟,而这几秒钟将耗费比发送这些数据还要多的功耗。我们可以扬长避短:

  1. 扬长:在这几秒钟里我们不妨让手机多干点活,比如预取(prefetch)图片等用户可能马上看到的内容;
  2. 避短之一:有些应用开发者沿用桌面应用的习惯,每分钟发送一个心跳包表示 “我还活着”,在移动终端里这可是非常奢侈的行为。使用长连接吧,不要再 polling 了!
  3. 避短之二:尽量使用系统的消息推送服务,这样不同应用的消息可以打包推送,而不是每个应用都独立推送一次,让射频模块和系统的其他组件频繁唤醒。
  4. 避短之三:应用如果需要定期获取用户数据更新,且不方便使用服务器推的话,能不能不使用固定的更新频率,而是根据用户的习惯和网络条件调整更新频率?
  5. 避短之四:如果应用内有多个定期执行的计划任务,应当尽量凑到一起。
    进一步的功耗优化,比如跨应用的任务打包、仅在其他应用发送数据时顺便发送后台数据,需要移动操作系统厂商提供更多的 API,与应用开发者共同努力。

参考文献

我很懒,就只列标题了……

  1. High Performance Browser Networking
  2. [TailEnder] Energy Consumption in Mobile Phones: A Measurement Study and Implications for Network Applications
  3. Latency in HSPA Data Networks, Qualcomm
  4. Comparing LTE and 3G Energy Consumption, developer.att.com
  5. Power consumption analysis of constant bit rate data transmission over 3G mobile wireless networks
  6. 各路网络图片

Comments