Linux

在嵌入式設備上對 linux 核心進行記憶體分析

  • November 5, 2012

我在基於 ARM 的嵌入式設備上有一個 linux 核心 2.6.30,我必須在設備上進行一些核心記憶體使用分析。

我正在考慮在執行 wifi 開/關等操作時監視各種核心執行緒和模組上的 ps 輸出。

你能建議我:

我需要監控哪些執行緒?如何監控核心模組記憶體使用情況?

有幾種方法可以監控 Linux 系統中的記憶體使用情況。有些可能可用也可能不可用,具體取決於

  1. 你執行的是什麼版本
  2. 核心是如何配置的
  3. 根文件系統中包含哪些使用者空間工具

由於 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 腳本以生成更有意義的數據

引用自:https://unix.stackexchange.com/questions/33119