延续之前版大的讨论,希望能有所帮助。
以下为小弟参照各大论坛和朋友讨论后,自己电脑有做调整的事项,不过由于本人英文颇
烂
且非电机本科,有些原理都是自己推测的,可能完全错误,请当作参考就好
目前电脑系统是win10 21H2
电供:antec hcp850
主板:ASUS Z390 Gaming F
CPU:I7 9700KF
CPU风扇:猫头鹰NH-U12S
PCIE SSD:WD SN750 500GB
HDD:WD Ultrastar 4TB
显卡:MSI GTX1660TI ARMOR 6G OC
机壳:BQT pure base 600
机板、CPU、HDD硬盘模组线使用和云林果子大订的水蓝丁电源线,HDD SATA线也是跟果子
订制的奥2 sata线,电脑电源线暂时用hcp850原厂电源线
以下调整以zhtw版大繁体中文化的Foobar2000 1.6.10白色相簿版,并用Hugo2作为usb
dac
一、 Win10开启终极电源模式和独占音效:CMD开启后输入
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
到控制台电源选项选择终极效能计画,若有USB DAC到装置管理员寻找对应的USB模组,把
允许电脑关闭这个装置以节省电源的勾选取消掉。并在声音控制台-音效,把要的音效硬
体鼠标右键选择内容,在进阶字段把独占模式的两个选项都打勾
二、 Foobar设定:
(一)、播放输出我是选择默认HUGO2独占模式(wasapi),Chord自己写的asio在电脑调整完
后会偏中上盘,wasapi比较均衡些。
(二)、在偏好设定-进阶-播放-独占输出设定打勾,我这边hugo2用默认的push模式会爆音
所以勾选使用事件(event),缓冲设值1毫秒。
(三)、在偏好设定-进阶-执行续优先等级选择7(7为最高),勾选使用MMCSS,使用MMCSS模
式为Pro Audio(大小写都要对,空白键半角)
(四)、在偏好设定-进阶-缓冲-预读本机档案(最大16384kb)和全档案缓冲拉大(等同将档
案丢入内存拨放,我设值1048576kb),并且把音乐拨放停止硬盘休眠打勾。
(五)、使用程式Process Lasso Pro(对我有买)启用Probalance模式并把foobar排除在
probalance外。foobar CPU优先级设即时;CPU相依性只用CPU1,其余程式全用0、2-7
;I/O优先级设高;内存优先级设标准;程式电源设定终极效能,并将foobar用系
统管理员身分开启。
如果没有Process Lasso但要foobar以即时开启,可参考版上ad47大的方式
https://reurl.cc/rQnRoE
开一新记事本文件,输入下列"两行"存盘后并将此档改成.bat档,之后都用此档右键以系
统管理员开启
path=%path%;C:\Program Files (x86)\foobar2000
start /d"C:\Program Files (x86)\foobar2000" /realtime foobar2000.exe %1
三、 设定MMCSS(后面说明):
WIN+R输入regedit,寻找位址
电脑\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Multimedia\SystemProfile\
SystemProfile的NetworkThrottlingIndex不开(16进位ffffffff)
SystemProfile的SystemResponsiveness 默认值16进位14(10进位20),在调整后16进位设
值a(10进位为10)
SystemProfile\Tasks\Pro Audio
默认值
Affinity :0
Background Only :False
Clock Rate :2710(10进位10000)
GPU Priority :8(10进位8)
Priority :1(10进位1)
Scheduling Category :High
SFIO Priority :Normal
调整后
Affinity :0
Background Only :False
Clock Rate :1(10进位1)
GPU Priority :1a(10进位26)
Priority :2(10进位2)
Scheduling Category :High
SFIO Priority :High
四、 设定IRQ Priority:
开始-系统管理工具-系统资讯-硬件资源-IRQ找所需的IRQ代码,我IRQ设定只有系统计时
器(0)、数值资料处理器(13)和两个usb3.1可延伸控制器(4294967282、4294967283)
WIN+R输入regedit,寻找位址
电脑\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
鼠标右键新增DWORD32位元(10进位)
命名IRQ0Priority,设值1
命名IRQ13Priority,设值99
命名IRQ4294967282Priority,设值1
命名IRQ4294967283Priority,设值1
全部好后重新启动电脑
五、 在Windows中延长对USB设备的检测时间
电脑会定时扫描USB 是否有设备连上,默认是每1毫秒扫描一次, 但能调整成每5毫秒扫描
一次。WIN+R输入regedit,寻找位址
电脑
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36fc9e60-c465-11cf
-8
子分类每个都鼠标右键新增DWORD32位元命名IdleEnable,设值1
调整完后声音也是干净稳定许多
我有动的大致上是这样,电脑本身仍然是以多工用途为主,所以并没有停用太多东西,
BIOS也没动多少。
/////////////////////////////////////////////////
以下说明基本上都是我参考各大论坛和本版后,与朋友讨论后加入自己闭门造车的推断,
请当作参考不要完全相信。:
1. 有关WASAPI
参考微软官方说明网页(子分类还有很多):
(1).WASAPI https://reurl.cc/VjqX46
(2).Exclusive-Mode Streams https://reurl.cc/l9Md7v
这篇在解释push模式和event模式运作原理,以及wasapi若缓冲设置小 于10毫秒,会指
派MMCSS的Pro Audio项给执行绪,若大于10毫秒则指派Audio项(所以Foobar 1.6.7版后才
会默认wasapi缓冲值为10)
(3).User-Mode Audio Components https://reurl.cc/Opeqj9
这篇在解释微软声音架构是怎么跑的,同时可参前面本标题讨论串其他版大的说明
(4).Low Latency Audio https://reurl.cc/qO380D
以及之前版上louis0407与oswyn大之前在此标题讨论串的文章。
2. 有关多媒体类别排程器服务MMCSS
参考微软官方说明网页 https://reurl.cc/3jZL6X
以及很重要的,MMCSS于2005年的专利文件 https://reurl.cc/mGN9Rj
老实说我到前为止还没有完全了解运作原理,所以下面可能会有很多错误
(1). SystemResponsiveness
这行指令写在MMCSS的母层,默认值16进位为14(10进位20)在专利中作为示范值。下面
用10进位值解释。
大意上,SystemResponsiveness用于指示应将CPU资源应用到非多媒体执行绪(即不
受 MMCSS 控制的执行绪)的时间百分比。如果设值20,电脑运算中可以给予MMCSS控制的
执行绪80%的时间使用权,留给其他执行绪20%的时间使用权,如果10进位设值10,电脑运
算中可以给予受MMCSS控制的执行绪90%的时间权,留给其他执行绪10%的时间使用权。未
平均整除的值会无条件进位到最接近10的倍数,0值也会被视为10。
(2).子项Pro Audio
I. Affinity:
完全不知道怎么用所以没调,不知道是指定某核心运作还是动用几个核心运作
II. Background Only:
具2005年专利档是说只有在任务永远在后台,不在前台运作,才需要设为True
III. Clock Rate:以下讨论用10进位
这应该是我最困惑的,调整有感的情况下解释上却又好像有冲突。
微软官网说明中,A hint used by MMCSS to determine the granularity of
processor resource scheduling.Windows Server 2008 and Windows Vista: The
maximum guaranteed clock rate the system uses if a thread joins this task, in
100-nanosecond intervals.
系统保证的最大速率,以100奈秒为单位。但究竟运作原理是么跑完全无法理解。我在和
朋友讨论后,得出的结论:
“2005年专利档中提到,图例FIG.2. 是示例性执行续的优先级随时间变化的图表,横向
时间单位是10毫秒,纵向以优先权23和6当范例,在SystemResponsiveness值20的情况下
,某执行绪A优先值23在使用8毫秒CPU(CPU80%)后,接着有时间敏锐度较低的执行绪B需要
使用CPU资源,则MMCSS会将A优先值23降到6,如果没有其他执行绪需要资源则会维持在23
,并在两毫秒后(CPU20%)如果优先值有降到6则会调回23,并进行下一次的循环。而示范
文clock rate是100000(100奈秒),即10毫秒,所以我和朋友推断clock rate应该就是
mmcss一次循环的时间单位,最低能以值1(100奈秒)作为一循环”
Win10 clock rate默认值为10000(100奈秒)即1毫秒,我在调整时曾认为与系统计时器最
高精度有关,所以使用TimerResolution测我的电脑最高精度能到0.496ms,微软官方工具
ClockRes在我用档案总管位址alt+d后输入cmd并用cmd开启后测得值为0.5ms,所以我将
clock rate值设成4960,声音变得更为流畅、饱满、干净,但当我持续下修值到1000、
100甚至是1时,仍然能感觉到流畅性大幅提升,所以目前我将值设为1,不过不排除只是
我脑放错觉就是。
IV. GPU Priority:以下用10进位讨论
各大论坛基本上都推荐设值31,新天新地部分文章讨论则是设低。
微软官网解释:The range of values is 0-31. This priority is not yet used;同时
下面还有执行绪优先级分类,分别为1-7、8-15低、16-22中、23-26高4大类,但唯独没有
写27-31分类在哪。
参考2005年专利档后,当时图Fig.1A.示范正常系统的优先度(0-15普通16-31即时),图
Fig.1B.则是多媒体排成服务优先度(分1-7低低、8-15低、16-23中、24-26高 27-31图没
分类)。文章中则提到,1B图中27-31值不被mmcss采用,所以实际mmcss使用的最高值为26
,27-31会被排除在mmcss外。微软官网介绍的后段This priority is not yet used,可
能就是指值27-31。
原先我也照版上其他版大的建议设值为31,在看完两篇文章的解释后决定设值26,相较起
来,31声音比较烦躁,全部都黏在一起,26声音比较饱满、泛音比较完整、声底更干净,
设值1声音最干净,但反而会觉得好像掉了些细节一样少了什么。也可能我脑放,或许声
音根本没动到GPU,值都是设爽用的而已。
V. Priority:
微软官网只有1(低)-8(高)可以调而已,本来我调8,但官网后面有但书“For tasks
with a Scheduling Category of High, this value is always treated as 2.”。后面
我便测试2、8,听起来的确没差就设成2了。
VI. Scheduling Category:High、Medium、Low三种,总之调High就对了。
VII. SFIO Priority:官网解释是只有Idle、Low、Normal、High,不过我使用
process lasso时发现他的多媒体排成服务调整还有Critical,实际使用后会爆音就放弃
了。不过官网备注This value is not used是指什么东西我就不清楚了。
大致上,微软将WASAPI许多地方连在mmcss一起运作了,所以只要使用WASAPI,建议还是
调整下
MMCSS。
3. 有关IRQ Pririty
在开始-系统管理工具-系统资讯-硬件资源-IRQ中,与从控制台-装置管理员中的IRQ,在
某个部分会变成系统资讯里是正数,如我的usb3.1延伸控制器正数是4294967282,负数是
-13,负数好像只是另外一种函数写法而已,查到的资料是说以负数表示没有实体物理插
断,只透过软件指令进行插断的硬件,以和有时提物理插断的硬件做区隔。
目前还是照着版上的建议,将主时钟IRQ0值设1,主机板好像本来就没有高精度计时器
IRQ8所以就没用了,数值资料处理器IRQ13则参考版上awuwa的经验,设值10进位为99,整
体宁静度和稳定感大增
上面说明基本上都是我参考各大论坛和本版后,与朋友讨论后加入自己闭门造车
的推断,请当作参考不要完全相信。