Android下网络接口能耗估计原理

SATA/NVMe/M.2 接口性能对比:从 6Gbps 到 PCIe 5.0 x4 的 5 倍速度跃迁 本文全面解析了SATA、NVMe和M.2接口的性能差异,从6Gbps的SATA到PCIe 5.0 x4的16GB/s带宽,详细介绍了存储技术的演进历程。重点对比了NVMe协议的革命性优势,包括并行处理能力和低延迟特性,并提供了不同使用场景下的选购建议,帮助用户根据需求选择最佳存储方案。 阅读详情

最近做一些手机能耗方面相关的工作,研究了PowerTutor的源代码,本篇日志剖析其中的3G和WiFi能耗估计与测算的方法。

能耗估计实质上是估计功率,再根据功率和时间乘积算出能耗。

PowerTutor的GitHub地址:https://github.com/msg555/PowerTutor

下载源码导入项目,跟踪一下函数,发现功率的计算主要是由PhonePowerCaculator接口定义的,PowerTutor根据不同的机型实现了不同的接口,详细有G1 G2 和Nesux One。

以G1 为例,跟踪DreamPowerCaculator里的代码,简单的分析getThreegPower函数,发现只是根据目前3G接口的状态,返回该状态下的固定功率而已。固定功率以硬编码的形式固定在DreamConstants.java中,这些固定功率应该是使用专门的设备进行检测出来的。

3G接口的状态跳转如下:

3G接口的状态由ThreegData来进行计算,跟踪ThreegData可以发现,在代码里通过文件系统得到3G接口收发包的数量,计算出收发包的速率,进而估计3G接口目前处于哪个状态。估计的方法也很简单,速度〉0,则处于DCH,若之前出于DCH且速度为0,则根据一个timer决定是否跳转到FACH,若速度为0且在idle,则根据Timer决定是否跳转到idle。Timer的设置根据手机不同而不同,也存储在Constants中。注意默认的interfacename 为rmnet0,如果手机的3G接口名字不是rmnet0会导致查找相应文件系统查不到数据,具体的接口名称可以使用netcfg命令查看(在adb shell里或者各种android终端软件)。

 

WiFi的计算相对复杂一些,首先判断WiFi所处的状态,同样是使用类似的估计法,具体的方法是判断上一个迭代周期内收发包的个数,若小于4则为低能耗状态,大于15则为高能耗状态,否则维持不变,一个迭代周期默认是1000ms,硬编码在代码中。接着在getWifiPower函数中判断所处的状态,如果是低能耗态,则返回低能耗态的功率,是个常量。若为高能耗态,则总功率为高能耗态的基本功率加上传输速度*该传输速度下的额外功率。给定传输速度下的额外功率以表的形式存储在常量中,高能耗态的基本功率和低能耗态的基本功率也存储在常量中。

 

值得注意的是,计算WiFi功率是不分上行下行速率,换句话说所谓的传输速率是上下行速率之和,虽然从硬件来讲,上传资源消耗的能量要多一些。

 

结论:目前很大一部分测能耗的软件实际上并不是得到设备的真正能耗,而是根据某些模型和先验数据来进行能耗的估计,估计得准确程度依软件不同而不同。但普通用户没有去判断此软件偏差的能力(比如拿万用表测电池两端电流与电压),因此将模型估计值当作真实值去使用也没有什么不妥之处 。

USB3.2速度标准梳理:从5Gbps到20Gbps图解说明 深入解读USB3.2速度标准的演进过程,从最初的5Gbps到如今的20Gbps,图解各代速率差异与接口标识,帮助用户清晰理解usb3.2速度等级及实际应用场景。 阅读详情

相关推荐

PCIe 6.0 vs SATA 3.0 vs HDMI 2.1:5大接口速率与协议栈深度对比

本文深入对比了PCIe 6.0、SATA 3.0和HDMI 2.1等五大接口技术的速率、协议栈及应用场景。重点分析了SerDes技术在物理层的基础作用,以及各接口在带宽、延迟、功耗等方面的差异,为硬件工程师提供精准的选型策略和设计参考。

cigang4063的博客 434

Java 统计接口消耗时间

最近测试反应接口响应很慢,所以赶紧给接口加个时间日志,看一下接口的响应时间是多少,找一找原因。 ps : 打印出的时间都是以ms为单位的。 方法一: long beginTime = System.currentTimeMillis(); System.out.println("======开始时间======="+beginTime); long endTime = System.currentTimeMillis(); System.out

weixin_43872691的博客 6483

深入解析SATA 3.0协议中的OOB信号机制及其应用场景

本文深入解析了SATA 3.0协议中的OOB(带外)信号机制,详细阐述了COMRESET、COMINIT和COMWAKE三种核心信号的功能与交互时序。OOB信号作为独立的底层“握手”协议,负责设备检测、链路初始化与复位,是确保硬盘与主机稳定连接、实现热插拔及错误恢复的关键基础。文章结合硬件实现与典型应用场景,说明了这一机制从SATA 1.0到3.0的兼容性与重要性。

weixin_29230901的博客 509

各个接口的消耗时间

/pty/mad/user/agylInfo 主要是这个方法:AcitemCacheInfo /mad/user/globalInfo GlobalInfoService

weixin_38441551的博客 728

SATA/PCIe/M.2接口与协议

嵌入式Linux开发中存储系统设计需考量接口与协议组合,常见问题包括M.2设备识别、NVMe驱动验证等。SATA接口(6Gbps)仅支持SATA协议,PCIe接口可承载多种协议(如NVMe),M.2接口通过Key类型区分协议支持(BKey支持SATA/PCIex2,MKey支持PCIex4)。NVMe协议相比SATA具备显著性能优势(64K队列深度)。开发验证涉及驱动检查(ahci/nvme模块)、性能测试(fio工具)及硬件设计要点(阻抗控制、供电需求等)。通过内核配置、设备树设置和PCIe链路调试可优化

qq_40170041的博客 1013

SATA接口详解:从管脚接线到高速数据传输

本文详细解析了SATA接口的技术特点、管脚接线图及实际应用。从SATA的串行传输原理到7针脚的功能解析,再到实战接线指南与速度对比,全面介绍了SATA在机械硬盘和SSD中的优势与适用场景。特别针对管脚接线图进行了深度分析,帮助读者快速定位和解决常见故障。

weixin_42552716的博客 517

android app耗电分析方法

      这是一篇讲述应用耗电的文章,围绕 Android 电量采集机制及第二代 Battery Historian 分析工具讲述。文从数据采集、导出、环境搭建、解读报告的角度出发,从细节讲解整个流程。和大谈概念的文章不同,这里将进行实际操作及分析。 写作动机来源于最近的工作需求,但分析过程中发现网上资料较为匮乏。在此执笔写作,以便日后回顾,亦作为分享的机会。 0x01 电量统计模块概述 ...

zhangcanyan的博客 1万+

SATA I, SATA II, SATA III:从理论到实践的全面解析

本文全面解析了SATA I、SATA II和SATA III的技术差异与应用场景,从理论带宽到实际传输速度,详细对比了三代接口的性能表现。特别针对机械硬盘和固态硬盘的不同需求,提供了实用的升级建议和兼容性解决方案,帮助用户最大化存储设备性能。

weixin_30329623的博客 419

SATA接口电路设计实战指南:从理论到布局布线

本文详细解析了SATA接口电路设计的核心要点,从基础理论到实际布局布线技巧。通过实战案例,深入探讨了SATA接口规范、阻抗控制、FPGA收发器配置等关键设计要素,帮助工程师规避常见问题,提升高速信号设计能力。特别针对SATA3.0的6Gbps高速应用场景,提供了专业的电路设计建议。

weixin_30882895的博客 258

服务器硬盘接口实战:SAS 12G vs SATA 3.0 vs NVMe PCIe 4.0 性能与成本分析

本文深入对比了服务器硬盘接口SAS 12G、SATA 3.0和NVMe PCIe 4.0的性能与成本,通过实测数据分析了它们在顺序读写、随机IOPS等方面的表现,并针对不同业务场景提供选型建议。重点关注企业级存储需求,帮助用户在性能与成本之间找到最佳平衡点。

weixin_33701564的博客 407

别再被接口搞晕了!一张图看懂SATA、M.2、NVMe和PCIe的关系与速度天梯

本文全面解析了SATA、M.2、NVMe和PCIe等存储接口技术的关系与性能差异,帮助读者理清现代存储技术的演进脉络。通过对比不同接口的速度天梯和实际应用场景,提供SSD选购指南,助力用户根据需求选择最适合的存储解决方案。

weixin_42531886的博客 605

SATA 3.0 vs SAS 12G vs M.2 NVMe 4.0:3种主流硬盘接口实测带宽与延迟对比

本文深入对比了SATA 3.0、SAS 12G和M.2 NVMe 4.0三种主流硬盘接口的性能差异,包括顺序读写、随机IOPS和延迟等关键指标。通过实测数据揭示NVMe 4.0在带宽和延迟上的显著优势,同时分析SAS的企业级可靠性和SATA的经济性,为不同应用场景提供选型建议。

weixin_30338497的博客 441

SATA信号基础介绍

SATA(Serial ATA)是一种高速计算机总线接口,用于连接存储设备,具有更高传输速率和更简单配置。采用点对点架构和差分信号传输,支持1.5Gbps至16Gbps速率。SATA协议分为应用层、传输层、链路层和物理层,采用8b/10b编码和LVDS信号。物理层涉及OOB信号、时钟恢复和均衡技术。信号完整性需考虑插入损耗、回波损耗和串扰等问题。测试内容包括眼图、抖动、协议合规性和互操作性,需使用专业设备如示波器、误码仪等。常见问题包括眼图闭合、链路训练失败等,需进行针对性调试。

qq_44152062的博客 1117

SATA3.0硬件加速方案:基于Vivado IP核的PHY层实现与性能优化

本文详细介绍了基于Xilinx Vivado IP核的SATA3.0 PHY层实现与性能优化方案。从SATA IP核的基础配置到高速信号完整性优化,再到实战调试方法,帮助硬件工程师充分发挥SATA3.0的6Gbps理论带宽。重点探讨了时钟架构选择、DFE均衡器配置以及动态均衡调整等关键技术,为工业级存储解决方案提供性能优化指导。

weixin_29209825的博客 243

SATA接口选购指南:从SATA I到SATA III,如何根据需求选择合适版本(附实测数据对比)

本文详细解析了SATA I到SATA III三代接口的技术差异与性能对比,通过实测数据展示不同版本在游戏加载、视频编辑等场景的实际表现。提供选购决策框架,帮助用户根据设备类型、使用场景和预算选择最适合的SATA版本,避免常见误区。

weixin_30872337的博客 429

SATA3.0主机控制器IP:高效存储接口的设计与实现

本文深入解析了SATA3.0主机控制器IP的核心设计与实现。它作为可复用的芯片设计模块,将复杂的SATA协议(最高支持6Gbps速率)封装为即插即用的解决方案,支持自动硬盘识别与热插拔。其内置的高效DMA控制器与灵活的AXI接口,能实现接近理论极限的数据传输速度。此外,IP核支持可编程的通道数量,便于从单盘扩展到多盘阵列,为定制化存储设备(如NAS、服务器、工业计算机)的开发提供了高效、灵活的基础。

weixin_28475533的博客 125
上一篇: JOS学习笔记(九)
下一篇: 自制编译器:语言语法
ROger__Wong
博客等级 码龄14年 250粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值