Windows10 TH2中引入的內存壓縮技術是什麼原理?
12-31
和OS X中的內存壓縮技術和Linux中的zram/zswap又有什麼區別呢?
就是在原來分頁系統加了一層。當內存不夠的時候,分頁系統會把不常使用的頁保存到磁碟,然後設置該頁不存在,下次訪問的時候會觸發缺頁異常,異常處理再從磁碟載入保存的頁面數據,重新分配物理頁面。有內存壓縮,就是把要置換出去的分頁先壓縮內存,不保存到磁碟了。缺頁的時候從內存壓縮中解壓,這樣顯然比磁碟快很多。當內存繼續不夠的時候,可以把壓縮頁保存到磁碟,比不壓縮保存的數據更少,也更快。而且內存的壓縮率往往很高,1:0.5不成問題,那麼32g就可以當64g用了。
或許有人會關心效率問題,這個內存壓縮的核心還是分頁機制,分頁系統可以篩選出不常用的頁,因此性能是沒多大影響的。
看了樓上的回答,好像跟linux里的zswap差不多
Windows 10里引進了一項新技術:內存壓縮。以前,當物理內存快要耗盡的時候,windows會把一些不常用的內存數據轉移到硬碟上的虛擬內存文件(pagefile)里,以釋放物理內存給需要的程序。這樣做有個壞處:當你又需要訪問保存在pagefile里的數據的時候,因為需要從硬碟里讀取,所以速度會非常慢,畢竟硬碟和內存的速度天差地別,即使你用的是SSD。
而更好的解決方案就是把這些數據繼續留在物理內存里。但是物理內存已經見底,怎麼辦呢?Windows 10使用了內存壓縮技術,將一部分不常使用的內存數據打包壓縮起來,等到有程序需要訪問那些數據的時候,再解壓縮出來。因為這些都是在內存中進行的,所以速度非常快,用戶不會感覺到從硬碟讀取數據時候的卡頓感。唯一的額外開銷可能就是增加了CPU使用率,畢竟要壓縮和解壓縮,不過在當今CPU過剩的時代,這根本不算事兒。
當然,內存壓縮只會在物理內存使用率較高的時候才會發生,所以不會每個人都有一個內存佔用超高的system進程。而且內存壓縮也是有極限的,內存數據確實太多的話,Windows 10還是會把一部分數據放到硬碟上。轉自微軟社區之前蘋果就出了一個壓縮內存技術,都好幾年了。給我的感覺是,沒有感覺
引用了Pied piper演算法?
就我粗淺的經驗來看,這些都不是重點啊……當內存用盡需要發生缺頁中斷時,機器已經卡成狗了……外部存儲的速度根本就不行嘛……
這種壓縮的方式不知道怎麼樣……
個人感覺還是保證內存不要耗盡比較靠譜,畢竟現在內存便宜……Memory Compression in Windows 10 RTM
我來賣個萌,活躍下氣氛,現在最先進的內存壓縮技術應該是cut-price。
最重要的是增加內存,我早就關閉壓縮內存功能了,服務里關掉superfetch即可。
那些吃cpu的程序要恐怖了。。。
我不敢想p社的遊戲會有多慢的運行效率。。。推薦閱讀:
