SpinningStar 发表于 2019-1-29 08:43:13

针对foobar2000卡顿的优化总结

本人电脑win10系统,foobar版本为1.4.1
实话说在前,win10的卡顿不算太多,但我有强迫症。。。
还有,我有听歌时用电脑做其他事的习惯,此种做法会导致出现一定的卡顿,才研究的这些方法
就由此贴分享给大家
此贴仅供参考,希望在你foobar2000卡顿时能够参照此贴找到一个改善思路
请大家阅读此贴子时注意我对应的说明,都是我自己在实际使用过程当中总结出来的,由于本人水平有限,可能解释的不是特别准确到位


SpinningStar 发表于 2019-1-29 08:47:56

第一类方法:调节foobar2000自身的设置
1.缓冲长度选项
在foobar的 参数选项-播放-输出 界面上有个缓冲长度的选项

界面如图所示,单位为毫秒ms
当foobar卡顿时,可以通过适当拉高缓冲长度来提升流畅度
此项的作用是写入内存的缓冲时长,故拉高可在一定程度上解决卡顿
个人推荐500——1000ms
但请注意:
这个缓冲长度会影响听感,短缓冲下,声音解析度较高,但比较干燥,齿音较多.极端情况下,超出了声卡的能力范围,甚至会出现爆音和短暂的停顿;
高缓冲下,声音j较润,细节减少,但耐听.极端情况下,超出声卡缓存,会报错。
2.全文件缓冲选项
在foobar的 参数选项-高级-播放 界面上有一个全文件缓冲的选项

界面如图所示,这个选项的作用是设置播放时把源文件全部读入内存的最大文件大小

我设置的是1048600kb,也就是略大于1G(即为1048576kb)

请注意:在测试过程中发现foobar最大支持1G的全文件缓冲,在设置上写16G都没用,它最大还是缓存1G文件(一般的无损文件很少超过1G)

还试了试给foobar申请大内存,然并卵,最大就缓存1G

个人认为:全文件缓冲解决问题的概率较高,内存的读写速度远高于硬盘,哪怕是SSD,CPU直接从内存中读取文件,而不再是从硬盘一点点提取到内存,再由CPU读取

减少了中间过程,卡顿产生的几率也就更小。

如果你的电脑配置够好,推荐使用第二种方法,例如我电脑是16G内存,分1G听歌用总不过分吧(还不一定用满)

配置实在不行就用第一个方法,但影响听感。

SpinningStar 发表于 2019-1-29 08:54:44

第二类方法:提升foobar的优先级,并使其CPU亲和力避开CPU0
实际使用中,如果你打开任务管理器会发现:CPU0的占用率明显高于CPU1234567......

也就是传说中的“一核有难,n核围观”

究其原因,CPU0作为第一逻辑核心,什么任务都会优先找上他
windows系统自带的DPC(延迟过程调用),DPC会导致高优先级进程打断低优先级进程
一旦来了优先级更高的任务,那么foobar的任务就被搁置了,也就卡了一下。

解决此问题的方法就是使用软件 process lasso 调整
第一,调高优先级

第二,调整CPU亲和力(注:一定要避开CPU0)

第三,调整I/O优先级

第四,调整内存优先级

注:一定要在总是里更改
解释一下我们这么做的目的
foobar本来也不太吃资源,还总被打断,我们提升它这几个方面:
1.优先级:即进程优先级,设为高,防止被打断
2.CPU亲和力:选择使用率较低的CPU核心上运行foobar的进程
3.I/O优先级:即该进程的调用硬盘资源的优先级,设为高
4.内存优先级:进程调用内存的优先级

用个通俗的解释就是:让工人优先干foobar的小活,找比较闲的工人去干,仓库的钥匙给工人们,流水线也允许优先使用
这样达到了从系统层面上优化foobar

而DPC是底层系统的运行机制,相当于宪法,很难很难很难更改!!!

huizhen 发表于 2019-1-29 11:25:11

感谢分享:)

lynkyin 发表于 2019-1-29 11:32:00

啊 看起来很管用的样子,感谢楼主分享!

qpwu2011 发表于 2019-1-29 23:13:45

感谢分享

leebc 发表于 2019-1-30 01:32:48

放屁,宪法哪里难改了!:(

zxc2442 发表于 2019-1-30 04:42:27

感谢楼主的分享!不过曾经听说,如果把音乐缓存在内存里,因为内存反复地被系统读写,会使音乐文件越来越不稳定?我也不懂......

DXDXDX 发表于 2019-1-30 08:07:55

很有用,我这一直修改cpu,其他占用率高的都把cpu1去掉,foobar独占,jplay就是默认只用cpu1

bbfat49 发表于 2019-1-30 08:53:17

DXDXDX 发表于 2019-1-30 08:07
很有用,我这一直修改cpu,其他占用率高的都把cpu1去掉,foobar独占,jplay就是默认只用cpu1

我觉得最好的做法是关闭超线程(就是一个核心显示成两个看着很爽的那个技术)。然后制定特定核心给播放软件(肯定不是0)。roon除外~~~~~

pieryu 发表于 2019-1-30 16:51:48

第一个缓冲大小没听出区别来,直接拉到最大了。:lol

iLLogiCo 发表于 2019-1-30 17:42:07

感觉foobar卡顿问题在现今的主流配置下几乎不会出现了,如果有更多的会是硬件驱动和兼容性问题。
PC HIFI的那些事情没有升级硬件无法解决的,很多莫名其妙的问题升级后就都没了,而且升级硬件比优化软件带来的提升要直接有效。

iLLogiCo 发表于 2019-1-30 18:07:34

现在的操作系统如果出现一核有难七核围观的现象更可能是因为某个运行的软件没有多线程支持而却占用极大的cpu资源。结果就是不管你把这个“刺头”挪到哪个逻辑核心上仍然还是一核有难七核围观。楼主能不能放一个修改限制使用cpu核心后的cpu占用率截图.

DXDXDX 发表于 2019-1-30 18:15:06

iLLogiCo 发表于 2019-1-30 17:42
感觉foobar卡顿问题在现今的主流配置下几乎不会出现了,如果有更多的会是硬件驱动和兼容性问题。
PC HIFI ...

可能是驱动问题,但确实是foobar问题会比较明显,应该是foobar自己没做这方面的优化。roon这方面做的很好,基本不会有因为其他操作而引起音频卡断问题

SpinningStar 发表于 2019-1-30 18:40:59

综合回复一下:
1.foobar其实优化还行,但我听歌走的ASIO通道,可能就有点问题了,音质最佳,相对易卡顿;再加上我有听歌干其他事情的习惯,就更容易卡。
2.其实走DS通道从来没卡过,但音质堪忧;wasipi通道感觉有音染,就怎么没用过。
3.我CPU是i7-7700hq 4c8t 默频2.8Ghz 睿频3.8Ghz,理论上不应该会卡的,但现实打脸。
4.foobar占用不大,把它提升优先级后再移到闲置核心单独处理,卡顿问题就不大了。再把那些大型软件关闭foobar所在核心,感觉会更好。
5.之所以这么干,是因为process lasso也只是个软件,能提升的优先级有限,所以还是要配合CPU亲和力、IO优先级、内存优先级的调整。

页: [1] 2
查看完整版本: 针对foobar2000卡顿的优化总结

耳机俱乐部微信
耳机俱乐部微信