15.7 終于如期地發(fā)布了……好吧冒掌,也就晚了2個(gè)工作日……畢竟這么好的版本,多等兩天也可以的株婴,對吧怎虫。需要多解釋一句的是,我們之所以也沒有按照往常的套路——拖到周五發(fā)困介,是因?yàn)橹芪鍎偤檬乔槿斯?jié)大审,畢竟程序員找個(gè)女朋友不容易,所以就拖了兩天……這應(yīng)該是個(gè)好借口吧 :P
發(fā)完系統(tǒng)第一件事情當(dāng)然就是寫《研發(fā)心得》咯座哩,不知道從什么時(shí)候開始徒扶,《研發(fā)心得》成了發(fā)布標(biāo)配,上午發(fā)系統(tǒng)根穷,晚上就要《研發(fā)心得》姜骡,我只能微笑著說……嗯,挺好的屿良!不過雖說是研發(fā)心得圈澈,但是別人看了我的心得以后都說像軟文。我的想法是這樣的:像軟文就像軟文嘛尘惧,讓各位支持deepin的朋友看得舒舒服服的同時(shí)還能了解新功能康栈,多好!
不過這次我準(zhǔn)備換個(gè)風(fēng)格喷橙,重點(diǎn)是真實(shí)啥么。所以,這次的心得我準(zhǔn)備說說 15.7 這個(gè)版本的臺(tái)前幕后重慢。
臺(tái)前&幕后
“這是我用過的最好的deepin版本”饥臂。
我預(yù)測應(yīng)該有很多用戶會(huì)跟我有同樣的想法逊躁,畢竟似踱,對于發(fā)了這么多版本的我來說,15.7 是第一個(gè)版本讓我有重新完整安裝一次這樣沖動(dòng)的版本稽煤。三年多以來核芽,每逢系統(tǒng)發(fā)布前,我都會(huì)挑一個(gè)良辰吉日加上一個(gè)好時(shí)間酵熙,這個(gè)時(shí)間其實(shí)主要取決于版本發(fā)布的延期情況而定轧简,隆重地安裝一下即將發(fā)布的新版本的ISO,說是為了測試一下其實(shí)是騙人的匾二,畢竟我也測試不出什么bug來……主要是裝一下心里面爽啊哮独,你們要明天才能下載拳芙,我今天就用上了没宾,呵呵呵……
雖說每次的ISO我都安裝過凉蜂,但是我從來沒有舍得把我現(xiàn)在在用的系統(tǒng)格式化掉重新安裝蔚约,因?yàn)檫@個(gè)老家伙從deepin切換倉庫到Debian我重新安裝了一次系統(tǒng)開始就一直陪伴著我蘑辑,沒有必要的話先鱼,我是想一直讓它繼續(xù)往上升級的渴析。直到這次15.7發(fā)布啄寡,我感覺它又是一次值得紀(jì)念的發(fā)布才想著來一次完整重裝拾弃,不過沖動(dòng)歸沖動(dòng)讯檐,我還是按捺住了心中那團(tuán)火——還是沒有重新安裝羡疗,因?yàn)樗紒硐肴ィ壣蟻淼囊彩且粯拥穆?:)
這次升級可以分為兩大部分别洪,一部分是DDE的優(yōu)化叨恨,另一部分是倉庫同步Debian上游。從一個(gè)用戶的角度出發(fā)挖垛,我覺得吸引我的地方特碳,或者說值得用戶期待的地方主要有這么幾個(gè):
更快的啟動(dòng)速度
這個(gè)主要得益于“林姐”親自操刀的文件預(yù)熱技術(shù)warm-sched
,它主要的原理是這樣的晕换,大家知道操作系統(tǒng)在啟動(dòng)的過程中午乓,會(huì)進(jìn)行大量的IO操作,這個(gè)在CPU性能不是問題的平臺(tái)上就是啟動(dòng)慢的罪魁禍?zhǔn)琢苏⒆迹蠹疫€知道Linux內(nèi)核其實(shí)本身是有文件緩存機(jī)制的益愈,被緩存的文件訪問會(huì)非常非常快夷家,所以如果我們在系統(tǒng)加載的適當(dāng)時(shí)候能進(jìn)行一定的預(yù)熱蒸其,那么系統(tǒng)加載的時(shí)間當(dāng)然就會(huì)大大縮短了。
不過這個(gè)會(huì)導(dǎo)致的一個(gè)問題就是库快,用戶登錄的速度變得飛快(從原來的10s+變成3s)摸袁,但是系統(tǒng)好像在deepin水波紋的時(shí)間似乎更長了,其實(shí)不用”似乎“义屏,真的會(huì)這樣靠汁,文件預(yù)熱技術(shù)不是神話,它沒辦法吃掉那部分加載文件的時(shí)間闽铐,它能做到的只是在合適的時(shí)間點(diǎn)預(yù)熱下一個(gè)階段需要的文件蝶怔。
”這不是拆東墻補(bǔ)西墻么?“你可能會(huì)這么問兄墅,但是我要告訴你還真不是踢星,如果沒有預(yù)熱,系統(tǒng)加載文件的過程是”亂序“的隙咸,這里的亂序是指文件存放不一定是順序存放在磁道上的沐悦,亂序的文件訪問會(huì)導(dǎo)致磁盤訪問的過程中轉(zhuǎn)來轉(zhuǎn)去的成洗,效率低下;相反藏否,warm-sched
不僅只是對文件預(yù)熱泌枪,加載的過程可以保證磁盤的順序訪問,文件多了的話秕岛,這部分優(yōu)化還是比較可觀的……
我記得以前有位同事總是喜歡開玩笑說”蒼蠅也是肉啊“碌燕,當(dāng)時(shí)在飯桌上沒少讓人倒胃口,但是這句話用在性能優(yōu)化继薛、以及上面這個(gè)例子上算是再合適不過了修壕。
更少的資源占用
首先是電量,如果你是筆記本的話遏考,應(yīng)該能感受到筆記本續(xù)航的提升慈鸠,deepin測試人員實(shí)測的數(shù)據(jù)是以前3小時(shí)續(xù)航能力的筆記本,待機(jī)會(huì)多出30分鐘+的時(shí)間灌具,也就是提升差不多有17%青团,跟使用powerstat
這個(gè)工具測試的效果基本相差不大。那是不是原來待機(jī)4個(gè)小時(shí)的筆記本咖楣,也只會(huì)多出30分鐘的續(xù)航時(shí)間呢督笆?并不是的,因?yàn)檫@是一個(gè)功耗比例上的變化诱贿,這次優(yōu)化以后理論上可以增加的待機(jī)時(shí)間就是 原來的待機(jī)時(shí)間x17% 了娃肿,如果你的電池健康程度夠的話,應(yīng)該能有更大的優(yōu)化效果珠十。
不過料扰,這些都是在使用電池的情況下的數(shù)據(jù),因?yàn)槟J(rèn)情況下deepin系統(tǒng)只有在拔掉電源的情況下才會(huì)自動(dòng)進(jìn)入節(jié)能模式焙蹭,如果你想在連接電源的情況下也開啟節(jié)能模式晒杈,我是說假如你真這么環(huán)保的話,你可以在控制中心的電源模塊手動(dòng)打開節(jié)能模式孔厉;相反拯钻,如果你像我一樣不在乎耗電,只追求卓越的性能烟馅,你也可以隨時(shí)把節(jié)能模式關(guān)掉说庭,大丈夫就是這么帥然磷,不怕編譯的時(shí)候機(jī)器燙手郑趁;總之,由著你的性子來姿搜!
另外一個(gè)能明顯感受到的變化是開機(jī)內(nèi)存的減少寡润,這里所說的開機(jī)內(nèi)存是指在沒有任何開機(jī)啟動(dòng)項(xiàng)的情況下捆憎,DDE達(dá)到穩(wěn)定狀態(tài)的一個(gè)內(nèi)存值,由原來的 1.1G 占用降低到 830M 左右梭纹,在使用獨(dú)顯的情況下躲惰,內(nèi)存占用會(huì)更低,簡直令人發(fā)指变抽!好處是什么呢础拨?更低的內(nèi)存占用意味著DDE變得更加輕量,應(yīng)用程序可以占用更多的系統(tǒng)資源绍载,例如你是chrome這個(gè)內(nèi)存占用大戶的用戶诡宗,15.7 可以讓你在系統(tǒng)不變卡的情況下多開十來個(gè)標(biāo)簽頁呢,是不是很開心击儡?
不過做這些優(yōu)化的過程中最讓我感到意外的是DDE對電量消耗的“助攻”竟然沒有大家預(yù)想的那么多塔沃,進(jìn)程抽風(fēng)性地CPU占用高、間歇性地進(jìn)程狀態(tài)切換等居然連硬件功耗的零頭都占不到阳谍,不過該改的地方一個(gè)都不少蛀柴,所以,DDE 的CPU占用高的問題在15.7中也可以不用再見了矫夯。
更新的軟件和驅(qū)動(dòng)
這個(gè)就不用多說了鸽疾,搭載了Debian上游最新的一波升級,你想要的“更新的軟件”训貌、“更新的驅(qū)動(dòng)”統(tǒng)統(tǒng)都給你肮韧,就是這么大方!而且旺订,這次你收到的不僅僅是一次更新帶來的快感弄企,更是deepin更新會(huì)變得更加快、準(zhǔn)区拳、狠的承諾拘领。在15.7的需求中我們爭論了好多次,一方說已經(jīng)有太多用戶吐槽我們軟件不夠新樱调、基礎(chǔ)庫不夠新约素,用戶需要新的軟件;另一方說更新太快容易導(dǎo)致用戶環(huán)境不穩(wěn)定笆凌,我們畢竟是一個(gè)面向普通用戶的發(fā)行版圣猎;爭論不休,都可以開一個(gè)深度辯論賽了……最后終于達(dá)成一致乞而,我們希望能更快速的將軟件更新推送給用戶送悔,不再一次性積累大批量的更新,同時(shí)保證一定的節(jié)奏,確鼻菲。快速更新的同時(shí)不會(huì)掛掛掛荚藻。
另外,值得一提的是論壇用戶和老板不停的要求洁段、催促和威逼利誘下应狱,我們終于——終于把PRIME
方案引入到了深度顯卡驅(qū)動(dòng)管理工具中,現(xiàn)在如果你是雙顯卡(N+i)用戶祠丝,你只要小手一點(diǎn)疾呻,就可以方便地在幾個(gè)預(yù)設(shè)方案中輕松切換了……嗯,不辛苦写半,用戶和老板高興就好 :)
一點(diǎn)感悟
上面說了這么一大堆罐韩,其實(shí)當(dāng)時(shí)為了準(zhǔn)備這些優(yōu)化的內(nèi)容的時(shí)候,心里面還是比較慌的污朽,因?yàn)橄到y(tǒng)優(yōu)化這事兒做起來遠(yuǎn)沒有聽起來那么爽散吵,尤其是在沒有既定方法的情況下要定一個(gè)優(yōu)化目標(biāo)出來,還是相當(dāng)無助的蟆肆,而且一旦你陷入 盲目—煩躁—焦慮 的怪圈中矾睦,就很難再痛快地出來,這就是這次15.7所面臨的第一個(gè)掙扎炎功。
我跟幾個(gè)程序員都交流過枚冗,程序員大多都有比較強(qiáng)的焦慮感,再加上程序員多有潔癖蛇损,動(dòng)不動(dòng)這不清真那不科學(xué)赁温,更容易掉進(jìn)上面這個(gè)怪圈,在這個(gè)怪圈里面淤齐,你要么有一天實(shí)在承受不了了股囊,咔嚓——破罐子破摔,從此成為浩瀚宇宙中的一粒塵埃更啄;要么有一天你想通了:“還想個(gè)毛稚疹,就是干”,然后挑一件事后跟別人扯淡都羞于提起的小事祭务,慢悠悠地開始做内狗,做完了你會(huì)發(fā)現(xiàn)你的心理負(fù)擔(dān)變輕了不少,然后再挑一件小事义锥,接著干……越干目標(biāo)越近柳沙,焦慮感也越來越少……最終,完成發(fā)版大業(yè)拌倍。
所以赂鲤,當(dāng)時(shí)我們不知道到底優(yōu)化目標(biāo)定成什么樣子噪径,那就撿最笨的方法,跟其他幾個(gè)操作系統(tǒng):Ubuntu蛤袒、Win7熄云、Win10做一個(gè)橫向?qū)Ρ扰蚋纯雌渌麕准业那闆r妙真,至少做到在單一側(cè)面都不是最差的吧?(做到任一側(cè)面都是最好的荚守,就留作下次優(yōu)化的目標(biāo)吧珍德,畢竟大家都等著咱們發(fā)版呢。)定完了就朝著目標(biāo)開始研究怎么使用優(yōu)化的工具:perf矗漾、valgrind锈候、heaptrack、google-perftools等敞贡,大家都不怎么有經(jīng)驗(yàn)泵琳?那就學(xué)一個(gè)培訓(xùn)一個(gè),各自有任務(wù)去練習(xí)……等優(yōu)化的patch都集成完了誊役,對比下優(yōu)化目標(biāo)获列,不夠或者還不滿意就再來……所有15.7可見的優(yōu)化都是這么一點(diǎn)點(diǎn)的“蒼蠅肉”拼出來的。
剛好最近在Twitter上看到的一段話蛔垢,可以把我上面想說的非常明白的表達(dá)了出來击孩,把這段“心得”分享給大家:
真的,諸位鹏漆,有什么難事千萬別耗著巩梢,別等著,那只會(huì)讓人在無盡的焦慮中煎熬艺玲,你就先大吼一句:“去你媽的括蝠。”然后兩眼血絲地去推進(jìn)饭聚,去做事又跛,做著做著就有出路了。