深度音乐占用磁盘IO,why?
Tofloor
poster avatar
137******41
deepin
2018-01-22 07:10
Author
本帖最后由 hykjfc 于 2018-1-22 23:43 编辑

我发现只要打开深度音乐,硬盘灯就处于常亮状态,why,这是在扫描硬盘上的音乐吗?
关键是一直灯不灭!!!即使打开不放音乐也在占用磁盘IO!!!
想一边听歌,一边干活就发现,由于IO被占用,其他程序响应变慢了。
一个音乐播放器不应该一直占用硬盘啊?到底是设计思路问题还是有bug?



2018年01月22日20:49:23补充
为防止干扰,并看看是不是其他程序和音乐互动造成了占用io的问题,注销桌面重新进入,然后发现现象有所不同,并不是每次打开深度音乐都会出现硬盘灯常亮,刚开始几次打开、关闭深度音乐,甚至播放了音乐后磁盘io很正常,偶尔亮一下。
然后我为了验证其他程序可能的影响,逐个打开了火狐、文件管理器等,当我打开了文件管理器后,又反复打开关闭深度音乐后,现象重现了。而此时swap占用几乎为0,内存充足。
我打字期间硬盘灯一直常亮,并没有播放音乐,当我准备再次测试时,关闭音乐,磁盘灯灭了,再打开,神奇了,硬盘灯又不一直亮了,貌似存在某种偶然的触发……

2018年01月22日20:59:15 来一次比较严谨的场景测试
1.重启系统,进入桌面,直接就打开深度音乐,一次中招,硬盘灯立即进入常亮模式,我看到进程中有文件管理器进程一个带-d,一个带-f,怀疑是不是文件管理器带-f的进程在扫描,kill之,没用,然后关闭,硬盘灯不亮了。排除文管影响;
2.关闭,再打开。硬盘灯又不常亮了……wo?????放歌,依然正常,好吧……
3.关闭,再打开。硬盘灯又常亮了!!!先关闭监视器,依然常亮。和监视器无关,后面不测试这个了。
4.关闭,打开。硬盘灯又不常亮了!好,不放歌,连续开关几次,硬盘灯正常!
5.打开,放歌,正常,关闭。
6.再打开,亮了!直接关闭;再打开,亮了!反复几次都是这样,已经亮了,直接关闭、再开似乎不能解决问题!!
7.放歌,关闭,再开,正常。

看起来和是否播放音乐有一定关系,已经亮了,先放歌,再关,再启动时,似乎就不亮了;没有亮,放歌,关闭,再打开,就可能会亮!!
重点测试这个推测!
第一阶段:

  • 现在已经亮了,打开状态,放上次关闭时播放的那首歌,直接关闭,重开后依然常亮;
  • 反复上述操作一次,仍然亮;
  • 继续放那支歌,但是先暂停,再关闭,重开,不亮了!!!
  • 继续放那支歌,直接关闭,重开,不亮。
  • 重复一次,亮了!
  • 继续放那支歌,直接关闭,亮了。
  • 反复开关几次,但不放歌,亮了几次后,不亮了!(至此,感觉直接在放歌时关闭可能导致下次开启硬盘常亮)
第二阶段:
  • 现在不亮,按照gental的操作来一次(放歌、暂停、关闭),播放另一首歌,16.6mb的画心,谁知突然发现新问题——音乐的磁盘读取居然稳定在2.3Mb左右,常亮,好吧,新问题。暂停播放,依然常亮!!!io持续稳定在写4kb左右,读60-100多b,都暂停了,这是在干嘛?无法理解。先不管了,记录下,关闭。
  • 打开,硬盘不常亮,继续放歌,又出现上述持续读写问题。
  • 关闭重开,没放歌就进入了低速持续读写状态,常亮
  • 直接关闭打开2次后,持续读写现象消失,变为偶尔低速读写,正常了。

第三阶段:
  • 打开,不亮,播放上次最后播放的歌,正常。暂停后关闭。
  • 打开,没放歌就进入了低速持续读写状态,常亮。
  • 继续放同一只歌,暂停,低速持续读写状态,常亮。
  • 关闭再开,常亮。换支歌,2.4mb持续读写,常亮。暂停关闭。
  • 再开,亮了!
  • 看来正常操作已经无法结束常亮状态!强制退出
  • 打开,不亮了!放歌,2.4mb持续读写,刚开始不常亮,稍后又常亮了。
  • 播放中强退,再开,常亮。
  • 不放歌,强退,再开,不亮。
  • 重复上述操作多次,不亮。
  • 打开,直接播放非上次最后播放的歌,2.4mb持续读写,常亮。暂停,强退。
  • 打开,不亮。关闭。
  • 打开,常亮。强退
  • 打开,不亮。强退
  • 打开,常亮。强退
  • 打开,常亮。强退
  • 打开,不亮。强退
  • 打开,不亮。放歌,暂停,强退
  • 打开,常亮……

好吧,总结一下:
  • 排除了一些触发常亮用户操作:如是否放歌、放历史上最后一首歌还是其他歌,正常关闭还是强退,都不重要。
  • 播放、甚至暂停过程中经常发生持续读写,照理说缓存歌曲、记录播放点等的操作不应该出现持续读盘现象,这里可能有问题!
  • 已经出现常亮后打开,不放歌,直接强退可大概率实现下次打开时不会直接造成硬盘常亮
希望找一找是哪里的代码造成了持续的硬盘读写!

神奇的是,另一款音乐播放器,网易云音乐,看上去进行更占用io的写操作更多,反而不会出现硬盘灯常亮的情况(读60kb,写300-400kb),why???


深度音乐不播放时:看上去io很低,写4.7kb,读76b,然而,硬盘灯却是常亮




深度音乐播放时:写4.7kb,读2.4mb,硬盘灯也是常亮

Reply Favorite View the author
All Replies
avatar
137******41
deepin
2018-01-22 17:14
#1
希望官方重视一下这个影响性能的问题。https://bbs.deepin.org/user/101846
Reply View the author
avatar
iceyer
deepin
2018-01-22 21:23
#2
本帖最后由 Iceyer 于 2018-1-22 13:30 编辑

1 音乐不会自动扫描硬盘
2 正常情况下,不播放音乐的情况下是不占用io的。可以安装一个iotop命令查看一下
sudo apt install iotop
sudo iotop
这样就可以看到是那些应用在使用io了。

3 播放音乐情况下,如果开启了进度记录功能,会间隔几秒来写入当前的歌曲进度,这个会占用磁盘io。如果不需要这个功能可以在设置里面关掉。这个功能应该基本上不占用什么IO的。
Reply View the author
avatar
wangyong
deepin
2018-01-22 22:16
#3
楼主,深度系统监视器因为要考虑小屏幕的情况,默认没有开每个进程的磁盘统计列,像我截图的那样,邮件点击列标题区域,勾选磁盘写入和磁盘读取两项,就可以看到到底是那个进程在占用你的磁盘读写了。

Reply View the author
avatar
137******41
deepin
2018-01-23 03:48
#4
https://bbs.deepin.org/post/152181
楼主,深度系统监视器因为要考虑小屏幕的情况,默认没有开每个进程的磁盘统计列,像我截图的那样,邮件点击 ...

打开监控之后,尴尬了。
只要一启动深度音乐,硬盘灯立刻亮起来不熄灭,关闭立马就ok,然而看看监控信息……神奇了,亮点在哪里?

看监控,音乐没有占用多少磁盘io,反而是监视器io明显增多……



关闭音乐后,监视器io也随之大量下降。


神一般的情况。

Reply View the author
avatar
166******72
deepin
2018-01-23 04:08
#5
经验证确实存在这个问题,只是我这边影响细微罢了。
启动深度音乐,深度监视器硬盘读取200~300KB/s

关闭深度音乐,深度监视器硬盘读取只有30~50KB/s

Reply View the author
avatar
六七八九十
deepin
2018-01-23 04:12
#6
监视器占用cpu大
Reply View the author
avatar
newsky
deepin
2018-01-23 04:25
#7
占用io很正常,软件装在硬盘里面,需要加载入内存条才能接受cpu指令运行,当你打开的应用越多,系统就会将你闲置的音乐应用放到swap交换空间里面,swap是基于硬盘的一个分区,速度比内存慢上很多,这时你又多手点开音乐应用,系统只能响应你的指令,把swap的东西往内存条里搬,这时候整个系统都为这个指令让道,硬盘在勤奋读写,你眼里只看到硬盘灯狂闪,不知所措地就来官网哀嚎。一个培训班出来渣渣的程序员对你说的话。
Reply View the author
avatar
137******41
deepin
2018-01-23 04:47
#8
https://bbs.deepin.org/post/152181
占用io很正常,软件装在硬盘里面,需要加载入内存条才能接受cpu指令运行,当你打开的应用越多,系统就会将 ...

你看到我交换空间稍微显得大,只是因为我用了hibernate,刚刚恢复过来,并不是深度音乐在swap;
为了防止swap干扰并防止其他程序干扰,我后来注销了桌面重新进入仍然会有类似情况。
Reply View the author
avatar
137******41
deepin
2018-01-23 07:08
#9
https://bbs.deepin.org/post/152181
楼主,深度系统监视器因为要考虑小屏幕的情况,默认没有开每个进程的磁盘统计列,像我截图的那样,邮件点击 ...

我进行了进一步的测试,希望你们项目组抽空看看问题所在。关键表征是深度音乐经常出现持续硬盘读写行为。
我就差去看代码了,对qt c++不是很熟悉,不太想看。
上次改深度看图记住浏览时的位置、缩放信息花了我好几天时间才基本实现,还有点问题,想改好了再直接提交到git上,但一直没有时间做,实在不是很空,单位还有些java和js代码要写……
Reply View the author
avatar
wtz
deepin
2018-01-23 11:19
#10
常亮可能是连续低速读取磁盘,不一定会对IO性能产生太大影响。
不过楼主认真钻研的精神还是要赞一下的。
Reply View the author
avatar
158******67
deepin
2018-01-23 17:25
#11
我和楼主同样的问题,但我不懂电脑,所以我直接用了第三方的音乐播放器,等下一个版本再看看会不会改进吧!
Reply View the author
avatar
iceyer
deepin
2018-01-25 03:55
#12
这个问题在测试基本确认了,应该是记录播放进度的代码有Bug。
会导致即使不播放任何音乐也可能会产生一定的io占用。

我们预计在两周左右推送一个更新来修复这个问题。
Reply View the author
avatar
137******41
deepin
2018-01-25 05:26
#13
https://bbs.deepin.org/post/152181
这个问题在测试基本确认了,应该是记录播放进度的代码有Bug。
会导致即使不播放任何音乐也可能会产生一定的 ...

官方响应很快,不枉费我测试那么久,O(∩_∩)O哈哈~,点赞!!!!!!!!
Reply View the author
avatar
smdnnutk
deepin
2018-01-25 07:35
#14
我去,好多大神啊深度有你们一定会完美的。。。
Reply View the author
avatar
duanyao
deepin
2018-01-25 08:28
#15
你应该使用合适的工具来监视磁盘IO,比如 atop 或 iotop 。
深度监视器显示的并不是真正的磁盘IO,而是包括了磁盘缓存的流量,所以总是偏大的,有时候偏的还很远。
Reply View the author
avatar
wangyong
deepin
2018-01-25 09:45
#16
https://bbs.deepin.org/post/152181
官方响应很快,不枉费我测试那么久,O(∩_∩)O哈哈~,点赞!!!!!!!! ...

楼主也是牛逼了,生生用逻辑推断和数据证明了深度音乐的问题,大赞啊!
Reply View the author
avatar
duanyao
deepin
2018-01-25 18:22
#17
https://bbs.deepin.org/post/152181
我进行了进一步的测试,希望你们项目组抽空看看问题所在。关键表征是深度音乐经常出现持续硬盘读写行为。 ...

strace 是个有用的工具。
Reply View the author