移动网络下的性能优化之省电篇

标签: 移动网络 性能优化 | 发表时间:2016-02-26 07:21 | 作者:
出处:http://www.iteye.com



随着3G和4G网络的普及,用户使用APP的场景更多地集中在移动网络下。同时也带来了手机电量消耗更快和网络延迟更高的问题。想开发出用户体验更好的应用,就需要对移动网络有更深入的了解。本系列文章分为上下两篇,分别介绍如何开发出更省电和网络延迟更低的移动应用程序。本篇文章主要介绍移动网络的一些基本工作原理以及降低手机耗电的优化方案。

初窥2G,3G,4G网络

说起移动网络我们不得不提香农定理。香农定理是所有通信制式最基本的原理,它描述了有限带宽、有随机热噪声信道的最大传输速率与信道带宽、信号噪声功率比之间的关系。其用公式可表示为:
C = B lb(1+S/N)

其中:C是信道支持的最大速度或者叫信道容量;B是信道的带宽;S是平均信号功率;N是平均噪声功率;S/N即信噪比。

移动网络技术的发展也无法跳出这个公式。从最初的1G网络技术到现在的4G网络技术,都是在利用这个公式提高速度。要么让频段资源得到充分的利用,要么提高整体带宽。但是无论如何改进,频段资源都是有限的。在拥挤的城市或者人扎堆的地方,很容易分配不到无线资源。即使分配到资源,也会因为使用人数过多而导致速度变慢。所以不得不制定出更优秀的策略来提高资源的有效利用。这就是我们下面要讲的无线资源控制(RRC)。
无线资源控制(RRC)

什么是无线资源控制协议呢?我们先来看看手机发送一条信息的通信过程。

欲通信,先同步。手机在空闲状态下是无法通信的,当有通信需求时,手机会自动搜索信号,直到它搜到一个“信号非常强的全0序列”,就完成了锁定某个频道的过程。锁定频道之后,手机接下来就需要和通信系统校准时间,这就是同步过程。

欲接入,先申请。取得了频率和时间上的同步后,手机向控制平台发送通信请求,控制平台收到请求后,会找到空闲的时隙资源(时分多址技术中术语)分配给手机,并将手机切换到Active状态,这样手机就可以通信了。通信完成后,过一段时间,控制平台又会回收手机占用的通信资源,进入低耗能模式或者空闲模式。整个这一通信过程就是RRC所做的事情。

移动网络耗电的原因

前面提到了控制平台下不同模式的切换,下面是它的具体工作原理:手机在不传输数据的情况下一般处于空闲状态(Idle),当有发送数据需求时必须向控制平台发送申请。只有将手机切换到Active状态,也就是高耗能模式下才能进行通信。这一切换过程在4G网络下需要花费100ms的时间。通信完成后,手机不会一直处于高耗能模式下等待数据传输,它会切换到低耗能模式(Short sleep)。如果手机处于低耗能模式时接到数据发送请求,那么它又会切换到高耗能模式来发送数据。在频繁的数据请求中,它会在低耗能模式和高耗能模式不断的切换,而在不发送数据时,在10s后会再次进入空闲模式下。它会周期性的切换模式来确保资源的有效利用。

为什么存在耗能模式切换呢?因为无线资源是相对短缺的资源,在没有数据请求时就要对无线资源进行回收。



移动网络只有在处于DCH(高耗能模式)和 FACH(低耗能模式)下才会消耗手机电量。从上图可以看出,一次耗能模式切换大概需要花费10s,而且不管你传输的数据大小,它都会触发一次耗电周期,消耗10s的电量。

假如一个手机有5Wh(18000 J)总电量,手机完成一次从空闲模式切换到高耗能模式,再到低耗能模式,再到空闲模式的循环大概需要10J能量。如果每分钟切换一次,那么一个小时需要消耗60*10J = 600J电量,也就相当于总电量的3%。如果一个APP在后台每分钟发送一个请求,那么手机处于待机状态下一天就耗掉了3%* 24 = 72%的电。这就是为什么智能手机即使在待机状态下耗电量也非常大的原因。
如何省电

下面是我们根据上面提到的原因给出的五个可行的优化方案:

合并请求

在移动通信中,无论传输数据大小,每次数据传输都会触发一次大约10s的耗电。合并请求不仅能减少 DNS请求时间、服务器压力和HTTP请求,而且能够大大减少移动网络下手机电量的消耗。

预取数据

和合并请求原理一样,预取数据能让手机快速切换到空闲模式,并且在这个状态下保持更长的时间,以达到省电的目的。

避免轮询

轮询是指不管服务器端有没有更新,客户端都定时的发送请求进行查询。轮询可能会返回更新的信息,也可能会返回空的信息。轮询不仅增加了服务负担,而且会使手机长期处于高耗能模式,在几小时内就耗尽电池。

重连机制优化

一般重连机制都有几个重要参数:心跳时间间隔、重连超时时间及重连次数。其中心跳包每天会将手机从空闲模式唤醒近300次,一般的Android手机每天有超过15-20%的电量被消耗在发送过度频繁的心跳上。另外如果手机连不上服务器而不断的重试,在几小时内就会耗光电池。所以心跳时间不宜过短,据测试微信心跳时间为300s,可以作为一个参考。同样也不能永无休止的重连,重连几次还连不上,可以直接把问题抛给用户,由用户决定是否继续重连。

数据缓存

最省电的方式就是不使用移动网络,数据缓存能够大大减少网络请求的次数,达到省电的效果。

以上就是降低手机电量消耗的优化方案。在下一篇文章中,我们会详细分析移动网络延迟较高的原因,并给出降低网络延迟的方案,敬请期待。

本文来自: WildDog Blog

感谢 mengyidan1988 投递这篇资讯

资讯来源: WildDog Blog

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [移动网络 性能优化] 推荐:

移动网络下的性能优化之省电篇

- - ITeye资讯频道
随着3G和4G网络的普及,用户使用APP的场景更多地集中在移动网络下. 同时也带来了手机电量消耗更快和网络延迟更高的问题. 想开发出用户体验更好的应用,就需要对移动网络有更深入的了解. 本系列文章分为上下两篇,分别介绍如何开发出更省电和网络延迟更低的移动应用程序. 本篇文章主要介绍移动网络的一些基本工作原理以及降低手机耗电的优化方案.

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Hebernate 性能优化

- - 企业架构 - ITeye博客
文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:. 一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数 据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象.

Hbase 性能优化

- - CSDN博客云计算推荐文章
因 官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果. 所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 默认值:3分钟(180000ms). 说明:RegionServer与Zookeeper间的连接超时时间.

JavaScript性能优化

- - ITeye博客
互联网泡沫让投资者长了记性:态度更加谨慎.         如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.

Linux 性能优化

- - Gsion&apos;s Blog
1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断. 加粗斜体表示可以直接运行的命令. 二、/proc/sys/kernel/优化. 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.

hbase性能优化

- - CSDN博客推荐文章
  当你调用create方法时将会加载两个配置文件:hbase-default.xml and hbase-site.xml,利用的是当前的java类路径, 代码中configuration设置的这些配置将会覆盖hbase-default.xml和hbase-site.xml中相同的配置,如果两个配置文件都存在并且都设置好了相应参上面的属性下面的属性即可.

oracle性能优化

- - 行业应用 - ITeye博客
                              oracle数据库的性能优化. 主要从内部存储结构,逻辑分区,表结构范式,sql语句优化. hibernate处的层次更高,主要从缓存,和sql语句的使用.     对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整,最后一个调整级是SQL级.

mssql性能优化

- - 数据库 - ITeye博客
一、             分析阶段. 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求、响应时间的需求、硬件的配置等. 另一方面,在分析阶段应该根据各种需求区分出系统的类型,大的方面,区分是OLTP(联机事务处理系统)和OLAP(联机分析处理系统).