[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
輸出解釋
cpu 以及cpu0。。。的每行的每個引數意思(以第一行為例)為:
引數 解釋 /proc//status
size (total pages) 任務虛擬位址空間的大小 vmsize/4
resident(pages) 應用程式正在使用的物理記憶體的大小 vmrss/4
shared(pages) 共享頁數 0
trs(pages) 程式所擁有的可執行虛擬記憶體的大小 vmexe/4
lrs(pages) 被映像到任務的虛擬記憶體空間的庫的大小 vmlib/4
drs(pages) 程式資料段和使用者態的棧的大小 (vmdata+ vmstk )4
dt(pages) 髒頁數量
通過核心**,我們可以更加清楚的了解其含義:
顯示該資訊主要是通過 proc_pid_statm 該函式來實現的。如果對proc的機制不了解,請參考《linux裝置驅動程式》。
其呼叫過程:proc_pid_statm->statm_pmd_range->statm_pte_range。目的是從位址區間逐漸轉化成具體的每個頁表。閱讀**,只需了解乙個大概,不用了解很多細節,要比寫起來輕鬆許多。
其中totals,pages,shared,dirty的是通過虛擬位址的頁表來進行判斷。
do while (address < end);
trs、drs、lrs是通過線性位址區間來進行區分的。
int proc_pid_statm(struct task_struct *task, char * buffer)
。。。。。
while (vma)
pages=trs+drs+lrs
因此說,trs drs lrs 與totals,pages,shared,dirty兩組,分別從兩個角度觀察記憶體。
關於proc的內容,參見:
proc檔案系統---程序相關
proc檔案系統的相關資訊
通過原始碼編譯linux核心
tar xvf linux 5.2.11.tar.xz c usr src kernels3 進入 usr src kernels目錄,配置核心編譯引數。注意要先安裝配置圖形化介面的軟體包 ncurses devel。make menuconfig或者直接將當前系統的核心配置檔案 boot conf...
核心下各種通過XX查詢
1 status pslookupprocessbyprocessid processid,process obj 通過程序id查詢程序物件 ntstatus pslookupprocessbyprocessid in handle processid,out peprocess process 需...
如何在IAR中通過Watch視窗觀察區域性變數的值
最近在用430開發一款產品,在軟體除錯的時候發現watch視窗中無法觀察區域性變數的值,總是顯示,下面通過乙個簡答的例子說明一下現象 include msp430g2553.h global variable unsigned char receiveglobal unsigned char add...