找出內核擁有哪些內存頁

找出內核擁有哪些內存頁

我可以使用Linux命令獲得所有進程的精彩記憶體映射

pmap $(ps -A | awk '{print $1}'|grep -v PID) | sort | grep \^0

看起來像

...
00007fd6dbf45000      4K rw---  /lib/libnss_compat-2.11.1.so 
00007fd6dbf46000   1524K r-x--  /lib/libc-2.11.1.so
00007fd6dc0c3000   2044K -----  /lib/libc-2.11.1.so  
...

所有進程的記憶體映射都合併在這裡。但我缺少內核記憶體頁面所在的資訊。有沒有類似的「完整記憶體映射」工具?

答案1

你的命令沒有太大意義。每個進程報告的位址pmap僅在這些進程自己的位址空間中有效,即在它們的虛擬記憶體中。從技術上講,它們對應於不同的頁面,但它們會有點「重疊」。其中一些不會位於 RAM 中,而是位於磁碟上。

另一方面,核心使用擁有的頁面儲存在實體記憶體上。

答案2

更好的方法是使用 sysrq。

執行以下命令並檢查您的 /var/log/messages。

# echo m > /proc/sysrq-trigger

這將為您提供區域明智的記憶體轉儲。結帳以下網址

https://www.kernel.org/doc/gorman/html/understand/understand005.html

相關內容