: 推 louis0407 : 2048~2048是哪邊的推薦啊? 很少看到講這個 07/17 09:10
2048 是個 magic 數字,有幾十年的歷史了吧,設成固定大小是更久遠的 95 時代就有
了。會定成 2048 固定大小也有磁碟對齊和避免檔案破碎降低效能的意思。因為虛擬記
憶體空間 page 大小一般也是 4 KB 所以只要是 4 的倍數就 OK。
32-bit Windows 的預設虛擬記憶體空間是 Low 2 GB for process (user-mode)、High
2 GB for System (kernel)。如果開啟 4GT 就變 Low 3 GB、High 1 GB。所以 32-bit
Windows 的 Kernel Memory Dump 最大也是 2 GB。連 FAT16 檔案最大也是 2 GB。
很多與 Windows 記憶體相關的數據都會出現 2 GB 這個魔術數字,但好像沒看過官方
有任何聲明指出分頁檔設成 2 GB 會爆擊就是了。太大沒意義、小太不夠用,要設成
固定值就找個整數倍的比較舒服。
Windows XP RAM 小於 1 GB 時的最小預設分頁檔大小是 1.5 ×RAM;
Windows XP RAM 大於 1 GB 和 Windows Vista & 7 的最小預設分頁檔是 1 ×RAM;
Windows 10 的最小預設分頁檔是基於分頁檔的使用歷史;
預設最大分頁檔大小基本上是 3 ×RAM or 4 GB 取最大者、Windows 10 也略有不同,
與 crash dump 的需求在此忽略。
典型上建議分頁檔大小為 RAM 的 1.5 或 2 倍。一些 M$ Server Performance Tuning
課程或文件多半也會告訴你分頁檔大小至少要設為等於或大於實體 RAM 大小。這牽涉
到部分的程式或服務必需要有分頁檔,及 Windows 記憶體管理的記憶體回收問題。
Process 只能存取虛擬記憶體位置,其對應到實際記憶體位置時通常不會分配到連續的
頁面空間。虛擬地址空間也有因保留等與可能的碎片化問題。一般來說當實際使用與分
配的記憶體量很高時,分頁大小不足會導致更多的記憶體回收及更高的 CPU 使用率(
處理記憶體分配問題)。
但隨著時代改變電腦上插的 RAM 更多了,或許用不完記憶體就沒這麼多問題了!?現
在基本上是擁有的 RAM 越多所需的分頁檔大小就越小,但這還是得看實際上使用的記
憶體大小依個案來決定。
近年的 M$ 的工程師有建議依實際使用狀況去設定,執行[效能監視器]主要針對
Memory \ Committed Bytes 以 weeks 為時間來觀察實際使用狀況找出最大值。一般個
人用不想這麼麻煩可以開[工作管理員]隨便觀察下瞬間值。
[工作管理員][效能]分頁中的[記憶體]頁面
[使用中(已壓縮)]為實際分配使用中的大小,Win 10 會在 CPU 閒置時對
使用率低的記憶體分頁進行壓縮進一步減輕分頁檔需求
[己認可]=Committed Bytes / Committed Limit
[已快取]=快取資料,其佔的空間可隨時依需求清出供使用
Memory\Committed Bytes=已提交的虛擬記憶體量
Memory\Committed Limit=在不擴張分頁檔下可提交的虛擬記憶體量=RAM + Page File
Memory\% Committed Bytes In Use=上述兩值相除得出的使用率
[使用中]與[已認可]的大小不相同主要還是要看已認可。[已認可]可簡單視為虛
擬記憶體總使用量。
在系統高負載尖峰狀態、高記憶體使用率下,也就是 Max Committed Bytes 值就是參
考點。如果電腦實際 RAM 的大小超過 Committed Bytes 最大值且有餘裕就不需要設定
太大的分頁檔,留有應付突發狀況的容量大小就可行。
但由於分頁檔大小對於記憶體管理效能有著一定的作用,且[可用的]記憶體容量也影
響到可供快取使用的大小。有充足的分頁檔容量系統就能將使用率低的記憶體分頁丟到
分頁檔。在磁碟性能、分頁檔大小還會影響 CPU 使用率、可快取容量等怎麼樣才是最
佳平衡不見得統統都設個 2048 就是最佳化就是了。
但不管怎設應該也不會在數位域直接影響到聲音就是了。硬碟進入省電、怠速這卡讀取
的會有嚴重的頓卡聲不會只是感受不同,且播放中的相關程序怎麼說也不太可能被丟到
分頁檔裏。有什麼影響的話多半也就是 CPU 使用率與磁碟機吃電不同的影響使電源迴
路、EMI/RF 雜訊造成的影響了吧。
就跟 Audio Latency 一樣,基本上低 Latency 會有更頻繁的 CPU 喚醒,除了 CPU 功
耗會更高,路上碰到紅燈跟撞車的機會只會更大。M$ 的 WASAPI 官方文件就聲明低
Latency 會讓發生 glitches 的風險更大。
如果真的在不同 Latency 有不同感受的話,至少希望使用 WASAPI 時 buffer 大小設
定為 0、1、2、3 ms 這些數字時是有著相同的感受,不然大概可能就只能說是心靈不
夠堅強了。