Linux
在嵌入式設備上對 linux 核心進行記憶體分析
我在基於 ARM 的嵌入式設備上有一個 linux 核心 2.6.30,我必須在設備上進行一些核心記憶體使用分析。
我正在考慮在執行 wifi 開/關等操作時監視各種核心執行緒和模組上的 ps 輸出。
你能建議我:
我需要監控哪些執行緒?如何監控核心模組記憶體使用情況?
有幾種方法可以監控 Linux 系統中的記憶體使用情況。有些可能可用也可能不可用,具體取決於
- 你執行的是什麼版本
- 核心是如何配置的
- 根文件系統中包含哪些使用者空間工具
由於 Linux 通常是一個虛擬記憶體系統,因此某些統計數據可能會產生誤導和/或不准確。探勘和理解每個統計數據的含義很重要。
儘管如此,我通常通過執行 vmstat 來監控記憶體使用情況,以了解總記憶體使用情況:
# vmstat -s 127168 total memory 44072 used memory 33296 active memory 2164 inactive memory 83096 free memory 0 buffer memory 20468 swap cache 0 total swap 0 used swap 0 free swap 582750 non-nice user cpu ticks 0 nice user cpu ticks 160883 system cpu ticks 7448748 idle cpu ticks 0 IO-wait cpu ticks 16066 IRQ cpu ticks 18249 softirq cpu ticks 0 stolen cpu ticks 0 pages paged in 0 pages paged out 0 pages swapped in 0 pages swapped out 15079537 interrupts 28629740 CPU context switches 1344249586 boot time 25532 forks
“免費”還將讓您鳥瞰記憶體使用情況。如果我看到任何意外情況,我將通過檢查 procfs 中的文件來查找可疑程序。要查看的好文件是
/proc/PID/maps - 列出程序目前映射的所有記憶體
/proc/PID/smaps - 提供有關駐留/共享/臟/等記憶體的更多詳細資訊…此文件可能很冗長,但可以編寫 Python 腳本以生成更有意義的數據