如果等待电源,只能省电
只要您不使用手机,处理器就会尝试进入深度睡眠模式,因为这可以节省最多电量。当应用程序需要进行后台工作时,他们可以通过“唤醒锁定”使手机处理器保持唤醒状态。JobScheduler和Doze模式的工作方式之一是抑制应用程序所持有的唤醒锁定。谷歌可以跟踪系统中的唤醒锁定,高级用户可以使用各种应用程序跟踪这些锁定。Poiesz和Murray想要做的一点是,一旦你通过一个唤醒锁定,更多的唤醒锁定并不重要。
Poiesz: 我们试图了解电池的另一个空间是唤醒和唤醒锁定。
传统上,你会说,“哦,是的,唤醒锁是坏的。唤醒锁保持CPU。只需将唤醒锁驱动为零,这是好的。任何唤醒锁都应该尽量减少。” 但它最终会变得更加微妙,因为唤醒锁的增量成本非常低 – 几乎没有什么可以说。
如果你没有唤醒锁并且你做了一个唤醒锁定,这意味着现在CPU被提升到一个更高的状态并保持在那里,但如果你在第一个上面有更多的唤醒锁,它就不会逐渐增加更糟糕。所以这让它变得非常困难,因为,比方说,如果你只是开始计算唤醒锁定,那真的可以帮助你减少你可能看到的唤醒锁定的数量吗?哦,我们将唤醒锁减少到20% – 让我们组成一个数字 – 然后,这样做是否也能节省20%的功率?可能不是,因为关于何时举行唤醒锁定,甚至我们操作系统的子系统真的很聪明并且说“嘿,我将机会性地保持唤醒锁定”,意思是“如果发生了什么事情”,它会更加微妙。由于其他原因,我当时也会做我的工作。“ 即使你的唤醒锁数不会改变,这也是一个非常聪明的策略。’何时’改变,但’什么’没改变。
Ars:是的,所以最重要的是睡眠时间,而不是唤醒锁,我猜。
Poiesz: 对,不一定。它对你何时举行唤醒锁定有了解,现在发生的事情是理解的关键,不一定是它保持唤醒锁定。而这种间接性使这些问题变得非常复杂。
Ars:好的,那么什么是机会主义唤醒锁的例子呢?
穆雷: 可以认为它不一定是机会主义的唤醒锁定,但是假设你有一个后台工作正在运行。后台工作需要醒来并与网络通话,它会被唤醒五秒钟。与此同时,你还有一些其他的进程正在运行,它们正在进入休眠状态,但它正在运行大量的后台CPU活动。当第一份工作醒来时,它现在持有五秒钟的唤醒锁定。这将使CPU暂停5秒钟。现在,其他进程可以再次运行。因此,这会消耗一些功率,但它可能看起来像,“哦,这种唤醒锁在某种程度上看起来很昂贵。我们看到电池耗尽,而这个唤醒锁定被保持。” 这并不意味着持有唤醒锁的东西做错了什么。这只是意味着系统在线,宁波网站建设
Poiesz: 当它发生时效果很好,所以让我们将其作为一个调试场景。你去,“哦,好吧,那个唤醒锁已经完成了第一件事。摆脱那个唤醒锁定,你将节省电力。” 好吧,蒂姆所描述的那项工作仍然会发生在某个地方。它现在只会发生在其他地方,所以即使你删除了唤醒锁定,你的净更改实际上也可能无关紧要。所以它变得非常有趣。
唤醒也是一样的,类似的东西。这就像一个应用程序触发警报。当警报触发时,如果操作系统因其他原因已经启动,则该警报非常便宜。如果,当该警报触发时,您的设备处于相对较深的闲置状态,这非常昂贵。因此,所有这些指标的间接水平使得它实际上非常有趣。比如,你怎么实际弄清楚,“好吧,为什么X,Y和Z发生了,如果X,Y和Z没有发生,那么会发生什么反应,并且会导致改进?” 这只是花生酱。你只是移动它。你不一定要减少花生酱的量,你只是把它分散得更薄。因为电话拔掉了这么长时间,如果发生在上午9点,上午10点或上午11点的事情,那么作为用户的电力生活并不重要。它仍然发生。
默里: 真的,如果你不能改变硬件,有两种方法可以改善电池。你或者以某种方式更便宜地运行相同数量的工作,我们通过减少唤醒等事情来做。或者,你只是减少工作量。而已。这是你能做的唯一两件事。
波茨(Poiesz): 推迟到开机是最重要的事情之一。实际上,这是一个有趣的观点。这不是我们与自适应电池谈论的事情。当屏幕打开之前,我们过去经常运行作业。我们会说,“哦,屏幕打开了。让我们去做一些背景工作,”对吧?而JobScheduler会站起来做大量的处理。其中一个因电池而改变的事情是我们会说,“嗯,当然,我的屏幕已开启。让我们继续为您正在使用的应用程序或我们认为它们将要使用的应用程序运行。” 现在所有其他内容都会延迟,并且每次您推迟其中一个将在该屏幕上运行的应用程序。如果它现在一直推迟到你掌权,那么这就是节省。
在此之前,JobScheduler可能会看到并说:“好吧,如果屏幕打开,很少有东西与屏幕的功耗相媲美。那么,还有什么工作呢?” 因此,这些确实可以节省更多的成本,但如果你能够一直推迟到掌权之前,它们只能节省成本。如果你真的只是将它推迟到下一次屏幕关闭活动,那就是花生酱。
你可能会看看发生了什么,然后说:“是的,我们钉了它。它已经延迟了。一切都很好”,但你仍然把它推迟到你还没有被拔掉的状态。这是非常棘手的部分,我认为蒂姆的总结是非常好的,就像在特定设备中真正重要的一样。硬件确实变得更好,而我们一直喜欢的是硬件不断变得越来越好,越来越好,特别是在小内核上。这有帮助,因为它只是帮助降低地板,你可以在地板上做得越低,你就越好。
Ars:在电源使用方面,你真的觉得硬件总是变得更好吗?因为看起来电池寿命在整个设备使用方面没有那么大的改变,因为它们只是变得越来越快。
默里: 所以,让我们看看:我们在Snapdragon 808和810以及5X和6P上有A53。我们在Pixel 2中使用了A53。不,它是相同的核心,但它在Pixel 2中的功耗却大大降低,因为5X和6P是20nm?流程节点变得更好。FinFET帮助了很多。低频小核上的功耗越来越好,越来越好。
Ars:好的,是的,你的意思是在SoC,当然。
Poiesz: 你是对的。硬件的不同部分,有些正在变好,有些则没有。有些是中立的,有些可能会变得更糟。这取决于你所看到的内容,如空中报价,“更糟糕”。事情就像是设备上的RAM更多。这绝对是一个趋势,即为硬件增加更多内存。RAM是一种寄生漏极,因为它始终处于开启状态。
宁波网站建设向OnePlus 6 这样的设备大喊大叫 (并且完全不必要)8GB内存。
Poiesz: 所以,如果你有更多的模块同时运行,那么在连续绘制状态下会有更多的功能,因此这是硬件某些部分变得更好的区域。硬件的某些其他部分在性能和功能方面,但从功率角度来看,它们可能被其他增益所抵消。
总的来说,我认为硬件正在把我们带向一个积极的方向,但它总是比“它上升还是失效?”更加微妙?它是什么东西?就像,AMOLED屏幕是另一个有趣的空间,它可以实现一系列由于AMOLED的性质而无法实现的用例。黑色像素没有成本效益,然后开启了很多很酷的功能。
穆雷: 与台式机相比,手机和移动SoC之类的东西之一是一种奇怪的东西。GPU将是300瓦,CPU是另一个100。然后你就拥有了其他一切,而且它很小。它在移动设备中不起作用。它在各种组件之间更加平衡。没有一件事是这样的,“这是你80%的力量。它归于这一个组件。” 它不会那样工作,它也依赖于工作负载。拍摄照片时花费很多的单位并不是那些在流媒体音乐时花费很多的单位。因此,有关电源消耗的内容要比CPU上运行的内容要多得多。它也是,什么’ 你的手机服务?调制解调器是否会产生额外的功率,因为你的电池接收非常糟糕?像这样的东西。
Poiesz: 是的,音乐总是很棒的,因为许多流媒体服务现在提供缓存,所以你可以预先下载东西,所以,是的,你还在播放,你导致音频输出和CPU遇到它处理,但调制解调器不必打开定期下拉内容,以确保它预先取出您的音频。如果您预先下载它,它会被缓存,所以这样的东西实际上会对您的功率配置产生巨大的影响。
但这些东西都非常细致入微。要了解正在发生的用例,应用程序中发生了什么,以及用户做出的选择决定了您的功能配置文件。从长远来看,我认为这是最大的挑战之一,当我们得到的东西……如果你想象一个操作系统尽可能高效的世界,真正剩下的就是用户安装的应用程序,以及用户如何使用这些应用程序现在将决定您的能力。对?如果你在手机上玩VR游戏,那么你的电池寿命情况会有所不同。
你如何帮助用户理解这一点?你不希望它被指责,但你希望人们也能理解这个设备的稀缺性。它只有很大的电池空间,如果你想要推动它很难,这些是物理现实,你如何帮助人们理解它?总的来说,我们不希望别人担心。比如,使用手机就可以使用手机,并度过美好的一天。但是在极端情况下,了解您的交互方式以及如何使用您的应用和服务,以及您使用的应用和服务最终会成为更大,更大的因素。随着越来越多的操作系统和硬件变得更加高效,它在很大程度上变成了用户行为。宁波网站建设
放大 / 在iPad上运行的经过改进的YouTube音乐应用的主屏幕。
杰夫邓恩
Ars:是的,我从没想过音乐的事情。这很酷。我现在需要下载所有Google音乐内容并节省电量。
Murray: 只是为了增加一点点颜色,这是多么奇怪,几年前我们遇到了一个问题,当你在听音乐的时候,手机可以保持唤醒锁定并保持CPU在线,或者可以断电并依靠其他一些硬件组件来播放音乐,每隔10或15秒左右唤醒一次以重新填充缓冲区。它实际上使用了更多的功率来关闭CPU,而不是你只是持有唤醒锁,因为内核中还发生了一些其他疯狂的事情。而且我认为我们非常接近平价,但重点是,在你真正探索空间并看到实际运行的任何特定工作负荷之前,很难说出什么是理想的动力。
Poiesz: 我们一直在关注的另一个很好的例子是什么时候进入深度打瞌睡,就像完全打瞌睡一样。这主要是因为如果你把手机放下而没有触摸它。就像,我的手机大部分时间都在这里闲逛。有一个想法,就像你可以天真地说,“好吧,为了节省更多的电力,立即打瞌睡,对吧?屏幕关闭,打瞌睡,省电。我会接受我的推广,谢谢。”
但实际上,真正的诀窍并不是打瞌睡,而是因为,当你出来时,你会重置你的联系。你会唤醒一些应用程序,所有那些在你完全打瞌睡时被推迟的事情现在醒来,他们梳洗了,因为它可能已经有一段时间了。这花费了固定的时间。
对此的比喻可能是,如果您在交通中,最好是停车并重新启动汽车或更好地让它闲置?非常相似,所以问题就变成了,“嗯,什么是正确的数字和正确的条件,什么时候进入这个完全打瞌睡,因为有一个成本出来让所有的东西重新开始运行和新的时候也许它会挂起和闲置会更好吗?“ 所以,这就是所有这些事情,以及为什么我们的实验是尝试和获取这些东西的一种方式,因为它将取决于用户如何使用手机以及您预测将要发生什么的能力,什么是正确的数字。五分钟,十分钟,一小时?他们最终都会改变力量形象。
Ars:好的,这些预测尝试是为什么我最终选择了AI供电的自适应电池?
波茨(Poiesz): 所以,自适应电池是我们试图对我们认为你将要使用的东西做出更好和更好的预测的那些之一,那么那些东西可以被允许运行更多,而我们不会做的事情我认为会被使用,我们会推迟他们。在JobScheduler和报警经理之前,我并没有把它作为一个概念。我们主要是让开发人员完全找到“这是我的约束,这就是我想要的积极性”,而且,你知道,开发商有自己的目标。那没关系,我明白了。这很有道理。要求开发人员说:“嘿,如果你不认为用户可以使用你,请保持安静。” 就像,我不知道你怎么会合法地对某人说,对,“请限制自己。但是,操作系统是一个很好的管家。它处于一个独立的位置,说:“好吧,我看到用户正在参与什么。他们想要这个,他们不希望这样。” 在某些领域,您试图了解用户的行为,我在哪里获得应用程序,我们是否应该开始工作?我认为,这就是其中一些机器学习技术将非常强大。随着时间的推移它会长出来。宁波网站建设
Ars:那么我们是否会看到从切换到Skia的任何重大进展?
默里: 这是一个很好的后端改进,但它并不是真的很明显..。我的意思是,我认为看到帧时间基准测试对我来说很明显,但开发人员并不是很明显。
波茨(Poiesz): 对于我们工作的大多数事情来说,这通常都是正确的。找到一个奇异的变化是非常罕见的,你会挂上它并说:“哦,每个人都会看到这个。每个人都会注意到它。” 由于所有细微差别的行为,通常是这些变化,你正在处理它的一个垂直行为。还有很多其他方面可以影响正在发生的事情,所以它是一种“我们必须做所有事情。” 长尾很长,但长尾加起来非常大,所以追求所有这些东西真的很好。我认为伯克说过这一点,并且我把它作为一个术语,“你做的任何一件事都不足以解决问题,但所有这些都是必要的。” 我们必须追求一切,因为那’ 这是野兽的本性。每一小块小东西都会加起来。