簡體   English   中英

如何查找或計算Linux進程的頁表大小和其他內核記帳?

[英]How to find or calculate a Linux process's page table size and other kernel accounting?

如何找出Linux進程的頁表有多大,以及任何其他可變大小的進程記帳?

從Linux 2.6.10開始,單個進程的頁表使用的內存量已通過/proc/<pid>/status的VmPTE字段公開。

如果您真的對頁表感興趣,請執行

$ cat /proc/meminfo | grep PageTables
PageTables:      24496 kB

不確定Linux,但大多數UNIX變體為此提供sysctl(3) 還有sysctl(8)命令行實用程序。

嗯,回到Ye Olden Tymes,我們曾經打電話給nlist(3)來獲取我們感興趣的數據的系統地址,然后打開/ dev / kmem,尋找地址,然后讀取數據。 不確定這是否適用於Linux,但可能值得鍵入“man 3 nlist”並查看返回的內容。

您應該描述您的問題,而不是詢問細節。 如果你分叉太多(特別是對於一個具有大地址空間的進程),會出現各種錯誤(包括內存不足),點擊頁面表的最大大小是恕我直言,這不是一個現實的問題。

Thad說,我也有興趣閱讀Linux中的流程頁面表共享。

但是,作為一個簡單的經驗法則,您可以假設每個進程都會在頁面表中顯示一個等於其虛擬大小的共享,例如每個頁面有6個字節。 因此,例如,如果您擁有一個8GB SGA和500個進程共享的Oracle數據庫,則每個進程將使用14MB頁面表,這將產生7GB頁面表+ 8GB SGA。 (樣本號來自http://kevinclosson.wordpress.com/2009/07/25/little-things-doth-crabby-make-%E2%80%93-part-ix-sometimes-you-have-to-really -really-want-your-hugepages /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM