[轉] 月下腦人惱腦:Windows 7 的 SSD 效能優化進階

在進入 SSD 的門戶後, 難免要把作業系統優化, SSD 應用時有效維護及提昇運作效能, 優化主要針對 Windows 7 作業系統, 快將引退的 XP 系統有硬體及軟體上的功能限制(不支援系統原生的 TRIM 功能)也該準備退役了, 雖然 Windows 7 系統有良好的支援 SSD(微軟說的), 不過還是有很多被忽略的需要手動修改, SSD 優化後的好處在效能上也十分明顯。

作業系統優化後除了影響 SSD 固態硬碟效能, 減小 SSD 頻繁作業亦有效增強了閒置時維護(TRIM/GC)後的高鋒寫入效能, 還會對 HDD 硬碟機有小許改善。

Windows 7 SSD 一般重點優化:

  • Disk alignment 對齊 (SSD)
    微軟在 WinHEC 2008 的技術文件 Windows 7 Enhancements for Solid-State Drives 序述了關於 SSD 的 4KB page size(block) alignment 的問題對文件系統(NTFS 分割區)的寫入效能影響; 預見的在安裝 SSD 時 NTFS 分割格化後, 分割區沒有對齊 4KB page 邊界而寫入時抹寫兩個實體 block 動作次數, 在持續寫入效能影響下降達 ~20% 至 ~40% 之間(已實測), 要修正 SSD align 問題, 必雖使用 disk align 軟體(例如 Paragon Alignment Tool)將初始化後的 SSD 執行 partition align 分割區對齊, 以得到完美的寫入效能。建議在 SSD 初始分割格化後即時執行對齊程序, 可減小因為分割區內大量文件檔案耗用執行對齊時間。
  • AHCI (SSD/HDD)
    AHCI 模式對不同廠牌 SSD 的傳輸影響在 AS SSD 測試中 4KQD32 有達 ~400%以上(NCQ 對細小的持續讀取最明顯), 要用盡 SSD 的效能火力(尤其是配合 Intel RST AHCI)的話, 開啟 AHCI 模式是無容置疑; 如果 OS 已安裝成 IDE 模式的話, 需要在 Windows 7 內先修改 registry 機碼(及準備好驅動程式), 然後重啟電腦進入 BIOS 啟用 AHCI。

    修改 Windows 7 機碼啟用 AHCI:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找
    [HKEY_LOCAL_MACHINESystemCurrentControlSetServicesMsahci]
    修改
    將 start 預設值 3 修改為 0參考微軟技術文件 KB922976

  • TRIM (SSD)
    Windows 7 新增 TRIM 功能支援專用於 SSD, 主要由於 Block、Page 及 Cell 必須首先抹除才能寫入新的數據, 寫入隨時間及空間容量縮小累積而在沒有更多 pre-erase 的 block 下持續爆發寫入(burst write)效能下降, TRIM 的作用是把 SSD 可刪除文件的 block/cell 資料立即標示為 invalid, 容許內置預先抹除, 待再有寫入動作時減去了同時要執行抹除作業。要應用到 TRIM 的話, 必須 OS、驅動程式 及 SSD 同時支援, 現時 OS 完全支援 TRIM 功能只有 Windows 7, Windows Server 2008 R2 及 Linux(kernel 2.6.33), 而 Windows 7 內的 Microsoft generic AHCI/ATA 驅動程式 及 Intel 的 RST 9.6 已支援 TRIM, 市場上的 SSD 並不是全部都支援 TRIM, 部分可以透過更新 firmware 提供升級, 部分因為 SSD 控制晶片的限制沒有 TRIM 功能, 某些舊型號 SSD 亦沒有 GC(Garbage Collection)功能內建(需要額外工具程式修復, 例如 Intel X25-M G1, 及 JMF612 控制器晶片), 採購 SSD 時要注意是否支援。

    Windows 7 查看 TRIM 支援預設:
    以系統管理員身分執行 cmd 命令提示字元
    執行指令:
    fsutil behavior query DisableDeleteNotify
    正常 DisableDeleteNotify = 0 即表示 OS 內 TRIM 功能已啟用

  • Superfetch/Prefetch (SSD)
    Superfetch 對軟體程序的啟動和預取增強的程式讀取載入性能, 主要針對是 HDD 硬碟機的物理機械限制, 但 SSD 跟本沒有此問題情況, Superfetch/Prefetch 只會更浪費耗用讀取時間及程序, SSD 當系統碟的話, 關閉 Superfetch/Prefetch 絕對有好處; Windows 7 把 services 服務內的 Superfetch 設定為手動啟動, 停用後可以刪除 c:windowsprefetch 目錄內的檔案文件。

    停止 Superfetch 服務:
    以系統管理員身分執行 services.msc 服務
    尋找 Superfetch 服務
    點按 將 “自動” 改為 “停用”或”手動” 及點按 “停止”
    停用 Superfetch 服務的話, 亦同時停止了 Prefetch 及 ReadyBoost 功能。

  • Defragment (SSD)
    磁碟區塊破碎是機械硬碟機的攸久問題, defragment(破碎重組)只能有效針對 HDD 硬碟機因為檔案區塊分散影響讀取性能而已, 沒有物理機械限制的 SSD 是無需執行任何「磁碟重組」作業。
    Windows 7 的 disk defragment(磁碟重組)是自動排程, 需要手動停止自動磁碟重組(雖然微軟宣稱 SSD 會自動停止磁碟重組)

    停止磁碟重組自動排程:
    以系統管理員身分執行 dfrgui.exe(disk defragment)
    在 “設定排程” 內關閉不勾選 “依排程執行”


Windows 7 SSD/HDD 其他有的無的優化:

  • Windows Search Indexing
    Windows 7 的 Search Indexing 是桌面系統的一個特色功能, 建立文件索引有效快捷地幫助搜尋用戶的個人文件, 但是我們都已習慣將自己的文件分類, 一般電腦用戶其實是很小機會需要搜尋自己的文件, 一天內可能都不會有一次, 而 Search Indexing 卻會不斷地在系統 background 內執行, 對 SSD 來說是額外的寫入耗損, 對 HDD 來說是硬碟機永遠都不會 idle 閒置及 spin down。

    設定停用 Windows Search 服務 Indexing:
    以系統管理用身分執行 services.msc 服務
    尋找 Windows Search 服務
    點按 將 “自動(延遲開始)” 改為 “停用” 及點按 “停止”完全停止 Search Indexing 並不是關閉了 Search 功能, 只是需要搜尋作業時速度慢一點而已。

  • LastAliveStamp(Heartbeat)
    心跳?! 微軟的技術解釋是寫入機碼的時程認定, Windows 2003 及 2000 伺服器是預設值是五分鐘(2000 pro 及 xp 是 0), 用於 dirty shutdown event 時的 last alive time 記錄; 在 Windows 7(Vista)預設值是每一分鐘寫入
    C:WindowsServiceProfilesLocalServiceAppDataLocallastalive1.dat 或 lastalive0.dat
    不過, 實際是每十數秒就有寫入作業, 後果是…OS 系統碟的文件系統永遠都不會 idle 閒置, 這亦是筆電(或小筆電)預裝 Windows 7 在電池應用時節能效率較 XP 差的其中一個原因。

    修改停止生成 dirty shutdown event 的頻繁寫入記錄 TimeStampInterval 機碼:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionReliability]
    修改 TimeStampInterval 預設值 1 改為 0
    “TimeStampInterval”=dword:00000000重啟電腦生效

  • Windows Customer Experience Improvement Program
    Microsoft 客戶經驗改進計畫(CEIP), 以搜集系統分析資料報告, 協助處理系統問題及改進產品設計與開發; 在 Windows 7 內有多個自動排程執行系統分析, 當用戶選擇加入客戶經驗改進計畫時, 資料報告會自動上載到微軟; 此類分析排程對於個人用戶來說, 其實就是將用戶電腦變成微軟的奴役機, 一般電腦用戶根本不會有樂趣於閱覽其電腦的分析資料, 分析程序卻不會理會用戶是否選擇加入計畫而不斷地在 background 處理中排程執行, 額外耗用了用戶電腦的資源(電費當然要用戶付帳啦)。

    停止 Windows 7 的客戶經驗改進計畫
    以系統管理員身分執行 gpedit.msc 本機群組原則編輯器
    展開 系統管理範本 -> 系統 -> 網際網絡通訊管理 -> 網際網絡通訊設定
    在 “關閉 Windows 客戶經驗改進計劃” 內勾選 “啟用”關閉了 Windows 客戶經驗改進計劃只是禁止用戶選擇加入 CEIP, 及停止將分析報告上載到微軟, 並不是停止 CEIP 的分析排程作業。

    停止 CEIP 自動排程
    以系統管理員身分執行 taskschd.msc 工作排程器
    展開 工作排程器程式庫 -> Microsoft -> Windows -> Customer Experience Improvement Program
    滑鼠右點將三個排程 Consolidator KernelCeipTask UsbCeip 停用
    停止 RAC 自動排程每小時一次(CEIP 關聯)
    以系統管理員身分執行 taskschd.msc 工作排程器
    展開 工作排程器程式庫 -> Microsoft -> Windows -> RAC
    滑鼠右點將排程 RacTask 停用

  • ReadyBoot tracing log
    Windows 7(及 Vista)系統在每次 bootup 啟動時都會有大量 tracing 日誌動作, 其中的 ReadyBoot tracing 會建立 c:windowsprefetchreadybootreadyboot.etl 文件日誌上限 20MB, 然後又會自動清空, 此頻繁地複寫 tracing log 程序對電腦用戶沒有明顯效益, 只會額外耗用 bootup 電腦資源, 一般用戶根本不會留意閱覽 tracing log。

    更新
    ReadyBoot 特式是 Readyboost 的其中一個部分, 利用 Windows 7(Vista)在每次 bootup 啟動完成後生成的 tracing log 日誌文件, bootup 時以預載來達到優化減小載入時的進程時間, Windows 7(Vista)在第一次 bootup 啟動時特別緩慢就是因為沒有進行 ReadyBoot 優化載入, ReadyBoot tracing 系統會保留對上五次的日誌文件; 在實際應用環境下, 用戶使用 ReadyBoot tracing 在五次 bootup 之後, 優化載入的時間已不會再有明顯減小, 一般用戶其實可以在五次 bootup 之後關掉 ReadyBoot tracing 以省卻 bootup 後的大量的 tracing log 作業。
    「硬碟機」的用戶則可以在五次 bootup 之後關掉 ReadyBoot tracing, 然後以系統管理員權限執行 defrag.exe c: -b 來重組優化 bootup prefetch。

    停止 ReadyBoot tracing:
    以系統管理員身分執行 perfmon 效能監視器
    展開 資料搜集器集合工具 –> 啟動事件追蹤工具階段 –> 點按 ReadyBoot
    在 ReadyBoot 的 “追蹤工具階段” 頁內點按不勾選 “已啟用”(Enabled), 在按 “確定” 完成完成後 readyboot.etl 文件可以刪除掉, 而且亦不會再在重啟電腦時執行 ReadyBoot tracing。

  • pagefile.sys
    分頁檔案 pagefile.sys 是系統虛擬記憶體應用時轉移記憶體的系統文件, 不可或缺! 沒有分頁檔案某些軟體會因記憶體不足或虛擬記憶體不能轉移而出現系統錯誤; 要善用保固 SSD 壽命的話, pagefile.sys 的頻繁讀寫作業是應該要盡量避免, 如果將 SSD 當系統碟的話, 可以安裝褂載 RAMDISK(例如 Superspeed RAMDISK)或利用已有的 HDD 硬碟來存放 pagefile.sys。
  • Windows Temp
    Windows 的暫存文件目錄, 幫助軟體存放臨時的配置文件或紀錄暫存, 要有效加速應用環境的話, 極端做法是將 Temp 目錄設定使用 RAMDISK, 可以減去使用 SSD(或 HDD) 寫入而又可以獲得極速暫存, 而且暫存目錄內的文件檔案一般關機後是不需要保留存放的。
  • UserProfile
    遷移用戶帳號目錄一般適合在電腦內有多顆磁碟(或分割區), 將用戶帳號由系統碟擴展到大容量空間, 系統碟(分割區)一但需要重灌時避免用戶檔案及配置違失。

    參考: 遷移及配置 Windows 7 的用戶帳號 UserProfile 預設目錄位置

  • hiberfil.sys
    Windows 7 當偵測到電腦硬體主機板支援 ACPI 的話, 會自動配置「休眠」Hibernate 功能, 在應用桌面環境下系統會建立一個大容量的系統文件 C:hiberfil.sys, 一般 4GB 記憶體會耗用 2.5GB 的文件空間, 休眠功能較適合用於筆電 notebook, 對於並不是經常需要休眠功能的桌機用戶或使用細容量的 SSD 系統碟, 關閉「休眠」功能可以釋放耗用的磁碟空間, 而且 Windows 7 也有「睡眠」Sleep 功能(即是 XP 的 Standby)可以將電腦進入省電停止狀態。

    停止休眠功能:
    以系統管理員身分 執行 cmd 命令提示字元
    執行關閉休眠功能指令
    powercfg -h off

  • IPv6 & IP Helper Service
    自 Vista 開始微軟已經在 OS 內建 IPv6(網際網絡協定版本6), 支援更多的網絡地址空間及 IPsec 保安特式等等, Windows 7 預設啟用了 IPv6 並且紮捆提供 HomeGroup 分享功能, 令 IPv6 與 HomeGroup(家用群組)功能不能分割, 應用到 HomeGroup 分享就必需要有 IPv6; 一般個人家庭及公司企業內部網絡其實甚小需要使用支援超大量網絡地址的 IPv6(除非是 ISP 網絡供應商), 家庭/企業網絡都架建在防火牆的路由器網絡保安環境內, IPv6 對於小型應用環境意義大於實際, 一般現在的電腦用戶舊有的網絡裝置(路由器, 集線器, switch, 閘道器, 防火牆, ADSL等等)也並不是完全支援 IPv6, Windows 7 的 HomeGroup 只能應用在 Windows 7 的作業系統, 沒有家用群組其實仍然可以用傳統的文件網絡分享(Windows File & Printer Sharing), 關閉 IPv6 也可以令系統釋放一些資源(特別是頻繁的虛擬局域網及同時處理 IPv4 和 IPv6), 除非必須使用 HomeGroup 來小圈子無限分享檔案, 否則關掉 IPv6 不會有大損失。

    參考微軟技術文件 KB929852

    關閉 Windows 7 內的 IPv6:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找機碼
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters]
    新增機碼
    “DisabledComponents”=dword:ffffffff

    停止 IP-Helper 服務:
    IPv6 轉換技術, 主要是將非 IPv6 的地址轉換到支援 IPv6 的網絡環境(例如 在內部 IPv6 網絡連接到 IPv4 的網址), 此系統服務會在 background 內不斷對外呼號連接轉換, 利用 Resource Monitor 時會看到有持續的網絡資料傳送, 關閉了 IPv6 的話 IP-Helper 已無用處, 也停止對外呼號連接轉換。
    以系統管理員身分執行 services.msc 服務
    尋找 IP-Helper
    點按 將 “自動” 改為 “停用” 及點按 “停止”
    網絡裝置停止使用 IPv6 協同

  • DisablePagingExecutive
    微軟技術解說是 Kernel 及 驅動程式 記憶體分頁處理, 一般情況下 Windows 系統會將載入記憶體閒置不作用中的 Kernel 及 驅動程式 記憶體 swap 到 pagefile 處理, 以釋放更多可用記憶體空間給應用程式; 不過, 現在的主流(廠機及DIY)電腦記憶體配置都已經是 2GB(甚至 4GB) 起跳, 採購了的記憶體當然就不要浪費, 要善用記憶體來為作業系統增強性能, 禁止 kernel 及 driver 記憶體 page swap 保留常駐在應用記憶體中, 減少 page swap 的 IO 作業, 亦令 OS 應用時反應不會因為 paging 而遲緩。

    Description
    Specifies whether user-mode and kernel-mode drivers and kernel-mode system code can be paged to disk when not in use.
    0 Drivers and the kernel can be paged to disk as needed.
    1 Drivers and the kernel must remain in physical memory.

    如果電腦配置 2GB(建議 4GB) 以上記憶體的話
    設定禁止 kernel paging 作業:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]
    修改 DisablePagingExecutive 預設值 0 改為 1
    “DisablePagingExecutive”=dword:00000001

    重啟電腦生效

    微軟 TechNET 技術參考 DisablePagingExecutive

  • 未完
    待續…



小道消息:
繼近日 Toshiba 東芝宣告在日本三重縣四日市的東芝 NAND flash 晶圓廠新廠房 Fab 5已經正式開工建設明年竣工, Intel 與 Micron(美光)計劃在年底前重新啟動新加坡合資建設的晶圓廠, 把 2008年因為金融風暴全球經濟形勢而推遲量產的 12英寸 NAND flash 晶圓廠再次投產, 預計此擴產計劃將影響明年 NAND flash 夥粒的供應量, 以滿足 2011年大福增長需求的 SSD 及其他固態硬碟的應用範圍。

似乎 SSD 這個大餅勢將成為主流, 無可避免會供不應求啊, 難怪近日某主流品牌 SSD 售價還上漲了小許。

未經允許不得轉載:GoMCU » [轉] 月下腦人惱腦:Windows 7 的 SSD 效能優化進階