■ 廣州 張鵬
編者按:筆者在使用Deepin操作系統(tǒng)時(shí)遇到系統(tǒng)卡頓甚至死機(jī)的現(xiàn)象,經(jīng)推斷并非系統(tǒng)本身的問題,最后發(fā)現(xiàn)是瀏覽器中Flash插件不兼容導(dǎo)致。
Deepin操作系統(tǒng)是基于Debian的Linux發(fā)行版本。目前,Deepin系統(tǒng)的最新版本為15.11,按照官方通告將于近期推出v20版本。
這段時(shí)間由于“新冠”疫情隔離原因終于有了一整段的空閑時(shí)間,筆者于是打算在一臺(tái)老舊筆記本上安裝Deepin 15.11,用以替換停止服務(wù)的Windows 7。Deepin系統(tǒng)符合中國(guó)人的使用習(xí)慣,可以支持WPS等辦公軟件,并且通過wine等手段可以支持QQ、微信等各類軟件,基本能夠滿足日常工作生活需要。
此前,筆者也曾經(jīng)在家里的臺(tái)式機(jī)上安裝過15.11或是以前的版本,一直體驗(yàn)不錯(cuò)。只是因?yàn)橐恍┨厥庑枨?,才沒有堅(jiān)持使用。
可是這次在筆記本上的使用經(jīng)歷確實(shí)算不上友好,每當(dāng)連續(xù)上網(wǎng)一段時(shí)等間后,系統(tǒng)就會(huì)出現(xiàn)卡頓甚至死機(jī)的現(xiàn)象。
系統(tǒng)安裝完成后主要用于Python編程、日常辦公和瀏覽網(wǎng)頁。系統(tǒng)在純辦公或是寫Python代碼時(shí)基本沒有出現(xiàn)死機(jī)現(xiàn)象。只有在打開網(wǎng)頁,特別是在觀看在線視頻時(shí),才會(huì)頻繁出現(xiàn)死機(jī)。
因此,筆者最先懷疑的是瀏覽器的兼容性問題。為了排除這一可能,卸載了默認(rèn)安裝的谷歌瀏覽器,分別安裝Firefox和360瀏覽器測(cè)試。發(fā)現(xiàn)瀏覽網(wǎng)頁時(shí)仍然有死機(jī)現(xiàn)象。使用top命令監(jiān)控死機(jī)時(shí)的資源占用情況,如圖1所示。連續(xù)觀察發(fā)現(xiàn),CPU占用情況中wa低于20時(shí),系統(tǒng)基本能夠連續(xù)工作。當(dāng)wa達(dá)到60以上時(shí),播放視頻出現(xiàn)卡頓,系統(tǒng)出現(xiàn)反應(yīng)緩慢的現(xiàn)象。當(dāng)wa達(dá)到80以上時(shí),系統(tǒng)基本沒有響應(yīng),很快徹底死機(jī)。wa是一個(gè)百分?jǐn)?shù),表示CPU等待I/O完成時(shí)間所占百分比,也有用%iowait表示的。一般情況下wa值高說明磁盤I/O出現(xiàn)問題或是成為系統(tǒng)瓶頸。這是一臺(tái)宏碁筆記本,配備酷睿i3-380M處理器,升級(jí)過固態(tài)硬盤。按理說存在I/O瓶頸的可能性不大。為了測(cè)試這一猜想,筆者做了兩個(gè)實(shí)驗(yàn)。首先,使用Linux下dd命令測(cè)試硬盤寫入能力,向硬盤寫入約2.4GB大小文件,如圖2所示。
圖1 死機(jī)前資源占用情況
雖然硬盤寫入期間系統(tǒng)明顯變慢,但是并沒有出現(xiàn)死機(jī)現(xiàn)象,而且從硬盤的讀寫性能來看,完全滿足Deepin系統(tǒng)運(yùn)行需要。其次,進(jìn)一步模擬網(wǎng)頁播放視頻時(shí)的數(shù)據(jù)流向,測(cè)試系統(tǒng)穩(wěn)定性。采用wget以命令行方式從網(wǎng)絡(luò)下載一個(gè)較大文件,同時(shí)本地播放視頻文件,模擬流媒體網(wǎng)頁播放硬盤讀寫過程。
測(cè)試發(fā)現(xiàn),當(dāng)wget下載速率一般在2Mbps~5Mbps,此時(shí)視頻仍能流暢播放,系統(tǒng)工作正常。經(jīng)過這兩個(gè)測(cè)試,基本可以排除硬盤因素。因?yàn)榫W(wǎng)頁播放視頻時(shí),占用I/O和硬盤資源絕對(duì)不會(huì)超過wget下載時(shí)產(chǎn)生的資源消耗。通過查找一些iowait資料,特別是網(wǎng)上一篇《理解%IOWAIT(%WIO)》文章,筆者對(duì)wa的含義有了清楚的認(rèn)識(shí)。
圖2 硬盤寫入測(cè)試
%iowait(wa值)確實(shí)表示CPU空閑、所有進(jìn)程都在休眠,也確實(shí)有的進(jìn)程在等待I/O,然而%iowait升高并不能證明等待I/O的進(jìn)程數(shù)量增多了,也不能證明等待I/O的總時(shí)間增加了。例如,在I/O完全一樣的情況下,CPU忙閑狀態(tài)的變化就能夠影響%iowait的大小。相反,假設(shè)CPU的繁忙狀況保持不變,并發(fā)I/O請(qǐng)求,雖然%iowait大小不變,但實(shí)際I/O負(fù)載卻是成倍增長(zhǎng)。所以,僅憑%iowait的上升不能得出I/O負(fù)載增加的結(jié)論。
思來想去,覺得問題還應(yīng)該在瀏覽器上。筆者偶然想到前些日子一則報(bào)道,說騰訊視頻等國(guó)產(chǎn)軟件紛紛發(fā)布Linux版本。筆者下載了一個(gè)Linux版本的騰訊視頻軟件deb包,使用dpkg -i安裝后,打開騰訊視頻軟件進(jìn)行點(diǎn)播,發(fā)現(xiàn)視頻播放流暢,系統(tǒng)工作也十分正常。有了這一測(cè)試,可以得出結(jié)論,死機(jī)問題的原因還是出在瀏覽器上。
既然確定是瀏覽器問題,那就只能再去試用不同的瀏覽器,幾天時(shí)間測(cè)試了Firefox、谷歌、Opera等多個(gè)版本的瀏覽器。在不斷嘗試過程中發(fā)現(xiàn)一個(gè)現(xiàn)象,Opera等一些瀏覽器默認(rèn)策略設(shè)置不播放Flash視頻,需要手動(dòng)允許才能播放。這些瀏覽器瀏覽網(wǎng)頁時(shí)就不會(huì)死機(jī),只有在手動(dòng)允許播放Flash視頻并且資源消耗嚴(yán)重時(shí)才會(huì)出現(xiàn)死機(jī)現(xiàn)象。有了這個(gè)判斷,接下來就是重新安裝Adobe Flash插件,又經(jīng)過反復(fù)嘗試發(fā)現(xiàn)一個(gè)相對(duì)較為老舊版本的Flash插件可以保證網(wǎng)頁視頻正常播放。
回顧幾天的不斷嘗試,筆者發(fā)現(xiàn)很多網(wǎng)頁中都嵌有不少Flash特效或是小視頻,原來的瀏覽器默認(rèn)允許播放這些視頻,而這臺(tái)老筆記本與默認(rèn)安裝Flash插件兼容性較差,當(dāng)大量播放視頻時(shí)就會(huì)產(chǎn)生資源泄露,進(jìn)而導(dǎo)致%iowait值升高,系統(tǒng)出現(xiàn)不穩(wěn)定的現(xiàn)象。在解決了Flash插件的問題后,瀏覽器和系統(tǒng)變得穩(wěn)定了。