在 Windows 11 KB5030310 這個更新中,正式版的 Windows 11 終於開始支援所謂的「開發人員磁碟區」(Dev Drive)了。
根據微軟的說法,這個採用「Resilient File System」(ReFS、官方介紹)這個新的檔案系統的分割區、搭配 Microsoft Defender 防毒軟體的效能模式、可以在建置時提高 30% 的存取效能;微軟也建議把程式碼、套件快取都搬到 ReFS 的 Dev Drive 上。
而根據《Dev Drive for Performance Improvements in Visual Studio and Dev Boxes!》這篇的說法,Dev Drive 可以提高 20% 以上的效能!
既然有支援了,所以 Heresy 也就拿來試試看了!不過…不知道是不是哪裡沒弄對,結果是完全沒辦法提高建置速度,讓個人頗為失望…這邊也稍微紀錄一下。
建立開發人員磁碟區
Heresy 本來就是把相關程式碼都放在一個 NTFS 的 SAMSUNG 980 Pro 1TB SSD 上,而這邊為了測試 Dev Drive,所以又另外裝了一根新的同型號 SSD 到電腦上。
之後呢,則是先把它初始化成 GPT 後,就可以到「設定」、「系統」中,找到「儲存體」、「進階儲存空間設定」、「磁碟和磁碟區」,在裡面透過「建立 [開發人員磁碟區]」來建立成使用 ReFS 的 Dev Drive 了~
點選「建立 [開發人員磁碟區]」後,他會問要用哪個空間來建立 Dev Drive,這邊是選新接上的 TB SSD,然後輸入標籤就可以完成了。
之後在系統內就可以看到這個分割區是 ReFS、而且備標繼成「開發人員磁碟區」。
而如果要透過 VHD 的形式來建立、流程也很類似、相當簡單。
簡單的磁碟效能測試
建立完了之後呢,出於好奇,也拿 CrystalDiskMark 來稍微測試一下存取效能。
下面已經用了好一段時間、健康度 99%、使用 NTFS 的 980 Pro 1TB 測出來的數據:
下面則是新拆封、使用 ReFS 的 980 Pro 1TB 測出來的數據:
在測試的結果上,數字差距比較大的似乎是 4K 的隨機寫入?在 RND4K Q1T1 的部分,ReFS 的速度似乎是比 NTFS 快很多、但是 Q32T1 的部分則是慢上不少?
由於不知道拿什麼來測試會比較好,所以這邊也就簡單看一下就好了。
Visual Studio 專案建置
再來,既然號稱是 Dev Drive,所以重點還是建置專案的速度了!
Heresy 這邊把同一個方案從本來的 NTFS SSD 複製到新的 ReFS SSD 後,兩邊都在 Visual Studio 完整重建整個方案,結果…
- NTFS:使用了 04:10.886 分鐘
- ReFS:使用了 04:21.837 分鐘
恩,又測了好幾次,結果還滿一致的,那就是把整個方案都放到 Dev Drive 後,建置速度還比較慢… orz
而如果用 msbuild 來建置的話,時間則是差不多、幾乎沒變。
Heresy 這邊是在建置裡面有 215 個專案的 C++ 方案,主要的外部函示庫的檔案也都一起複製到 Dev Drive 了,但是基本上好像都沒有出現比較快的狀況…
這該說什麼呢?Heresy 這邊工作用的方案的建置不是卡在 IO 嗎? orz
其他效能改善方法
而微軟也還有提供一些使用 Dev Drive 的建議:
- 將套件快取資料夾搬移到 Dev Drive(參考)
- 將環境變數
%TEMP%
和%TMP%
改 Dev Drive(不過可能有安全性風險和相容性問題) - Microsoft.Build.CopyOnWrite 這個延伸模組,可以提供額外的加速(參考)
- Visual Studio 17.7 在 Dev Drive 上建立新專案似乎會自己做調整?
老實說,這邊真的能玩得好像不多?Heresy 這邊基本上沒在用 NuGet 這類的套件管理,而修改系統 temp 的風險又有點大…
然後要在 C++ 專案玩 CoW(Copy-On-Write)頭也滿大的…Heresy 這邊感覺沒能完成功。 orz
相容性不佳:不能拿來放 Docker 的資料
另外,使用 ReFS 的 Dev Drive 目前在使用上應該還有一些相容性的問題。
像是 Heresy 本來想把 Windows Docker 的資料夾整個搬到 Dev Drive 上(方法參考)、看看處理 image 的速度會不會有所提升(本來解開的速度超慢)。
結果改完設定檔後,Docker 就不能重啟了…
看了一下,錯誤訊息是:
fatal: failed to start daemon: error initializing graphdriver: E:\Docker\windowsfilter is on an ReFS volume - ReFS volumes are not supported: windowsfilter
恩,結果是 ReFS 根本不支援 windowsfilter、所以完全不能用。 XD
所以,看來要拿 Dev Drive 來做其他功能,可能還是有些限制了。
這篇大概就這樣了…
基本上,算是個玩新東西玩失敗的紀錄吧?弄了一整天,也沒搞懂微軟號稱的提高 30% IO 效能到底在哪?
之後,就有機會再看看能不能真的玩出有效能增加的狀況了?(搞不好就放棄了)
另外,話說現在才注意到,微軟官方的圖裡面,Windows 安全性的「Dev Drive protection」下面是有個開啟按鈕的,但是 Heresy 這邊沒有? o_O
總覺得這部分搞不好沒有正確啟用效能模式?
參考: