2018/09/06

PrimoCache - 磁碟快取與教學

PrimoCache,是我用過最佳的磁碟快取軟體 (DiskCache),原理就是「用記憶體快取磁碟的讀與寫」。使用者要求開啟某程式時,作業系統會向硬碟要求程式資料,再由硬碟讀入記憶體,接著在記憶體裡執行程式。若反覆同樣要求會造成硬碟重複讀取相同資料,若此時在中間加入快取機制,使重複讀取的動作快取代替,效率更高也能保護硬碟。

一般快取軟體只做到緩衝「讀」的功能,但PrimoCache卻能做到緩衝「讀與寫」,不僅能加快讀取效率,更能保護磁碟寫入動作。

未命名 - 2
▲ 一般作業系統存取檔案流程,瓶頸卡在硬碟。

未命名 - 1
▲ PrimoCache挪用部分Ram緩衝硬碟讀取達成加速目的。


PrimoCache教學

一、基本觀念

PrimoCache主要有 L1-Cache (一級快取) 與 L2-Cache (二級快取) 功能,一級就是挪用部分記憶體來快取硬碟,二級就是用隨身碟或SSD來快取硬碟,只要比硬碟快的都行。差別在一級斷電後資料會消失,因為是用記憶體;二級在斷電後不會消失,會永久保存在實體快取碟上。可把一級與二級用「虛擬vs.實體」的概念做區分。二級功能其實在Windows系統有相似功能,就是ReadyBoost。

2018-09-07_035700
▲ Windows上的ReadyBoost就是等同二級快取功能


二、設定 L1-Cache 功能

原則上 PrimoCache 我們只取用一級快取功能,除非主機板有內建快取碟可直用,不然買個SSD或加大記憶體容量會是比啟用二級快取為更佳的做法。

2018-09-07_032702

  1. OS Managed Memory  設定L1的占用記憶體量
    在不影響系統操作的前提下,數字越大越好,請開啟工作管理員查看未使用的容量來決定。
  2. OS Invisible Memory (IM)  系統未辨識的容量
    32位元OS會有RAM 4GB的限制,此功能支援使用超出4GB未辨識的部分當成快取。64位元如圖中會變暗字。
  3. Level-2 Cache  二級快取
    須指定一個實體碟當成快取,首次需要格式化資料會消失。自行研究。
  4. Memory Overhead  記憶體經常性開銷
    (additional physical memory cost of running cache.)
    維持快取功能所需消耗的記憶體量。
  5. Block Size  磁區大小
    Block Size: Cache is logically partitioned into blocks of fixed size, typically ranging from 4KB to 512KB. Cache block is the smallest unit that PrimoCache manages. A smaller block size brings more available blocks for the same amount of cache space and usually higher performance. However, it will need larger memory overhead and may cause heavy CPU overload. To reach the best performance, a value euqal to or less than the cluster size of the file system is recommended.
    原廠說明得很清楚,大小從 4KB~512KB 任選,越小可以有效利用快取空間但會加重CPU與RAM的空間;越大則無法有效利用快取空間,但維持快取功能的消耗也降低。最後也給出結論:「等於或小於檔案系統的叢集大小是較推薦的」,所以根據自身磁碟的檔案系統磁區大小去設定此項是重點,現行NTFS系統多為4KB大小,但設4KB記憶體占得有點大,可改為8或16均可。(不同的大小,左下角的Memory Overhead也跟著變動)。
    關於Block的研究請看*註1。
  6. Enable Defer-Write  啟用延遲寫入
    將檔案寫入的命令延遲,在Latency欄輸入想要的延遲時間,一般設定60~120秒以內。
    這功能非常好用,可以保護SSD與HDD使延長壽命,將系統在間隔下達的全部寫入指令一次整批寫入,有效讓硬碟不會處於斷續的寫入狀態。再也不會看到長時一直閃的硬碟寫入燈,取而代之的是間隔式的一次寫入。現今硬碟多支援NCQ功能,能將資料的讀寫操作做排序以達最大效率,此時搭配上延遲整批一次寫入,更是完美發揮NCQ功能。缺點就是若在還沒寫入就突然斷電,資料會遺失,所以延遲不要設太久。
  7. Write Mode  延遲寫入模式
    這項不用進來設定,預設的Native即可。其他的模式會加重CPU負擔且資料有未寫入疑慮。
    • Native (基本模式):延遲時間到就寫入
    • Intelligent (智慧模式):延遲資料量達到90%快取空間時,才將10~20%的資料量寫入。
    • Idle-Flush (閒置模式):當系統閒置時才寫入資料。
    • Buffer (緩衝模式):延遲資料量達到40%快取空間時,才寫入資料,並保持80%的空白容量。
    • Average (均衝模式):將一區段時間的延遲寫入平均地執行,以避免短時間的高峰寫入。


重置試用時間

PrimoCache 序號保護機制是「寫入驅動程式」,牽涉到修改驅動工程浩大所以目前沒有破解方法,只能重置試用期來達到續用,幸好試用版功能是完整的。


重置試用:(v3.0.2 有效@2018.10)

第一步:刪除相關註冊登錄碼
第二步:刪除日期計算檔
第三步:在PE下執行刪除指令


以下是重置批次檔語法,存成bat檔,在PE下執行即可。重開機後按F8,選擇「修復你的電腦」,就會進入救援光碟模式(PE),即完全不載入win系統任何檔案,在此環境下可以任意更改被系統鎖住的檔案。接著開啟命令列,切換至bat檔所在磁碟,然後執行。有時,救援模式下系統碟不一定在C槽哦,可能會抓到D或E槽,應該是依安裝硬碟的插槽來決定,請依情況更改槽位置。

PrimoCache 3.0.2 重置檔下載


@echo off
::PrimoCache重置60天試用期
::重開機按F8,進入「修復模式」即 PE模式,在命令列下執行該批次檔

copy ".\reg.hiv" "X:\reg.hiv"
::複製reg.hiv至X槽。
::PE環境下預設槽是X,該檔內容是空白的登錄碼,非病毒

REG LOAD HKLM\1 C:\Windows\System32\config\SYSTEM
::載入 SYSTEM 到 HKLM\1 位置
::SYSTEM就是一個系統登錄檔,無副檔名

REG RESTORE HKLM\1\ControlSet001\services\eventlog\System\RxDeliveryStamp X:\reg.hiv
REG DELETE HKLM\1\ControlSet001\services\FancyCcV\SectorMap /f
REG DELETE HKLM\1\ControlSet001\services\FancyCcV\Parameters /v data2 /f
REG DELETE HKLM\1\ControlSet001\services\FancyCcV\Parameters /v Session /f
::還原 reg.hiv 登錄檔到 HKLM\1\...\RxDeliveryStamp
::刪除 PrimoCache 機碼

REG RESTORE HKLM\1\ControlSet002\services\eventlog\System\RxDeliveryStamp X:\reg.hiv
REG DELETE HKLM\1\ControlSet002\services\FancyCcV\SectorMap /f
REG DELETE HKLM\1\ControlSet002\services\FancyCcV\Parameters /v data2 /f
REG DELETE HKLM\1\ControlSet002\services\FancyCcV\Parameters /v Session /f
::上段為001,此段002,根據不同電腦有不同數值,打開 regedit 查看,有幾個就重複此4行指令幾次
:: CurrentControlSet 的值不用刪除

c:
cd C:\Windows\system32\
del /p dir /ah ja618864f130b.zcl
::刪除日期計算檔,請至 C:\Windows\system32\ 開啟隱藏檔查看,亂數檔名,替換「ja618864f130b.zcl」
::此檔1KB以下,用大小排列尋找1KB檔,檔名規則「亂數檔名 + 亂數副檔名」。
::進PE時,有時預設的C槽不會是Win下的C槽,可能會到D或E槽,記得更改到日期檔所在的槽

del "X:\reg.hiv"
::刪除 reg.hiv

REG UNLOAD HKLM\1
::載出登錄檔




註1:

Block Size」,在windows裡稱「叢集大小」(cluster size),另名就是「磁區大小,實意就是格式化磁碟時分割的「最小檔案配置單元」。

把他當成一個箱子,假設是4KB大小,那3KB檔就占一個(耗4KB空間),5KB就占二個(耗8KB空間)。分割越小就越能利用空間,那越小越好囉?磁碟讀取頭運作的方式是以磁區為單位讀取,「一次讀取一個磁區」,所以今天一個1024KB在4KB磁區占256個箱子,需讀取256次;但若在512KB磁區則占2個箱子,只需讀取2次。所以結論是越小磁區越能善用空間,但會加重CPU與磁碟負擔越大磁區則減輕讀取負擔,但浪費空間。所以方向大至為較細小的檔案配置較小磁區,較大的檔案配置較大的磁區。

▼ NTFS下,Windows 對各容量的預設磁區,2TB下均為4KB
2018-09-07_052215


▼ FAT32下,Windows 對各容量的預設磁區,8GB為8KB,16GB以上為16KB。
2018-09-07_054158


▼ 小技巧:如何得知目前的磁區大小?新增空白文件存檔後右鍵查看內容。
2018-09-07_043614

沒有留言:

張貼留言

交流溝通或良好建議 ,通通歡迎。

▋熱門文章