2013-05-01 19 views
5

Linux(Fedora)の特定のカーネルモジュール(iptable_mangleなど)のCPU使用率を知る必要があります。 topまたはmpstatは、システムのCPU使用率を示しています。これは実際にはカーネル空間での合計CPU使用率です。特定のカーネルオブジェクトのCPU使用率を知るオプションはありますか?カーネルモジュールのCPU使用率

+0

私はカーネルタスク(またはカーネルスレッド)を起動しない限り、方法はないと思います。 –

+0

私はカーネルスレッドが何であるかは知っていますが、カーネルタスクが何であるかはわかりません。私は、カーネルタスク/スレッドを開始するかのどちらかの私の関心のあるカーネルモジュールを制御できません。ありがとう... –

+0

あなたの質問には意味がないかもしれません。 –

答えて

6

失望して申し訳ありませんが、あなたが望むものを達成する方法はありません - ないLinuxが機能を持っていないので、しかし、定義により:

モジュールは、「プラグイン」をすることができますのカーネルへコールバック(procやsysファイル、デバイスなど)をインストールするか、カーネルスレッドを起動するかの2つの一般的な方法があります。あなたの場合、iptable_mangleは、iptables/netfilterでコールバックを設定してプラグインします。これは、モジュールコードがネットワークスタックの一部として実行されることを意味します(ksoftirqdコンテキストでは、より正確です)。

これがカーネルスレッドのコンテキストであった場合、Linuxは統計を保持します。しかし、コールバックの場合はそうではありません。モジュールコードの実行を終了させるスレッドは他にもたくさんあるので、モジュールコードを分離するだけでは実用的ではありません(もちろん、あなたがソースを所有していない限り、非常に簡単にタイミングステートメントを追加することができます) 。

一部の解決策はカーネルのftraceメカニズムを使用することです - これはカーネルでの関数呼び出しのトレースを可能にします - 信じられないほど強力で、特定の関数ごとに統計を表示できます。あなたが望むものではありませんが、あなたと同じくらい近いです。