Deepin系统死机问题分析
2020-05-20广州张鹏
■ 广州 张鹏
编者按:笔者在使用Deepin操作系统时遇到系统卡顿甚至死机的现象,经推断并非系统本身的问题,最后发现是浏览器中Flash插件不兼容导致。
Deepin操作系统是基于Debian的Linux发行版本。目前,Deepin系统的最新版本为15.11,按照官方通告将于近期推出v20版本。
这段时间由于“新冠”疫情隔离原因终于有了一整段的空闲时间,笔者于是打算在一台老旧笔记本上安装Deepin 15.11,用以替换停止服务的Windows 7。Deepin系统符合中国人的使用习惯,可以支持WPS等办公软件,并且通过wine等手段可以支持QQ、微信等各类软件,基本能够满足日常工作生活需要。
此前,笔者也曾经在家里的台式机上安装过15.11或是以前的版本,一直体验不错。只是因为一些特殊需求,才没有坚持使用。
可是这次在笔记本上的使用经历确实算不上友好,每当连续上网一段时等间后,系统就会出现卡顿甚至死机的现象。
故障现象分析
系统安装完成后主要用于Python编程、日常办公和浏览网页。系统在纯办公或是写Python代码时基本没有出现死机现象。只有在打开网页,特别是在观看在线视频时,才会频繁出现死机。
因此,笔者最先怀疑的是浏览器的兼容性问题。为了排除这一可能,卸载了默认安装的谷歌浏览器,分别安装Firefox和360浏览器测试。发现浏览网页时仍然有死机现象。使用top命令监控死机时的资源占用情况,如图1所示。连续观察发现,CPU占用情况中wa低于20时,系统基本能够连续工作。当wa达到60以上时,播放视频出现卡顿,系统出现反应缓慢的现象。当wa达到80以上时,系统基本没有响应,很快彻底死机。wa是一个百分数,表示CPU等待I/O完成时间所占百分比,也有用%iowait表示的。一般情况下wa值高说明磁盘I/O出现问题或是成为系统瓶颈。这是一台宏碁笔记本,配备酷睿i3-380M处理器,升级过固态硬盘。按理说存在I/O瓶颈的可能性不大。为了测试这一猜想,笔者做了两个实验。首先,使用Linux下dd命令测试硬盘写入能力,向硬盘写入约2.4GB大小文件,如图2所示。
图1 死机前资源占用情况
虽然硬盘写入期间系统明显变慢,但是并没有出现死机现象,而且从硬盘的读写性能来看,完全满足Deepin系统运行需要。其次,进一步模拟网页播放视频时的数据流向,测试系统稳定性。采用wget以命令行方式从网络下载一个较大文件,同时本地播放视频文件,模拟流媒体网页播放硬盘读写过程。
测试发现,当wget下载速率一般在2Mbps~5Mbps,此时视频仍能流畅播放,系统工作正常。经过这两个测试,基本可以排除硬盘因素。因为网页播放视频时,占用I/O和硬盘资源绝对不会超过wget下载时产生的资源消耗。通过查找一些iowait资料,特别是网上一篇《理解%IOWAIT(%WIO)》文章,笔者对wa的含义有了清楚的认识。
图2 硬盘写入测试
%iowait(wa值)确实表示CPU空闲、所有进程都在休眠,也确实有的进程在等待I/O,然而%iowait升高并不能证明等待I/O的进程数量增多了,也不能证明等待I/O的总时间增加了。例如,在I/O完全一样的情况下,CPU忙闲状态的变化就能够影响%iowait的大小。相反,假设CPU的繁忙状况保持不变,并发I/O请求,虽然%iowait大小不变,但实际I/O负载却是成倍增长。所以,仅凭%iowait的上升不能得出I/O负载增加的结论。
思来想去,觉得问题还应该在浏览器上。笔者偶然想到前些日子一则报道,说腾讯视频等国产软件纷纷发布Linux版本。笔者下载了一个Linux版本的腾讯视频软件deb包,使用dpkg -i安装后,打开腾讯视频软件进行点播,发现视频播放流畅,系统工作也十分正常。有了这一测试,可以得出结论,死机问题的原因还是出在浏览器上。
故障处理
既然确定是浏览器问题,那就只能再去试用不同的浏览器,几天时间测试了Firefox、谷歌、Opera等多个版本的浏览器。在不断尝试过程中发现一个现象,Opera等一些浏览器默认策略设置不播放Flash视频,需要手动允许才能播放。这些浏览器浏览网页时就不会死机,只有在手动允许播放Flash视频并且资源消耗严重时才会出现死机现象。有了这个判断,接下来就是重新安装Adobe Flash插件,又经过反复尝试发现一个相对较为老旧版本的Flash插件可以保证网页视频正常播放。
结语
回顾几天的不断尝试,笔者发现很多网页中都嵌有不少Flash特效或是小视频,原来的浏览器默认允许播放这些视频,而这台老笔记本与默认安装Flash插件兼容性较差,当大量播放视频时就会产生资源泄露,进而导致%iowait值升高,系统出现不稳定的现象。在解决了Flash插件的问题后,浏览器和系统变得稳定了。