对嵌入式设备上的 Linux 内核进行内存分析

对嵌入式设备上的 Linux 内核进行内存分析

我在基于 ARM 的嵌入式设备上有一个 Linux 内核 2.6.30,我必须在设备上进行一些内核内存使用情况分析。

我正在考虑在执行 wifi 打开/关闭等操作时监视各种内核线程和模块上的 ps 输出。

你能建议我吗:

我需要监视哪些线程?如何监控内核模块内存使用情况?

答案1

有多种方法可以监控 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

“free”还会为您提供内存使用情况的鸟瞰图。如果我发现任何意外情况,我将通过检查 procfs 中的文件来查找可疑进程。值得一看的好文件是

/proc/PID/地图- 这列出了进程当前映射的所有内存

/proc/PID/smaps- 提供有关有多少内存驻留/共享/脏/等的更多详细信息...该文件可能很冗长,但可以编写Python脚本来生成更有意义的数据

相关内容