Linux (Fedora) の特定のカーネル モジュール (iptable_mangle など) の CPU 使用率を知りたい。top または mpstat がシステムの CPU 使用率を示していることは知っていますが、これは実際にはカーネル空間での合計 CPU 使用率です。特定のカーネル オブジェクトの CPU 使用率を知るオプションはありますか?
1 に答える
がっかりさせて申し訳ありませんが、あなたが望むものを達成する方法はありません.Linuxにその機能がないからではなく、定義上:
モジュールは、2 つの一般的な方法でカーネルに「プラグイン」できます。コールバック (proc または sys ファイル、デバイスなど) をインストールするか、カーネル スレッドを開始します。あなたの場合、iptables/netfilter でコールバックを設定することにより、iptable_mangle がプラグインします。これは、モジュール コードがネットワーク スタックの一部として実行されることを意味します (より正確には、ksoftirqd コンテキストで)。
これがカーネル スレッド コンテキストにあった場合、Linux は統計を保持します。しかし、コールバックの場合はそうではありません。モジュールコードを実行するスレッドは、他の多くのことを行うため、モジュールコードを分離するだけでは非現実的です (もちろん、ソースを所有していて、タイミングステートメントを非常に簡単に追加できる場合を除きます)。 .
部分的な解決策の 1 つは、カーネル ftrace メカニズムを使用することです。これにより、カーネルでの関数呼び出しのトレースが可能になります。信じられないほど強力で、特定の関数ごとに統計を表示できます。それはまさにあなたが望むものではありませんが、あなたが得る限り近いものです.