把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

ADVERTISEMENT

翻開多數的RAM Disk教學,大部分都會告訴你:把暫存檔放到記憶體、把置換檔放到記憶體、把龐大的遊戲資料檔放到記憶體。只是RAM Disk的應用也不是一日兩日了,還在搞這些玩法難免顯得八股。

快速瀏覽:

把系統碟放進RAM Disk

「把整個作業系統都搬到記憶體」這種形容有點模糊,更精準的說法是「把系統碟放進記憶體」,讓作業系統一開機就是從記憶體載入,甚至還能達成「零硬碟系統」,是不少電腦教室風行已久的佈署模式。

怎麼放?當然不是直接把C槽的內容都拷貝到RAM Disk裡,針對不同的應用,可以衍伸出幾種不同的作法。比如:藉由VMWare來執行作業系統、用FBWF來達成磁碟防寫、其至一開機就直接從記憶體裡完成作業系統的載入程序等,各自有不同的限制及效能差異。

先買幾條RAM再說吧

既然是要把整個作業系統都放進RAM Disk,記憶體的使用量自然不能太小氣,即使你最後決定不這麼玩,還是會需要充足的記憶體來維持系統效能。很多人會錯估、或者說是小看了記憶體對於系統穩定性的影響,以為只要不超頻,就只需讓它達到夠用的容量就好,其實這是很要不得的觀念。

挑幾支穩定性佳的記憶體除了能避免當機,也能減少作業系統的除錯時間,減低了因為記憶體錯誤而造成的效能損失。讓作業系統在硬碟裡執行就是如此,更何況全部載入記憶體裡的風險會更大!一有閃失可是連存檔的機會都沒有。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

▲測試平台:筆者在進行本篇專題所需的測試時,使用的是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),同時實體記憶體與虛擬記憶體之間也會不斷地交換資料(紫線)。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

下圖則是將分頁檔放進實體記憶體後,資料的傳遞方式。紅線先透過虛擬位址去找實體記憶體裡的分頁檔的實際位置,找到以後再透過1次藍線虛擬位址去對應分頁檔裡的資料,光聽敘述就很複雜,實際運作起來更可能會產生一些問題。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

虛擬機器:最簡單的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差不多。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

▲虛擬機的讀寫效能明顯經過嚴重損耗,約是無虛擬化的1/10,儘管也夠快了。

周邊裝置無法完整支援

虛擬機器多會支援「USB Pass through」機能,讓外裝至電腦上的裝置可以跳過母系統、直接由虛擬機裡的客體作業系統來管理。這個方法不是萬能,有些比較刁鑽的裝置是怎樣都無法透過虛擬機來使用的,比如特定的無線網卡、或是一些電視棒,都將無法支援。

顯示機能落後

只要顯卡廠沒提供驅動程式,GTS240與GTX295對於虛擬機器來說都一樣。就算不玩遊戲,作業系統對於顯示卡的要求仍然非常吃重的,比如視窗的特效運算、優化視訊記憶體以提高視窗的切換速度等,進入了虛擬機總是會覺得反應頓頓的,這都是無法使用VGA硬體加速造成的結果。

以上提到的幾點,跟RAM OS都沒有關係,純粹是虛擬機效率問題。即使在硬碟上、SSD上使用虛擬機也會發生,差別在於第1點的落差異常大。

虛擬機的系統碟存取架構

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

上圖是讓虛擬機直接存取實體磁碟來當作系統碟的方式,因為RAM Disk的掛載方式與一般硬碟不同,實作上有一定難度。下圖則是將虛擬機的系統碟存成映象檔,再放進用來儲存RAM Disk的映象檔裡,犧牲一點效能來換取管理上的方便。

延伸閱讀:

把 Windows 7 灌進 VHD 虛擬磁碟(上)

把 Windows 7 灌進 VHD 虛擬磁碟(下)

自製 Windows 7 + Windows 8,玩新系統、舊系統繼續用

Windows 一鍵效能優化 6 大迷思,從基礎看系統效能

調整系統分頁檔,刪除hiberfil.sys休眠設定,讓你的SSD多出20GB硬碟空間

(後面還有:Boot in RAM:直接從記憶體開機)

魯蛇實驗室
作者

戶田惠梨香 新垣結衣 長澤雅美 吉高由里子 志田未來 北川景子 香里奈 竹內結子 北乃紀伊 菅野美穗 黑川智花 宮崎葵 夏帆 貫地谷詩穗梨 石原里美 有村架純 井上真央 真野恵里菜 能年玲奈 深田恭子

使用 Facebook 留言
魯蛇實驗室
2人給推

2.  魯蛇實驗室 (發表於 2013年5月07日 10:53)
因為還要回寫入硬碟當然會很慢,最簡單的解決方案還是用SSD,效果差不多而且又方便。
Allen Huang
3.  Allen Huang (發表於 2013年5月07日 11:44)
「...Windows內建的RAM Disk有1.5TB容量限制,對完整的作業系統來說跟本不夠用...」
摁... 1.5TB??
SeeingSky
2人給推

4.  SeeingSky (發表於 2013年5月07日 16:13)
早知道早些時候SSD跟RAM便宜的時候買些來用
現在價格...回不去了 囧rz
魯蛇實驗室
1人給推

5.  魯蛇實驗室 (發表於 2013年5月07日 16:43)
※ 引述《SeeingSky》的留言:
> 早知道早些時候SSD跟RAM便宜的時候買些來用
> 現在價格...回不去了 囧rz
長期來看,記憶體價格還是會越來越便宜的(希望啦)
SeeingSky
6.  SeeingSky (發表於 2013年5月07日 16:55)
現在幫別人組電腦都會被問說怎麼記憶體越來越貴...
還問我說是不是有偷收錢= =|||
Neil
7.  Neil (發表於 2013年5月07日 22:28)
「應用程式透過作業系統創造的虛擬位址來存取實體與虛擬記憶體(Pagefile/Swapfile.sys)」

請問一下,那虛擬位址(Virtual Address)是存在哪裡?實體記憶體?虛擬記憶體(硬碟、pagefile)?還是cache?
無痕
8.  無痕 (發表於 2013年7月30日 07:03)
虛擬位址是給軟體的記憶體管理機制位址。
如果要說存在哪我想是存在處理器暫存器。
因為虛擬位址是通往實體位址的橋樑...。
hewatika
9.  hewatika (發表於 2016年12月20日 04:49)
整篇看得很燃!!!

RAM OS 是多少年前的宅夢哪!!!

無奈現在 SSD 這麼便宜,以至於這篇文章也只能看乾爽的...

文末沒有測 IOPS,實在是破壞了這篇文章的整體感~

殘念
發表回應
謹慎發言,尊重彼此。按此展開留言規則