# 20220930會議筆記 <br> # 前言 - Linux Kernel中有個daemon叫做kswapd負責管理page - 為了減少page置換時間及減少記憶體耗用量採用了 ZSWAP/ZRAM 機制(老生常談了啦) <br> # 可改進的部分 - 研究發現process中可能存在相同的anonymous page - 不同的process間可能也存在相同的anonymous page - 對於重複的page只要存一次就可以了,重複存只是再浪費時間/空間 <br> # 設計 / 概念 - 對於每個唯一的page,會使用一個zhandle物件來進行管理,其中包含一些必要資訊(例:ref_count) - 這些唯一的page都以handle形式被存在一個紅黑樹中,此樹使用個別page的32-bit checksum來平衡 - swap out之前顯看看是否已經有存在的相同page(唯一/相同),若有存在的就不用再重複存了 <br> # 實作 - page -> jhash2 -> checksum(這點我覺得有點奇怪,checksum和hash應該是不能直接混為一談的) - 因為hash可能會有collision的情況,所以另外用memcmp()再多檢查一次 - 針對zero-filled page的處理方式 - OUT:不進行壓縮,標記該page為0就好 - IN:把目標page填0填好填滿就行 - 此方式不對一堆0進行壓縮/解壓縮,進而省下一些cpu time <br> # 問答 - Q:為什麼會有zero-filled page - A:因安全性問題,若某塊含有敏感資訊的記憶體在釋出之前沒清0,之後被分配到這塊空間的process就 有可能存取到這些敏感資訊,所以為了安全起見系統會在平常釋出可用的page前把該page清0,因此應用程式要一塊空間之後,讀到的內容就會是一堆0。 <br> # Reference - 關鍵字:Kernel Samepage Merging - <https://blog.csdn.net/summer_liuwei/article/details/6013255> - <https://stackoverflow.com/questions/13024087/what-are-memory-mapped-page-and-anonymous-page> - 以上內容若有誤還請不吝指教 <br>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up