【问题标题】:CPU usage of a kernel module内核模块的 CPU 使用率
【发布时间】:2013-05-01 06:26:26
【问题描述】:

我需要知道 Linux (Fedora) 中特定内核模块(例如 iptable_mangle)的 CPU 使用率。我知道 top 或 mpstat 显示系统 CPU 使用率,这实际上是内核空间中的总 CPU 使用率。是否有任何选项可以了解特定内核对象的 CPU 使用情况?

【问题讨论】:

  • 我认为没有办法,除非该模块启动内核任务(或内核线程)。
  • 我知道内核线程是什么,但不确定内核任务是什么。我也无法控制我感兴趣的内核模块来启动内核任务/线程。谢谢...
  • 那你的问题可能没有任何意义。

标签: linux kernel


【解决方案1】:

很抱歉让您失望了,但是没有办法实现您想要的——不是因为 Linux 没有这个能力,而是根据定义:

模块可以通过两种通用方式“插入”到内核中:通过安装回调(例如 proc 或 sys 文件、设备等),或启动内核线程。在您的情况下,iptable_mangle 通过在 iptables/netfilter 上设置回调来插入。这意味着模块代码作为网络堆栈的一部分执行(在 ksoftirqd 上下文中,更准确地说)。

如果这是在内核线程上下文中,Linux 会保留统计信息。但对于回调,情况并非如此。最终执行模块代码的线程做了很多其他的事情,所以仅仅隔离你的模块代码是不切实际的(当然,除非你拥有源代码,然后你可以很容易地添加时序语句) .

一个部分解决方案是使用内核 ftrace 机制 - 这允许在内核中进行函数调用跟踪 - 它的功能非常强大,并且可以根据特定函数向您显示统计信息。这并不完全是您想要的,但它与您将得到的一样接近。

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 2019-03-15
    • 2018-12-13
    • 2013-07-17
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多