延續之前版大的討論,希望能有所幫助。
以下為小弟參照各大論壇和朋友討論後,自己電腦有做調整的事項,不過由於本人英文頗
爛
且非電機本科,有些原理都是自己推測的,可能完全錯誤,請當作參考就好
目前電腦系統是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,整
體寧靜度和穩定感大增
上面說明基本上都是我參考各大論壇和本版後,與朋友討論後加入自己閉門造車
的推斷,請當作參考不要完全相信。