自從今年上半年開始,組裡把研究工作轉移到移動平台上,研究的主要對象也就是開源的Android平台,組裡的研究方向曾覆蓋過安全性原則、代碼雲端遷移、手機應用的服務化,能量最佳化這幾個方面。導師讓我跟著移動平台能量這個方向,也希望我順著從這個方向做下去,他說只有堅持一個點的人才能成為專家,這和我最初的想法一樣,紮實的做一個方向,總能找到可做的問題有好的解決方案。
Android手機電池不耐用這個特點是廣大使用者有目共睹的,造成這個現象的原因是電池在控制體積的條件下可提供的能量有限,而且有關報道指出電池技術在這幾年很難有突破性的技術出現,這就是說支撐使用者越來越豐富的手機體驗的電量是不會有很大的變化。另一個造成耗電過快現象的原因是軟體的不恰當的行為,在我認為這是最主要的原因,也是可以在近期內提高電量支撐手機更長啟用時間的關鍵問題,也是我們研究的主要範圍。
軟體層面的問題包括作業系統機制,第三方應用的energy-unaware開發。目前看的文獻大多是關於後者的最佳化,我認為前者在能量最佳化方面肯定也有問題可以做,可能以為作業系統門檻高,前期大家願意選擇以應用程式的角度入手。
這個領域現有的工作(我現在看到的部分)主要分為兩類:一是建立能量模型找出應用的耗電行為或者細粒度化到應用內部方法或線程的耗電行為,二是對手機應用代碼遷移至遠程伺服器達到節省手機端能量的目的。
關於第一類工作,最新的工作是普渡大學的博士生Abhinav Pathak(現已畢業應該到微軟研究院工作)在Mobisys'12上發的一篇文章,可以監測到應用內部每個方法和每個線程的耗電情況,開發人員可以根據資訊反饋來審視自己的應用,消耗很大電量的方法是不是做了等值的工作,如果不是如何對能耗進行最佳化。
第二類工作最新的成果是北京大學Zhang Ying在OOPSLA‘12發表的論文,它通過程式分析可以做到自動對手機端的應用代碼切分,遷移至遠程伺服器,並自動把手機端切分後的代碼打包成APK檔案正常執行,一切都是自動實現的,這也是在這類工作中最自動化的成果。
我們組現在做的工作確切的說不屬於這兩類,我們的目標是希望通過程式分析的方法來對代碼進行最佳化,雖然方法和第二類最新工作類似,但是我們的目的跟代碼遷移無關。
這些工作大都以Android和Windows Phone系統為研究案例,沒有涉及到IOS,一個是因為IOS不開源,另一個原因也許是IOS的能量消耗已經做到了較優的程度,沒有了很大的提升空間。
打算下一篇文章弄清楚IOS和Android耗電模式的區別,敬請期待~(不是偶故意賣關子,因為馬上要去開會木有時間準備了O(∩_∩)O~)