bcc-tools工具之hardirqs

hardirqs从字面意思我们基本就可以知道是其作用肯定与硬中断相关

还是老样子,先hardirqs --help查看下其支持哪些功能:

usage: hardirqs [-h] [-T] [-N] [-C] [-d] [interval] [outputs]

Summarize hard irq event time as histograms

positional arguments:
  interval           output interval, in seconds   
  outputs            number of outputs

optional arguments:
  -h, --help         show this help message and exit
  -T, --timestamp    include timestamp on output  显示时间戳
  -N, --nanoseconds  output in nanoseconds        用ns的形式显示
  -C, --count        show event counts instead of timing   不显示各中断执行时间,而是显示中断发生的次数
  -d, --dist         show distributions as histograms      对每一个硬中断各自采用矩形图方式显示出来

 从help来看,hardirqs功能支持过于单调,甚至没法支持单独跟踪某一个硬中断的功能,这块可能让人觉得很无语,但是这么做原因是为什么呢? 笔者认为主要有两个

原因

  1. 想单独跟踪某个函数的话,采用funclatency足矣
  2. hardirqs相比采用perf跟踪中断情况更加轻量高效

下面重点介绍下使用方法:

./hardirqs

./hardirqs
Tracing hard irq event time... Hit Ctrl-C to end.
^C
HARDIRQ                    TOTAL_usecs  注意显示的单位是us
vmw_vmci                            31
ehci_hcd:usb1                      532
ens33                              743
ata_piix                           831

 ./hardirqs -d    

显示各硬中断执行矩形图

Tracing hard irq event time... Hit Ctrl-C to end.
^C

hardirq = 'ehci_hcd:usb1'
     usecs               : count     distribution
         0 -> 1          : 0        |                                        |
         2 -> 3          : 0        |                                        |
         4 -> 7          : 0        |                                        |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 1        |********************                    |
        32 -> 63         : 2        |****************************************|
        64 -> 127        : 0        |                                        |
       128 -> 255        : 2        |****************************************|
       256 -> 511        : 1        |********************                    |

hardirq = 'ata_piix'
     usecs               : count     distribution
         0 -> 1          : 0        |                                        |
         2 -> 3          : 0        |                                        |
         4 -> 7          : 0        |                                        |
         8 -> 15         : 1        |**                                      |
        16 -> 31         : 20       |****************************************|
        32 -> 63         : 20       |****************************************|
        64 -> 127        : 5        |**********                              |

./hardirqs 1 10 

采用每隔一秒共显示十次的形式

Tracing hard irq event time... Hit Ctrl-C to end.

HARDIRQ TOTAL_usecs
ens33 34
ata_piix 66

HARDIRQ TOTAL_usecs
vmw_vmci 9
ens33 45

HARDIRQ TOTAL_usecs
ens33 57

 ./hardirqs -NT 1

每隔1s显示一次,单位为ns,并显示时间戳

Tracing hard irq event time... Hit Ctrl-C to end.

03:50:04
HARDIRQ                    TOTAL_nsecs
vmw_vmci                          9434
ens33                            57355
ata_piix                         67812

03:50:05
HARDIRQ                    TOTAL_nsecs
ens33                            36448

03:50:06
HARDIRQ                    TOTAL_nsecs
ens33                            48302
ata_piix                        388860

03:50:07
HARDIRQ                    TOTAL_nsecs
ens33                            38183
ehci_hcd:usb1                   396930

 

你可能感兴趣的:(bcc-tools工具之hardirqs)