吸一口O氣,手機更流暢

注:此文轉載自@ ofollow,noindex" target="_blank"> 踐機行事
2018年10月11日,一場規模不大的技術溝通會在上海召開,會上OPPO宣佈了自家針對安卓的優化技術Hyper Boost。不過,只有剛好半個小時的溝通會,是沒有辦法把這個技術說得太明白的,好在會後我得到了與OPPO研究院軟體研究中心負責人陳巖另外溝通的機會,也算是把Hyper Boost技術弄明白了,趕緊趁熱擼出了這篇文章。最讓人沒有想到的是,這個對OPPO智慧手機流暢度起到如此重要作用的技術,僅僅佔用了整個Color OS大約1MB多一點的空間,也算是不簡單了。
OPPO研究院軟體研究中心負責人陳巖
以下是OPPO官方對於Hyper Boost技術的描述:
OPPO在2015年便自主研發了系統引擎的雛形設計,對使用者核心使用場景及使用行為進行鍼對性優化。發展到現在,OPPO Hyper Boost已經進化成為OPPO自主研發的系統級資源調配優化方案。它有效整合了 OPPO系統引擎、遊戲引擎與應用引擎 三大部分,從而針對使用者的實際使用場景及行為,全面實現了效能與功耗表現的優化,幫助提升使用者的整體使用體驗。它可以通過系統引擎調配底層硬體資源,面向20+個軟體場景、20+個使用者行為提供50+個優化方案,讓使用者在絕大多數通用場景中獲得最佳體驗。
Hyper Boost加速引擎涵蓋系統引擎、遊戲引擎和應用引擎
上邊這段描述,就算你我看得明白,沒錯,都是中文,能理解到它的意思,但也未必能清楚地瞭解OPPO Hyper Boost技術是如何工作的。同時,很多人也未必認可OPPO這些年在系統優化技術上的努力,甚至還有人說這又是一個PPT技術。好吧,那就讓我們換個方式,換成我自己得到的資訊,來給你解讀一下什麼是OPPO Hyper Boost技術——知其然,也得知其所以然。
說優化,對流暢的理解很重要
今年特別有意思,智慧手機廠商們本來一個個都是做硬體的好手,但從6月的華為開始,大家好像都化身碼農,軟體,不,準確的說是軟硬體結合的技術紛紛走到臺前:除了本文的主角OPPO Hyper Boost,華為的GPU Turbo和CPU Turbo、vivo Dual Turbo、nubia Evolution Tensor等一干技術先後登場,雖然它們的名字看上去各有千秋,但目的都只有一個:為了讓系統變得更流暢。而事實也是如此,到了今年,伴隨著安卓智慧手機多年的卡頓問題,在各家的UI上都陸續被“幹”掉了。關於它們的實現方式,我自己的公號和微博都有相關的解釋,我也自認為是說得比較清楚了,有興趣的朋友可以自行搜尋。
在優化系統之前,如何去定義“流暢”是個前提,只有搞定了這個標準,後邊的工作才能有的放矢。在陳巖帶領的OPPO軟體團隊的標準中,一個流暢的系統需要在三個維度達標,才能算是有著良好的使用者體驗:
●視覺上,顯示、滑動、點選等眼睛看到的畫面是必須達到一定的幀數標準——類似於我們以前說的在PC上玩遊戲要高於30fps這個保底幀數一樣;
●聽覺上,聲音的回放要清晰流暢,不能有卡頓——這個也是OK的,音畫得要同步,否則電影沒法看,遊戲沒法玩;
●網路上,延遲要在當下的網路標準中達到最小——不僅僅是現在火熱的手遊對網路延遲有要求,搶個紅包、看個網頁、問個度娘,網路延遲高了,也可以被視為卡頓。
以上述這三個維度定義流暢的標準為目標,OPPO的軟體團隊從2015年就開始進行系統引擎的開發——當然,那個時候還不叫OPPO Hyper Boost,甚至在這一串英文釋出之前,都還有名稱的更改。與此同時,還有另外一個重要的考量,即在達到這些流暢的標準之後,整個系統的功耗表現也得同等優秀,畢竟以犧牲續航為代價的流暢都是偽命題不是?那麼,這個系統引擎是如何進行工作的呢?
舉個例子,OPPO Hyper Boost偵測到前臺正在執行的應用,其刷幀行為低於了標定的幀率——哪怕是已經“習慣”了安卓卡頓的使用者並不覺得有問題,但系統並不這麼認為。這個時候,OPPO Hyper Boost就會馬上讓應用對系統資源進行額外的調取。比如讓更多的CPU核心或是CPU大核介入,或是提供GPU功率強化渲染,如果是因為WiFi網路的擁堵造成的,那麼就會讓訊號更好的行動網路介入,總之,得讓這個執行在前臺的應用能夠跑到系統標定的幀數才行。反過來,如果前臺執行的應用其刷幀動作已經達到標準,那麼OPPO Hyper Boost還會讓適當的系統資源退出,從而達到節能的目的。
不僅僅是前臺執行的應用,在遇到一些大資料載入的場景時,比如大型遊戲的載入,OPPO Hyper Boost偵測到這個行為時,又會在CPU、I/O介面、RAM和ROM等相關的系統資源呼叫上加速——即比應用普通的載入需求上提供更多的系統資源進行配合,等到資料載入動作結束,又會將這些之前用到的資源釋放出來。通過這樣的動作,部分應用的載入速度能節約近三分之一的時間,也算是很可觀了。
再比如一個非常常見的軟體應用:搶紅包。很多人覺得自己總搶不上紅包,是網路延遲的鍋,但你可曾想到,你想要搶到紅包,除了紅包這條資訊能及時到達手機之外,系統能否第一時間渲染出來搶紅包的介面也很重要,沒有“搶紅包”那個按鈕出現在螢幕上,你怎麼也不可能做到用愛或是用眼神搶吧——而在這個場景,OPPO Hyper Boost技術會讓GPU、基帶等相關元件瞬間進入雞血狀態。以安卓原生(即Linux)的標準來看,這種突發式的系統資源呼叫響應時間以20ms為基準,而OPPO Hyper Boost則通過兩套自身獨有設計的方案——行為感知排程方案和全新的Linux任務排程器,將響應時間基準提升到了0.2ms的基準。要知道,底層的速度提升了100倍,會在應用層得到更大幅度的放大。
最開始,OPPO的軟體團隊是針對Color OS系統以及系統元件進行這類優化的,這也就是OPPO Hyper Boost技術中“系統引擎”這個元件的由來,之後隨著軟體以使用者應用的發展,OPPO又將類似的方式向主流的重量級應用和手遊兩個方向進行了擴充套件,就有了遊戲引擎和應用引擎兩個部分,三者共同構成了現在的OPPO Hyper Boost。
遊戲引擎就不用說太多了,大家都懂的,現在OPPO Hyper Boost與騰訊、網易等遊戲廠商合作,已經可以在TOP 100的熱門手游上運用這項技術提升遊戲的體驗;而應用引擎就更有意思了。像微信、QQ、淘寶等熱門應用,全部都在OPPO Hyper Boost的優化範圍之內,微信與QQ也不多說了,大家都在努力——要是我們的手機不用微信,18個月之後可能都挺流暢的,而對淘寶這些應用的優化,在我進行釋出會微博直播的時候,評論裡收穫了不少好評,看來不是我一個人覺得淘寶卡啊。從而也可以看出,OPPO Hyper Boost這三個引擎元件,的確對於普通消費者日常使用是很有意義的。
不過,在說到手遊延遲上,陳巖還特別說到了一個大家容易忽視的問題:手遊的網路延遲其實分為兩種,一種是接入延遲,即手機與基站之間的延遲,另一種是真實延遲,即手機的資訊通過一系列網路到達遊戲伺服器再返回的延遲,真正影響使用者體驗的延遲是後一種,而OPPO Hyper Boost針對性優化的也正是這種延遲——嗯,很硬核了。
實誠的OPPO Hyper Boost
前邊將OPPO Hyper Boost的原理說得差不多了,但這個時間更現實的問題出現了:OPPO的手機型號這麼多,不同平臺之間的效能有云泥之別,如何保證這項技術在不同檔次的OPPO手機上都能有理想的表現?老機型怎麼辦?後續OPPO Hyper Boost會往什麼方面發展?好,讓我們在這個章節一個個的解決。
首先,OPPO Hyper Boost技術的部分元件其實已經在過往很多OPPO手機上使用了,只是三個引擎組成的全家桶頭一次出現是在最新的R17系列的機型上,所以,它不是什麼PPT技術。過往的機型,最早可以支援到2016年的產品,它可以通過OTA升級實現。要知道,OPPO Hyper Boost的各種元件很小,加起來整個包的大小也不過1MB多大,很驚人了。
其次,不同效能平臺不同標定的問題,OPPO軟體團隊不只想到了,還想得更細:採用玻璃與金屬材質外殼的機型因為散熱效能的不同,在進行標定時也有兩個不同的標準。例如不同的散熱條件,OPPO就會考慮不同的評判標準。對於不同效能的平臺,OPPO軟體團隊採用了非常“笨”的辦法,採用人工進行不斷的測試,從而為不同效能平臺標定了各種應用環境的幀數上限。比如《王者榮耀》提到的滿幀執行,在高通驍龍660這個級別及以上的平臺,是採用60fps這個標準,以下的機型則會相應降低標準——這個沒什麼問題,你要讓MT6755在《王者榮耀》團戰中跑到60fps?不是你瘋了就是手機瘋了……
我也問了陳巖為什麼OPPO現在不採用部分友商運用AI深度學習進行這些標準的自動標定,陳巖說在最開始的時候,OPPO Hyper Boost主要運用的是機器學習的語言來進行,因此自動化沒有AI的深度學習來得快,但是笨辦法有笨辦法的好處,就是專用版的終端,在優化上會更上穩妥。不過伴隨著AI深度學習技術的引入,使用者資料的不斷累計增加,以及與三大遊戲引擎的合作深入,在不久之後OPPO Hyper Boost是可以實現與第三方應用的自動適配的。
雖然現在看OPPO Hyper Boost所涵蓋的應用和遊戲並不算多,但是這些由OPPO軟體團隊一對一溝通得來的專版應用,在Color OS卻有極為高效的執行效率。比如《王者榮耀》,其他的UI的優化方式是使用AI根據應用資訊判斷1~2秒後可能會有團戰,需要進行硬體資源的調配,而在Color OS上,則是《王者榮耀》專用客戶端向OPPO Hyper Boost提前發出指令:“前方高能預警,1秒之後將有團戰,請馬上給予資源配合”,而OPPO Hyper Boost就會在0.2ms的時間裡回覆《王者榮耀》專用客戶端:“瞭解,當前CPU、GPU、RAM、ROM、網路、等各種資源,可以保證達到團戰滿血流暢執行,需要什麼請自行調取。”由應用告訴系統需要進行資源調取,系統提供直接呼叫,沒有中間商賺差價,效率自然就當然可觀了。
第三,就是使用者資料安全的問題,這個非常重要,畢竟OPPO Hyper Boost是在後臺對手機應用行為進行實時偵測的元件。對此陳巖說使用者不需要有這樣的擔心,其一,OPPO Hyper Boost是完全離線元件,其二,對於應用行為的偵測,是隻針對資料脫敏之後的行為進行偵測,比如點選操作,只會識別這是一個點選操作,對於點選的位置是不會判斷的,從而達到保護使用者隱私的目的。
在這裡特別要提到的還有兩件事情。其一,OPPO Hyper Boost的元件之一系統引擎,當前OPPO正在與谷歌安卓團隊進行溝通,有可能在未來的安卓版本中,OPPO和谷歌會達成底層介面優化合作。換句話說,Hyper Boost的部分程式碼可能將會進入安卓原生程式碼,並且開放給所有的廠商;其二,OPPO Hyper Boost的三大元件,對於應用調取系統資源的行為響應,不但完全脫離了安卓本身的工作管理員,還跳過了MTK、高通這些平臺廠商提供的資源管理器,是一套完全獨立的第三方元件,專門為Color OS和OPPO的手機服務,這一點有點像OPPO自家的VOOC充電技術,不要QC不要PE也不要PD,我就要任性做自己的。
寫在最後
在釋出會之前,我瞭解到,其實OPPO的軟體團隊起初並不希望將OPPO Hyper Boost三大元件如此公開的放在公眾的面前——也許之前它連這個名字都不叫,但是一來因為今年整個智慧手機市場的環境比較特殊,二來智慧手機市場發展到現在,當硬體90%都趨同的情況下,最後10%以及軟硬體結合,才是真正體現智慧手機廠商功力的地方。所以最後,才讓我們在今天瞭解到了這麼多OPPO對於智慧手機優化的故事,但不管怎麼說,這樣的精彩,才是我等吃瓜群眾最期待的。