Mate30系列發佈會上提到的“確定時延引擎”到底是個啥?
2019年9月26日,華為年度旗艦Mate30系列在上海發佈,除了一如既往的頂級硬件配置外,在EMUI系統層面華為也拿出了十足誠意,大幅提高了系統流暢性和增強了穩定性。

在講到軟件性能優化時,華為消費者業務CEO餘承東提到EMUI10搭載了新一代GPU Turbo,以及另一個大家相對陌生的技術——“確定時延引擎”。
據餘承東介紹,“擁有確定時延引擎的EMUI10,在平均響應時延和性能波動方面均有所改善,完成時延降低31%,時延波動率降低55%。無論在哪種場景下,用户體驗流暢性始終如一。 ”

然而,很多人或許還是似懂非懂,究竟什麼是“確定時延引擎”?為何它能給手機帶來穩定流暢的體驗?這還要從安卓資源調度策略説起。
力不從心的Linux資源調度
眾所周知,安卓系統源於Linux,安卓資源調度也根植於Linux內核。手機相對於PC,並不充裕的資源以及更加複雜多變的使用場景,使得源於Linux的資源調度策略越來越力不從心,安卓手機遭遇莫名卡頓也是常有的事。

要想改變這一現狀,勢必要從CPU調度、內存調度、IO這三個方面下手,撬動Linux內核。
首先, Linux中CPU調度策略傾向於公平調度,而安卓更像是當前“僧多粥少”的社會競爭狀態,不合時宜的調度,導致了手機上CPU調用準確度和效率都打了折扣。
其次,由於內存分配和回收不具備前後台進程區分的能力,不管前台還是後台發起的內存請求,系統都公平對待。這樣就會導致在系統多任務併發的情況下,導致內存無序競爭資源而陷入卡頓。
第三,幾乎手機的每一個操作都涉及到讀取和寫入(IO),當系統中出現大量IO請求,超出手機存儲設備的併發處理能力時,不能及時處理的IO請求就緩存在系統的軟件隊列和存儲設備的硬件隊列中,如此再大的內存也要堵車了。
確定時延引擎 讓後台不再無序
應運而生的確定時延引擎,不僅讓EMUI更快更流暢,而且更穩定。
為了這項黑科技,華為投入數百位技術專家,耗時近2年研發而成。基於此前多年來對安卓系統的深刻理解和持續的創新實踐,再次對整個安卓系統從框架到內核進行了一次大手術。
正如前文所述,當Linux內核資源調度策略失當,後台應用佔用過多CPU、內存或者IO時,確定時延引擎的三大變革——“VIP優先調度”、“優先級矯正”、“預留服務”便有了用武之地,讓資源真正用在刀刃上,保障用户體驗的流暢穩定。
確定時延引擎的首項變革——提供VIP優先調度服務
類似銀行的VIP通道,讓本應該優先的進程可以繞過隊列,保障執行效率。不僅如此,華為還對網絡協議棧進行了改造,針對低優先級的部分網絡業務進行協議上的限流。在網絡帶寬一定的情況下,儘可能保障“前台”業務的IO請求。
確定時延引擎的第二項變革——優先級矯正,破除任務依賴
由於Linux內核無法感知線程間的依賴關係,那麼如果一個高優先級的任務依賴於低優先級的任務,就需要將低優先級任務提前。
在這方面,確定時延引擎首先是對相關數據結構重新設計,賦予了CPU和IO調度器業務感知能力,能夠精確知道哪些線程在哪些時間段是跟用户操作真正相關的。
比如A去自動取款機取錢,B排在A後面存錢。此時取款機恰好沒錢了,那麼要麼等待銀行來給自動取款機補充資金,要麼提高B優先級,使其先存錢。兩者優劣高下立判。
正是這種對“前台”的私有化CPU和IO的定製,保障了用户的最佳體驗。
確定時延引擎的第三項變革——讓系統做到“預留服務先知先覺”
關於這點,我們可以先用城市道路的公交專用車道做個比喻。
城市裏的公交專用車道,是專門為公交車在特定時間通行的車道,主要功能是方便公交網絡應對各種高峯時段和突發狀況帶來的道路擁堵問題。在高峯期時段中,起到保障城市內部道路通暢的作用。
確定時延引擎在Linux原有調度策略上進行了增強,能夠精確識別哪些任務是“公交車”, 這些任務是否可以走“公交專用車道”,若是,則提前為其預留相關資源,從而提高其任務處理效率,保障用户操作路徑上的關鍵資源供給。
如果把上面的例子套用在內存調度上,則表示智慧前台調度既可以保證“前台”任務請求內存優先分配,減少進入慢速路徑的次數,又可以在高負載情況下緩解內存抖動現象。
EMUI創新背後是華為對 “無人區”的不斷探索
從EMUI5.0開始,華為陸續推出了“18個月持續流暢”的革命性體驗、GPU Turbo、EROFS超級文件系統、方舟編譯器以及確定時延引擎等針對系統內核進行的改動。從根本上突破了安卓智能手機越用越卡頓的弊端,並深刻改變了此後安卓的用户體驗。
EMUI在不斷“進化”,而這需要投入大量的時間和精力進行研發,每一次嘗試都是華為對“無人區”發起的探索。憑藉深厚的技術和人才積累,華為對系統極限體驗的探索還在繼續,究竟華為還藏着多少“黑科技”,就讓我們一起拭目以待吧。