代码之家  ›  专栏  ›  技术社区  ›  wangt13

如何在Linux(X86_64)中检查IRQ延迟以进行性能调优?

  •  0
  • wangt13  · 技术社区  · 5 年前

    有没有办法检查Linux内核中的中断处理延迟?

    或者有没有办法检查为什么在Linux 4.19.138的特定配置中CPU使用率只有40%?


    背景

    目前我遇到了一个问题,我的X86服务器运行的是第三方Linux-4.19.138内核(其配置文件约为6000行)或Ubuntu 20.04 X86_64(其配置文档约为9500行)。

    在这台服务器上运行netperf测试时,我发现使用第三方Linux-4.19.138内核时,netperf的IO延迟比Ubuntu 20.04更差。运行第三方内核时,CPU使用率低于40%,而运行Ubuntu 20.04时,CPU利用率约为100%。

    它们在内核运行时使用相同的内核命令行和相同的性能配置文件。
    在Linux-4.19.138中,服务器中的中断或netserver进程似乎受到了限制。

    然后,我使用短配置文件(6000行长)重建了Ubuntu 20.04内核,并得到了类似的糟糕结果。

    因此,它得出结论,内核配置起了作用。

    在比较两种配置(6000行与9500行)之前,为了缩小范围,我的问题是,有没有办法检查为什么在4.19.138的配置中CPU使用率仅为40%?或者有没有一种方法可以检查Linux内核中的中断处理延迟?

    0 回复  |  直到 5 年前
        1
  •  1
  •   wangt13    5 年前

    我终于找到了原因。它来自
    net.core.busy_read和
    net.core.busy_poll均为0。
    这意味着套接字轮询被禁用,这会影响netperf延迟。

    但问题变成了 在这种情况下,较低的CPU使用率表明Linux中存在一些不同,我们应该使用什么样的工具或如何找出导致2个内核中CPU使用率差异的原因?