linux high memory
32bit操作系統:
linux將邏輯地址空間分爲兩部分:0-3G是用戶地址空間,3-4G是內核地址空間。所以linux內核只能夠訪問物理地址空間大小爲1G,也就是物理地址0-1G。爲了能夠訪問所有的物理地址空間,linux提出了high memory機制:從內核地址空間劃分出一部分作爲high memory,該區域的邏輯地址可以動態的去映射到其他的物理地址。
引發的問題
VFS inode shrinker 回收了當前仍在使用的page cache的inode,也會從內存卸載掉大量的active page cache。
- inode cache:打開文件的inode會暫存在low memory(內核地址可以直接映射的物理地址),因爲很可能會再次被訪問。
- page cache:讀取的文件數據會暫存在high memory中,但是受到high memory的邏輯地址空間的限制,shrinker採用lru算法保證不會超出限制。