翻開多數的RAM Disk教學,大部分都會告訴你:把暫存檔放到記憶體、把置換檔放到記憶體、把龐大的遊戲資料檔放到記憶體。只是RAM Disk的應用也不是一日兩日了,還在搞這些玩法難免顯得八股。
快速瀏覽:
- 淺談Windows記憶體管理機制
- 虛擬機器:最簡單的RAM OS玩法
- Boot in RAM:直接從記憶體開機
- RAM OS效能實測
把系統碟放進RAM Disk
「把整個作業系統都搬到記憶體」這種形容有點模糊,更精準的說法是「把系統碟放進記憶體」,讓作業系統一開機就是從記憶體載入,甚至還能達成「零硬碟系統」,是不少電腦教室風行已久的佈署模式。
怎麼放?當然不是直接把C槽的內容都拷貝到RAM Disk裡,針對不同的應用,可以衍伸出幾種不同的作法。比如:藉由VMWare來執行作業系統、用FBWF來達成磁碟防寫、其至一開機就直接從記憶體裡完成作業系統的載入程序等,各自有不同的限制及效能差異。
先買幾條RAM再說吧
既然是要把整個作業系統都放進RAM Disk,記憶體的使用量自然不能太小氣,即使你最後決定不這麼玩,還是會需要充足的記憶體來維持系統效能。很多人會錯估、或者說是小看了記憶體對於系統穩定性的影響,以為只要不超頻,就只需讓它達到夠用的容量就好,其實這是很要不得的觀念。
挑幾支穩定性佳的記憶體除了能避免當機,也能減少作業系統的除錯時間,減低了因為記憶體錯誤而造成的效能損失。讓作業系統在硬碟裡執行就是如此,更何況全部載入記憶體裡的風險會更大!一有閃失可是連存檔的機會都沒有。
▲測試平台:筆者在進行本篇專題所需的測試時,使用的是Team(十銓)的DDR3-1333 8GB x 4。要提醒讀者的是,不必為了RAM Disk超頻或刻意買出廠時脈就較高(如1600、2100)的記憶體,因為你感受不到速度落差。
淺談Windows記憶體管理機制
電腦要裝多少記憶體才夠用?大家不妨可以馬上做個實驗:用2GB的記憶體來開機、以及用4GB的記憶體來開機,然後觀察其記憶體使用量及置換檔大小的增減情況,情況絕對會出乎原本意料。
彈性配置是管理精神
這裡直接說明答案:「你猜不透的」,Windows會彈性調配記憶體使用量來達到最佳使用效率及安全性,裝了4GB跟裝了2GB的模組,開機後剩下的可用容量可能不會相差多少,只是置換檔的負擔變小而已。系統效能可能會稍快一些,但能留給應用程式的空間仍然相當有限。
光是一個瀏覽器開啟的入口網站分頁就可以用掉50MB的記憶體空間,加上其它不管是在前景或背景運行的應用程式、系統服務,真要耗盡4GB的記憶體是很簡單的。因為作業系統本身就會先佔用掉一大部分,再加上安全保留區,剩下的才是能讓使用者或一般程式肆意取用的空間。
當作業系統運行時,會從儲存裝置載入必要的資料到記憶體裡,一旦記憶體不足,就會需要先把部分資料回存到儲存裝置上。這裡的「回存」指的不是文件的存檔,而是程式的執行狀態,簡單的說就是把記憶體裡的內容傾印到硬碟上,以待下次呼叫,也就是比較狹義的虛擬記憶體。
Windows系統裡通常可以看到2個置換檔,1個是用來傾印整個程序的swapfile.sys,另一個則是保存部分程序的pagefile.sys,兩者在回存時的優先權不同,因為不是本文重點就不贅述。
對於一般應用程式來說,它只會跟作業系統要記憶體,而不會、也無法自行管理。大家都知道主流作業系統會使用虛擬位址來管理記憶體,當虛擬位址所對應到的資料不是存放在真正的記憶體上時,會產生名為「pagefault」的錯誤,接著作業系統會再視情況到置換檔裡去取資料,於是就產生了頻繁而複雜的「應用程式」、「作業系統」、「記憶體」、「硬碟」之間兩兩的資料交換動作,確實是拖累存取效能的主因之一。
沒把握別動置換檔
所以了,擁有足夠的記憶體是避免存取效能低落的治本之道。部分情況下,可能會因為使用固態硬碟而感受不到置換記憶體所帶來的效能落差,其實是固態硬碟代為吸收了繁重的存取工作,對於讀寫次數敏感的玩家來說當然無法接受。
記憶體本就不足的系統,除了讓系統自動管理置換檔外,沒有其它更好的方法。前面已經提過了,畫出1塊RAM Disk來放置換檔是很蠢的行為,至於直接將置換檔關閉、或縮減其大小更是萬萬不得,一旦作業系統失去了這個緩衝機制,任何應用程式都可能隨時崩潰。
至於記憶體夠用的系統,筆者還是建議讓系統自行管理,由於Windows並不會等到實體記憶體真的全用完了才開啟虛擬記憶體,這代表只要置換檔是開啟的,Windows預設就不會把記憶體完全用完,因為善用記憶體比耗盡記憶體更重要。
虛擬記憶體的定址關係
虛擬記憶體的運作方式示意。應用程式透過作業系統創造的虛擬位址來存取實體與虛擬記憶體(Pagefile/Swapfile.sys),同時實體記憶體與虛擬記憶體之間也會不斷地交換資料(紫線)。
下圖則是將分頁檔放進實體記憶體後,資料的傳遞方式。紅線先透過虛擬位址去找實體記憶體裡的分頁檔的實際位置,找到以後再透過1次藍線虛擬位址去對應分頁檔裡的資料,光聽敘述就很複雜,實際運作起來更可能會產生一些問題。
虛擬機器:最簡單的RAM OS玩法
實作RAM OS,最簡單的作法就是透過虛擬機器,但透過虛擬機器運行的RAM OS、或放進RAM Disk執行的虛擬機器,效能真的有比較好嗎?
管理及掛卸載方便
透過虛擬機器最大的優勢是管理容易。我們可以準備多個映象檔,將映象檔丟進去就能讀取執行,在需要頻繁的測試軟體時非常好用。
比較麻煩的是回存問題,這就要牽扯到映象檔的種類。其實就連RAM Disk的建立軟體來說,部分即支援將整個RAM Disk磁碟區當成映象檔處理,至在有資料寫入RAM Disk時就同步回存至映象檔裡,攜牲一點即時寫入速度確保安全性。
大部分的虛擬機器都無法掛載RAM Disk建立的映象檔,就算是先掛載成磁碟機,也無法直接當成虛擬機裡的系統碟,這是RAM Disk的先天限制。
所以了,最保險的方法是不要把RAM Disk當成系統碟,而是在RAM Disk裡放1個系統碟映象檔,再開啟RAM Disk的即時回存功能,就能避免關機或當機時資料遺失、也不必每次在關機時都要先把系統碟映象檔回存至硬碟。
這代表虛擬機器寫至硬碟的資料要經過好幾層轉換,好在除了最後一層外,都是在記憶體上做處理,不致於嚴重延遲寫入工作。另外存放系統碟用的映象檔最好使用「固定尺寸」,對於效能的耗損會比較小。至於RAM Disk工具,筆者推薦「ImDisk」,因為它免費、又能即時回存資料。
顯示效能仍然受限
透過虛擬機執行的RAM OS,有以下幾點限制:
讀寫效能損耗嚴重
因為虛擬機器的轉換效率是1層屏障,本來可能高達數GB/s的循序讀寫速度,可能會掉到只有幾百MB/s,隨機4KB讀寫一樣只會剩1/10水準。雖然如此,這些數據還是跟主流SSD差不多。
▲虛擬機的讀寫效能明顯經過嚴重損耗,約是無虛擬化的1/10,儘管也夠快了。
周邊裝置無法完整支援
虛擬機器多會支援「USB Pass through」機能,讓外裝至電腦上的裝置可以跳過母系統、直接由虛擬機裡的客體作業系統來管理。這個方法不是萬能,有些比較刁鑽的裝置是怎樣都無法透過虛擬機來使用的,比如特定的無線網卡、或是一些電視棒,都將無法支援。
顯示機能落後
只要顯卡廠沒提供驅動程式,GTS240與GTX295對於虛擬機器來說都一樣。就算不玩遊戲,作業系統對於顯示卡的要求仍然非常吃重的,比如視窗的特效運算、優化視訊記憶體以提高視窗的切換速度等,進入了虛擬機總是會覺得反應頓頓的,這都是無法使用VGA硬體加速造成的結果。
以上提到的幾點,跟RAM OS都沒有關係,純粹是虛擬機效率問題。即使在硬碟上、SSD上使用虛擬機也會發生,差別在於第1點的落差異常大。
虛擬機的系統碟存取架構
▲上圖是讓虛擬機直接存取實體磁碟來當作系統碟的方式,因為RAM Disk的掛載方式與一般硬碟不同,實作上有一定難度。下圖則是將虛擬機的系統碟存成映象檔,再放進用來儲存RAM Disk的映象檔裡,犧牲一點效能來換取管理上的方便。
延伸閱讀:
(後面還有:Boot in RAM:直接從記憶體開機)
Boot in RAM:直接從記憶體開機
因為虛擬機器有不少限制,即使是載入RAM Disk執行也不太爽快。如果我們能夠開機時就把系統碟載入記憶體、然後用它來進入作業系統,不就可以脫離這些限制了嗎?沒錯!除了無法隨時掛載或卸除外,跟一般從硬碟開機原生執行的作業系統沒兩樣,也是最名副其實的RAM OS。
記憶體請先備足
乾淨的Windows XP SP3安裝完成後約佔2GB硬碟空間,Windows Vista/7/8則是約8GB,再加上一些緩衝空間就是要放進記憶體裡的系統碟大小。至於是多大就見仁見智了,總之記憶體的容量愈小、要做的設定就愈多,建議有能力就單條直上8GB、並且把插槽擠滿最無後顧之憂。
那麼,至少要多大呢?除了作業系統本身外,總得留一些給其它應用程式及置換檔存放的空間。而且RAM OS本身執行時也需要記憶體,假設電腦的總記憶體容量是16GB,理想的作法是將RAM Disk劃成12GB,留4GB當作純記憶體用。
若要節省空間可以嘗試處理WinSxS資料夾,或許還能減上3、4GB的體積。更極端的作法是使用Junction或Soft Link把一些資料夾指向到實體硬碟上(比如Program Files),不過這麼做就失去了設置RAM OS的原始意義了。
WinSxS
在Windows Vista(含)之後的Windows目錄底下,有個名為「WinSxS」的資料夾,它是目錄中體積最大的資料夾。因為這個資料夾裡的檔案都是非常重要的、維持系統正常運作的必要元件,所以不能夠直接刪除它。
不少教學可能會這麼寫:執行磁碟清理命令,就能夠縮減該目錄的體積,尤其是在剛升級完大型系統套件之後,比如Service Pack之類,或是系統從安裝後已經有好一段時間未清理,這個目錄也會愈變愈大。
這種說法是正確的,但對於剛安裝好的系統來說,幾乎無用,因為WinSxS裡可供清理的檔案多是一些用來回復系統的參考檔,像是安裝SP1之後反悔時,這些參考檔便能順利讓系統移除SP1。
如果本來的作業系統是Windows 7,再加裝SP1,那麼這個方法可能有效;反之,使用已經整合了SP1的Windows 7光碟來安裝的系統是無法有好處的。
很奇怪吧!以上敘述有邏輯上的瑕疵。Windows 7加裝SP1後可以藉由瘦身來縮減系統目錄體積,為何Windows 7 SP1就不行?兩者還不是一樣的系統嗎?哪有Windows 7裝了SP1後、體積還比Windows 7 SP1小的道理?
原來,WinSxS目錄底下的檔案,有大部分都是「Hard Link」,也就是實際上不佔空間的硬連結。雖然實際上不佔空間,但檔案總管還是會計算它們的體積,所以最準的容量估算方式是看硬碟的剩餘容量、而不是Windows目錄的佔用容量。
載入器與驅動是關鍵
要怎麼在進入作業系統前就創建出RAM Disk、把系統碟放進去、以及讓作業系統存取是RAM OS的設定關鍵。其實Windows的開機載入器(Bootloader,不過這裡的角色更類似Boot Manager)本身就帶有RAM Disk的掛載功能,加上Windows內建RAM Disk驅動程式,只要在開機組態裡加上幾行指令就能用來執行WinPE之類的迷你作業系統。
然而,Windows內建的RAM Disk有1.5GB容量限制,對完整的作業系統來說跟本不夠用。雖然網路上可以找到破解版的核心元件來突破此屏障,不過在使用時仍有不少但書,對於RAM OS的開機管理機能也太過陽春。
因此,請先忘記Windows原生的解決方案。我們來看一下RAM OS的核心元件是如何分工的,同時也了解RAM OS是如何開機並執行:
開機載入器
開機時,它要負責創建RAM Disk,並且將系統碟的映象檔放進去,簡單的說就是把映象檔掛載到記憶體裡。然後再去啟動RAM Disk裡的作業系統,或是把啟動權交由RAM Disk裡的作業系統內建的載入器處理。
RAM Disk驅動
開機流程交給作業系統後,作業系統也要認得RAM Disk、並銜接完成開機任務啊。所以這裡的RAM Disk驅動是指Boot-class等級的元件,跟一般在桌面上執行的RAM Disk軟體是兩回事。
VHD映象檔
要載入的系統碟最好包裝成VHD,理由跟虛擬機器相同,因為它是受支援程度最廣泛的系統映象檔,不管是要存取它或引導它開機都很容易。
GRUB4DOS引導開機
開機管理程式有很多種,重點是要支援「把VHD映象檔載入至記憶體」,GRUB4DOS是最好的選擇。因為它原生就可以掛載VHD映象檔,安裝上也最為簡易。
GRUB4DOS有不少分支版本,建議使用「Chenall」,它更新最為頻繁、而且有針對RAM OS最佳化。至於最原始的正宗版本已經停止釋出更新很久了,記憶體管理機能落後,對於RAM OS應用來說當然不友善。
如果讀者習慣使用其它的載入器,也能試試,不過考量到載入器所建立的RAM Disk還要能跟作業系統的RAM Disk驅動相對應,使用GRUB4DOS還是比較穩當。
虛擬機的系統碟存取架構
開機時,GRUB4DOS將映象檔載入記憶體形成RAM Disk,然後將流程交給映象檔裡的作業系統。作業系統在低階的初始化時就要載入Firadisk來註冊這塊RAM Disk,不然在接手管理記憶體時RAM Disk會流失。
圖中的括弧是在開機流程中,每個步驟所需管理或耗用的記憶體總量。Firadisk所使用的這塊記憶體到最後當然還是由Windows所管理,在必要時仍有可能置換它。
Firadisk銜接虛擬硬碟
GRUB4DOS把開機流程交給RAM Disk裡的Windows之後,Windows會接手記憶體的管理,所以在載入底層系統元件時就先啟用驅動來銜接GRUB4DOS建立的RAM Disk。不然的話,在進入更頂層的開機程序時,Windows會不認識這塊RAM Disk、無法存取RAM Disk、找不到系統碟在哪裡而無法繼續載入自己,開機流程會被迫中斷。
擔當此重任的色角是Firadisk,它讓Windows可以順利接手RAM Disk,並且把RAM Disk當作紮紮實實的本機硬碟來使用。
▲安裝完Firadisk後,裝置管理員裡會多出一個Firadisk元件。如果沒有出現這個元件、或是該元件上有問號或驚嘆號,就是安裝不完整,將無法順利進入RAM OS。
用Windows建立VHD
好了,需要具備的基本概念及工具都已經湊齊,接下來就是上機實作時間。一開始我們要先建立乾淨的VHD檔,在建立VHD時得注意幾點:
一、請固定尺寸
VHD可分為動態尺寸與固定尺寸兩種模式,前者會依使用量動態擴展尺寸,後者則是一開始就固定映象檔的尺寸,GRUB4DOS不支援前者。
二、請注意尺寸
VHD有多大,創建的RAM Disk就有多大。還好即使是固定尺寸的VHD,日後還是能透過工具調整容量,所以一開始設置時不必太緊張。
三、請用Windows原生工具處理
虛擬機器如VMware、VirtualBOX也能建立VHD,但過程不太乾脆,還是用Windows自己提供的工具最實在。
VHD能透過電腦管理工具的磁碟管理介面來建立,下指令用批次檔也有同樣效果:
C:\>Diskpart
Diskpart> create vdisk file="C:\VHDs\VHD_Win7.vhd" maximum=16000 type=fixed
Diskpart> attach vdisk
Diskpart> create partition primary
Diskpart> assign letter=g
Diskpart> format
因為VHD的應用不是本文重點,這裡就不解釋詳細指令涵義,熟習的玩家可自行利用更簡便的工具優化建立或掛載過程。總之上述指令碼建立了一個16GB的VHD檔案,並將其掛載成G槽。
記得裝64位元系統
接下來要把Windows佈署到VHD裡。過程不外乎將Windows安裝檔案拷貝至VHD,再以VHD開機來完成安裝Windows,作法可參考附錄網址。
唯需留意的一樣有幾點。首先,請選用64位元作業系統,因為管理4GB以上記憶體,32位元會很麻煩,也請別想透過PAE之類的技巧來彌補,絕對沒有安裝64位元Windows來的一勞永逸。
再來是作業系統版本,因為Windows Boot Manager只支援啟動Windows Ultimate以上等級的Windows 7/8,在佈署時的版本號要設對才行,請在佈署Windows到VHD時修改此行:
Imagex /apply install.wim 4 g:
「4」代表Windows Ultimate。佈署完後,G槽「4」代表Windows Ultimate。佈署完後,G槽裡就是乾淨的Windows目錄,這時修改一下C槽的開機組態,加入VHD的開機選項,用它開機,就能完成VHD內Windows的安裝程序。
(後面還有更多步驟教學詳解)
驅動程式請安裝完整
經過幾次開機後,VHD裡頭應該就已經是安裝完成的Windows了。這時候請打開裝置管理員,看一下裡頭有沒有問號或驚嘆號,有的話就代表部分驅動程式沒裝好或安裝不完全,或者是根本沒驅動,請解決這些問題。如果有硬體是沒驅動、也不打算使用,那麼請將它移除,不然會造成後續疑難排解上的麻煩。
為何筆者要特別強調此點呢?因為不完整的驅動可能會影響作業系統的睡眠機制,這點對RAM OS很重要,容後再述。另外由於「直接由原生Windows開機」、「透過VHD開機」及「透過RAM Disk裡的VHD開機」會有不同的硬體抽象層(HAL)問題,進入每一種類型的作業系統後最好都檢查1次驅動。
一切無誤後,看要不要先備份一下VHD,也就是拷貝1份留存,接著安裝Firadisk驅動。Firadisk的安裝方式有很多種,有的甚至要開機數次才能完成,這些都請參考附錄裡的教學。
硬體抽象層
「Hardware Abstraction Layer」是作業系統用來與硬體之間溝通的一個橋樑。因為電腦硬體的細項諸元各不同,有了這層抽象層就能讓驅動程式不需要直接與硬體溝通、卻又能驅動硬體,軟體的開發及移植也會更有效率,不必受硬體束縛。
應用在作業系統的部署上也能受惠。用最簡單的例子解釋:在Windows XP(含)之前的作業系統,灌好的系統要搬移到不同的硬體上時常會出現錯誤,甚至無法開機。Windows Vista之後,藉由在開機組態裡加入「Detecthal yes」就能強制Windows重新偵測硬體抽象層,避免因為硬體不匹配而造成問題。
開機組態務求正確
最後一步是設置開機組態,它會嚴重影響到RAM OS的執行成敗,設置時得求絕對精準。一般情況下,一共會有3個開機組態需要變更:
一、開機硬碟上的MBR
雖然是RAM OS,開機時還是得先從硬碟載入吧!開機硬碟上的MBR是用來引導GRUB4DOS,如果你打算直接將GRUB4DOS安裝到MBR,那麼可以跳過此節。
不過,大部分情況是硬碟上已經存在Windows系統,Windows Boot Manager會去讀BCD組態來提供開機導引,所以我們要把GRUB4DOS加入BCD內,接手開機控制權,請參考附錄中的「將GRUB4DOS加入BCD」。
RAM OS系統的開機組態設置及對應關係
MBR裡的Windows Boot Manager是用來啟動硬碟上的VHD或GRUB4DOS,至於Windows安裝本身可以不存在。同時因為RAM OS使用的是存在於RAM Disk裡的VHD檔,所以可以再掛載硬碟上的VHD來備份變更資料,達到「RAM Disk也能存檔」的目的。
二、GRUB4DOS的開機組態
從下載的壓縮檔中取出目錄,改名為「GRUB」,並將其內的grldr.mbr與目錄一起放到C槽、也就是系統碟根目錄下,然後重做GRUB目錄內的menu.lst,鍵入以下內容:
map --mem /win7.vhd (hd0)
map --hook
root hd(0,0)
chainloader +1
第一行的意思,是將win7.vhd載入記憶體,並掛載成為代號為hd0的硬碟。第二行使第一行的掛載命令生效,接下來將執行目錄指定為hd0的第一個分割區,最後「chainloader +1」要求GRUB4DOS將開機流程交給執行目錄下的開機載入器、也就是已經載入到RAM Disk裡的、win7.vhd裡頭系統碟上的Windows Boot Manager。
三、VHD內的開機組態
VHD裡的Windows預設是沒有開機組態的,因為只要透過開機硬碟上的Windows Boot Manager來引導就好。然而我們已經用GRUB4DOS過了一層水,沒辦法再透過上一層的載入器來引導,所以要再幫VHD裡的系統碟加1個開機組態檔,讓GRUB4DOS能順利移交開機流程。
這部分本來可以靠Windows指令簡單達成,但對於Windows開機組態不熟的使用者可能會適得其反、將組態檔案安裝到不正確的位置,所以使用「EasyBCD」這套免費工具代勞會比較順利。
請直接由硬碟中的VHD開機,並透過EasyBCD的「BCD佈署功能」將組態安裝到VHD根目錄下,再修改幾行指令:
bcdedit /store c:\boot\bcd /set {default} testsinging yes
bcdedit /store c:\boot\bcd /set {default} loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit /store c:\boot\bcd /set {default} detecthal on
Testsinging是Windows x64系統用來接納「未通過驗證驅動程式」的開關,因為Firadisk沒有經過微軟簽名,所以得開啟此選項,在Testsinging模式下的Windows桌面右下角會出現「Test Mode」字樣,對系統運作並無大礙。第二行同樣是用來關閉驅動程式驗證的指令,如果少了此設定,Windows在載入的過程中會提示你「Firadisk是未經過驗證的驅動,所以無法開機」,這時就得回開機選單按F8來手動禁用。
完成開機組態設置後,重新開機,在Windows開機選單選擇以GRUB4DOS開機,沒差錯的話應該馬上就會進入記憶體的掛載進度,掛載完成後,默數幾秒就會進入Windows,接下來就只剩一些最佳化設定。
▲安裝完Firadisk後,裝置管理員裡會多出1個Firadisk元件。如果沒有出現這個元件、或是該元件上有問號或驚嘆號,就是安裝不完整,將無法順利進入RAM OS。
▲RAM OS開機過程中如果出現驅動程式驗證問題,請在開機選單中禁用此項,中文為「停用驅動程式強制簽章」。
系統最佳化放最後
進入到RAM OS桌面後,不妨檢查一下裝置管理員內的元件是否皆運行正常。接著進入電腦管理設定分頁檔大小,取合理範圍即可,切勿完全關閉、也不要讓Windows自行管理,不然原本就已經容量有限的RAM Disk會被分頁檔塞爆,因為Windows會嚐試在RAM Disk裡存放RAM Disk所佔用記憶體的置換檔。
接下來要進行的其它設置,都是為了因應RAM OS在關機後就會不見的原生特性。首先是得想辦法讓RAM OS裡頭的變更都能回存至實體硬碟,這點可利用VHD能掛載成本機磁碟的天生優勢,在RAM OS裡頭掛載硬碟上的VHD並且執行同步軟體來備份變更,如此一來就能達到無縫循環、每次用RAM OS開機都能保有上一次更動的資料。
此舉限於一些個人文件或與系統無關的檔案,如果是要安裝新的程式、其至是需要重開機的類型,最好還是用硬碟上的VHD開機處理。
除此之外,切記得關閉RAM OS的休眠(hibernate)功能,因為讓RAM OS休眠意義不大,其至可能會直接早成資料流失。不能休眠沒差,但睡眠(Stand by)就是必要的,RAM OS剛好可以利用睡眠模式啟動時、電腦只剩下記憶體持續供電的特性保存資料,也可以省去每次使用RAM OS開機時所需消耗的漫長載入時間。
關閉休眠功能只需要在命令列鍵入「powercfg /h off」即可,另外BIOS裡的電腦待命模式也要切換到「S3」。睡眠模式會不會耗電?以筆者插了4條DDR3-8GB模組的測量結果來看,總機耗電量跟本不到2瓦,考慮到誤差值,事實上可能更低。所以啦,如果有辦法讓電腦處於不斷電狀態,在大多數情況下都沒有重新開機的必要。
(後面還有RAM OS效能實測)
效能漂亮!實用性一般
來到大家最關心的效能時間。載入了記憶體的系統碟,讀寫速度就跟一般RAM Disk一樣,循序與隨機讀寫效能都不是傳統硬碟或固態硬碟能比擬,不管是用Windows檔案總管或CrystalDiskMark之類的程式驗證,數字都十分漂亮。
尷尬的是,用得到那麼快嗎?循序讀寫上看GB/s,但是記憶體有那麼多嗎?而且我們很少會需要在RAM Disk裡搬那麼大的檔案。至於可破百MB/s的隨機讀寫效能,除了視訊編輯或特定的科學應用,筆者實在想不到還有什麼程式會需要存取如此龐大的不連續資料。
平心而論,除了測試數據能明顯滿足爽度,實際應用上卻感受不出太大落差,或許是與期待中的「讀寫零等待」有一段距離吧!除非是真的對於存取效能非常依賴且吃重的工作,不然它跟安裝在主流SSD上的作業系統沒有什麼分別,就成本來看,用SSD做RAID所能達到的單位效能比也划算得多。
這也告訴我們,要做到真正的讀寫零等待、執行無延遲已經不是存取I/O或運算效能的瓶頸,而是多方溝通時的執行效率,這已經不是靠升級硬體就能達成,而是得從軟硬體與資料的綜合處理結構上改善。
效能比較
▲檔案的壓縮/解壓縮主要還是取決於處理器速度,基本上主流四核心處理器的運算能耐很少超過10MB/s,遠低於存取頻寬瓶頸。
▲檔案拷貝當然最能看出RAM OS的效能,只是你不太會需要頻繁地在記憶體裡搬移那麼大的檔案。
▲有龐大素材的遊戲在RAM OS裡的載入時間有小幅成長,但也不致於達到「秒殺」程度,因為載入過程不只是單純的資料搬移。
▲從Bootloader啟動開始到進入桌面的時間,RAM OS的速度只有快上1秒,因為這段時間還包含了不少系統初始化動作。
整合EFI才具前景
即使如此,有心研究RAM OS的玩家也不必即使如此,有心研究RAM OS的玩家也不必太過沮喪。使用EFI BIOS開機是必行趨勢,如果能先由EFI介面提供基本工作機能(如上網、文書),背景的RAM OS載入完後再做資料或程序的銜接處理,這樣就能避開載入映象檔的「硬直」時間了。要不然以現行硬碟及區網的極限頻寬:100MB/s來計算,30GB的映象檔就得花上5分鐘來載入,比從傳統硬碟上開機還慢!
另外一種作法要業者有興趣才行。技嘉之前就出過i-RAM,如果能用內建電池維持RAM Disk內容,RAM OS的應用性將會大幅增加。雖然以固態硬碟及記憶體的單位成本進度相比來看,目前可能連雷聲都不會有就是了。
不管如何,即使不玩RAM Disk,有足夠的記憶體還是最基本的,對於預算有限的玩家,小幅度升級絕對就能帶來顯著的效能提升。RAM OS做的其實就只是先行吸收了從硬碟讀取資料到記憶體裡的這個過程,是先苦後甘。
不靠RAM OS也沒關係,即使是傳統硬碟,如果使用者能忍受應用程式執行時的「第一次資料載入」時間,再配合大容量記憶體及睡眠機制、並調校好置換檔,以後的資料讀取就能脫離硬碟效能瓶頸,直接從記憶體來了。反觀RAM OS比較像脫口罩呼吸,實驗應用居重。
番外篇:FBWF
有些玩家運行RAM OS的原因倒不致於是出自效能,而是要保護SSD不被寫入,其實只要靠FBWF(File-Based Write Filter)就夠,不必大費周章的設置RAM OS。
不要被其名字所誤導,FBWF的工作目的是為了阻止檔案寫入特定的儲存裝置,改由記憶體來代收寫入作業,在某些PE系統或磁碟還原卡上是常見應用。簡單的說,在SSD上開啟FBWF,就能同時享有SSD的讀取速度、又不必擔心寫入損耗了。由於FBWF有另外獨立、與RAM OS無關的技術細節,我們留待下次繼續討論。
(文=RAMPAGE)
附錄:
Firadisk載點:http://reboot.pro/topic/8804-firadisk-latest-00130/
Firadisk安裝方式:http://diddy.boot-land.net/firadisk/files/install.htm
GRUB4DOS載點:http://code.google.com/p/grub4dos-chenall/
GRUB4DOS安裝方式:http://diddy.boot-land.net/grub4dos/files/install_windows.htm#windows3
如何將Windows佈署至VHD:http://www.techbang.com/posts/3911-invincible-vhd-virtual-disk-lower
本文同步刊載於電腦王雜誌
歡迎加入電腦王雜誌粉絲團