組み込みデバイスにおけるLinuxカーネルのメモリ解析

組み込みデバイスにおけるLinuxカーネルのメモリ解析

ARMベースの組み込みデバイスにはLinuxカーネル2.6.30があり、デバイスでカーネルメモリ使用量分析を実行する必要があります。

Wi-Fiのオン/オフなどの操作を実行しながら、さまざまなカーネルスレッドとモジュールで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

「無料」は、メモリ使用量の鳥瞰図も提供します。予期しないものが見つかった場合は、procfsのファイルをチェックして疑わしいプロセスを見つけます。見てみる価値のある良い文書は次のとおりです。

/proc/PID/マップ- 現在のプロセスによってマップされたすべてのメモリを一覧表示します。

/proc/PID/smaps- 常駐/共有/汚れたメモリ量に関する詳細情報を提供します...ファイルは長いかもしれませんが、より意味のあるデータを生成するためにPythonスクリプトを書くことができます。

関連情報