Re: itrace: An interrupts tracing tool

2014-09-22 Thread Steven Rostedt
On Mon, 22 Sep 2014 11:35:43 +0800
duzhiping  wrote:

>   Many functions depends on interrupts in Linux system, when the interrupts 
> occur an error, it may cause fatal problem.
> 
>   Then, we should record their trace when interrupts in and out. The recorded 
> information could help us analyze interrupts errors.
> 
>   Itrace is such an interrupts trace tool we have developed, it provides 
> config interface and trace information through "procfs".
> 
>   Do you think it has the value to upstream?
> 

You mean like:

# trace-cmd record -p function_graph -l do_IRQ -e irq_handler_entry sleep 10
# trace-cmd report
   trace-cmd-3165  [002]53.201912: funcgraph_entry:   | 
 do_IRQ() {
   trace-cmd-3165  [002]53.201920: irq_handler_entry:irq=21 
name=uhci_hcd:usb4
   trace-cmd-3165  [002]53.201924: irq_handler_entry:irq=21 
name=eth0
   trace-cmd-3165  [002]53.201927: funcgraph_exit:   + 12.738 us  | 
 }
  -0 [003]53.202140: funcgraph_entry:   | 
 do_IRQ() {
  -0 [003]53.202146: irq_handler_entry:irq=21 
name=uhci_hcd:usb4
  -0 [003]53.202148: irq_handler_entry:irq=21 
name=eth0
  -0 [003]53.202151: funcgraph_exit:   + 10.172 us  | 
 }
  -0 [000]58.679619: funcgraph_entry:   | 
 do_IRQ() {
  -0 [000]58.679625: irq_handler_entry:irq=14 
name=ata_piix
  -0 [000]58.679630: funcgraph_exit: 8.040 us   | 
 }
  -0 [001]58.680176: funcgraph_entry:   | 
 do_IRQ() {
  -0 [001]58.680178: irq_handler_entry:irq=14 
name=ata_piix
  -0 [001]58.680181: funcgraph_exit: 4.160 us   | 
 }
  -0 [002]58.680633: funcgraph_entry:   | 
 do_IRQ() {
  -0 [002]58.680635: irq_handler_entry:irq=14 
name=ata_piix
  -0 [002]58.680637: funcgraph_exit: 3.489 us   | 
 }
  -0 [003]58.680913: funcgraph_entry:   | 
 do_IRQ() {
  -0 [003]58.680915: irq_handler_entry:irq=14 
name=ata_piix
  -0 [003]58.680917: funcgraph_exit: 3.368 us   | 
 }
kworker/u8:1-40[000]58.681191: funcgraph_entry:   | 
 do_IRQ() {
kworker/u8:1-40[000]58.681192: irq_handler_entry:irq=14 
name=ata_piix
kworker/u8:1-40[000]58.681196: funcgraph_exit: 4.551 us   | 
 }
  -0 [001]58.681415: funcgraph_entry:   | 
 do_IRQ() {
  -0 [001]58.681417: irq_handler_entry:irq=14 
name=ata_piix
  -0 [001]58.681420: funcgraph_exit: 3.991 us   | 
 }
  -0 [002]58.681632: funcgraph_entry:   | 
 do_IRQ() {
  -0 [002]58.681633: irq_handler_entry:irq=14 
name=ata_piix
  -0 [002]58.681635: funcgraph_exit: 2.183 us   | 
 }


Or just use the irq events only?

# trace-cmd record -e irq_handler_entry -e irq_handler_exit sleep 10
# trace-cmd report
  -0 [003]   198.853342: irq_handler_entry:irq=14 
name=ata_piix
  -0 [003]   198.853344: irq_handler_exit: irq=14 
ret=handled
  -0 [000]   198.862038: irq_handler_entry:irq=14 
name=ata_piix
  -0 [000]   198.862040: irq_handler_exit: irq=14 
ret=handled
  -0 [001]   198.862227: irq_handler_entry:irq=14 
name=ata_piix
  -0 [001]   198.862228: irq_handler_exit: irq=14 
ret=handled
  -0 [002]   198.870423: irq_handler_entry:irq=14 
name=ata_piix
  -0 [002]   198.870424: irq_handler_exit: irq=14 
ret=handled


It's a bit cleaner, but the function_graph gives the times nicely. But
I do plan on updating trace-cmd to give times between different events.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: itrace: An interrupts tracing tool

2014-09-22 Thread Mats Liljegren
On Mon, 22 Sep 2014 11:35:43 +0800
duzhiping  wrote:

>   Many functions depends on interrupts in Linux system, when the
> interrupts occur an error, it may cause fatal problem.
> 
>   Then, we should record their trace when interrupts in and out. The
> recorded information could help us analyze interrupts errors.
> 
>   Itrace is such an interrupts trace tool we have developed, it
> provides config interface and trace information through "procfs".
> 
>   Do you think it has the value to upstream?

Where can I look at the code?

What makes it different from existing tools, e.g. ftrace?

/Mats
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: itrace: An interrupts tracing tool

2014-09-22 Thread Mats Liljegren
On Mon, 22 Sep 2014 11:35:43 +0800
duzhiping duzhiping...@huawei.com wrote:

   Many functions depends on interrupts in Linux system, when the
 interrupts occur an error, it may cause fatal problem.
 
   Then, we should record their trace when interrupts in and out. The
 recorded information could help us analyze interrupts errors.
 
   Itrace is such an interrupts trace tool we have developed, it
 provides config interface and trace information through procfs.
 
   Do you think it has the value to upstream?

Where can I look at the code?

What makes it different from existing tools, e.g. ftrace?

/Mats
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: itrace: An interrupts tracing tool

2014-09-22 Thread Steven Rostedt
On Mon, 22 Sep 2014 11:35:43 +0800
duzhiping duzhiping...@huawei.com wrote:

   Many functions depends on interrupts in Linux system, when the interrupts 
 occur an error, it may cause fatal problem.
 
   Then, we should record their trace when interrupts in and out. The recorded 
 information could help us analyze interrupts errors.
 
   Itrace is such an interrupts trace tool we have developed, it provides 
 config interface and trace information through procfs.
 
   Do you think it has the value to upstream?
 

You mean like:

# trace-cmd record -p function_graph -l do_IRQ -e irq_handler_entry sleep 10
# trace-cmd report
   trace-cmd-3165  [002]53.201912: funcgraph_entry:   | 
 do_IRQ() {
   trace-cmd-3165  [002]53.201920: irq_handler_entry:irq=21 
name=uhci_hcd:usb4
   trace-cmd-3165  [002]53.201924: irq_handler_entry:irq=21 
name=eth0
   trace-cmd-3165  [002]53.201927: funcgraph_exit:   + 12.738 us  | 
 }
  idle-0 [003]53.202140: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [003]53.202146: irq_handler_entry:irq=21 
name=uhci_hcd:usb4
  idle-0 [003]53.202148: irq_handler_entry:irq=21 
name=eth0
  idle-0 [003]53.202151: funcgraph_exit:   + 10.172 us  | 
 }
  idle-0 [000]58.679619: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [000]58.679625: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [000]58.679630: funcgraph_exit: 8.040 us   | 
 }
  idle-0 [001]58.680176: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [001]58.680178: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [001]58.680181: funcgraph_exit: 4.160 us   | 
 }
  idle-0 [002]58.680633: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [002]58.680635: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [002]58.680637: funcgraph_exit: 3.489 us   | 
 }
  idle-0 [003]58.680913: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [003]58.680915: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [003]58.680917: funcgraph_exit: 3.368 us   | 
 }
kworker/u8:1-40[000]58.681191: funcgraph_entry:   | 
 do_IRQ() {
kworker/u8:1-40[000]58.681192: irq_handler_entry:irq=14 
name=ata_piix
kworker/u8:1-40[000]58.681196: funcgraph_exit: 4.551 us   | 
 }
  idle-0 [001]58.681415: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [001]58.681417: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [001]58.681420: funcgraph_exit: 3.991 us   | 
 }
  idle-0 [002]58.681632: funcgraph_entry:   | 
 do_IRQ() {
  idle-0 [002]58.681633: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [002]58.681635: funcgraph_exit: 2.183 us   | 
 }


Or just use the irq events only?

# trace-cmd record -e irq_handler_entry -e irq_handler_exit sleep 10
# trace-cmd report
  idle-0 [003]   198.853342: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [003]   198.853344: irq_handler_exit: irq=14 
ret=handled
  idle-0 [000]   198.862038: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [000]   198.862040: irq_handler_exit: irq=14 
ret=handled
  idle-0 [001]   198.862227: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [001]   198.862228: irq_handler_exit: irq=14 
ret=handled
  idle-0 [002]   198.870423: irq_handler_entry:irq=14 
name=ata_piix
  idle-0 [002]   198.870424: irq_handler_exit: irq=14 
ret=handled


It's a bit cleaner, but the function_graph gives the times nicely. But
I do plan on updating trace-cmd to give times between different events.

-- Steve
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


itrace: An interrupts tracing tool

2014-09-21 Thread duzhiping
  Many functions depends on interrupts in Linux system, when the interrupts 
occur an error, it may cause fatal problem.

  Then, we should record their trace when interrupts in and out. The recorded 
information could help us analyze interrupts errors.

  Itrace is such an interrupts trace tool we have developed, it provides config 
interface and trace information through "procfs".

  Do you think it has the value to upstream?

  Thanks
  Zhiping Du

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


itrace: An interrupts tracing tool

2014-09-21 Thread duzhiping
  Many functions depends on interrupts in Linux system, when the interrupts 
occur an error, it may cause fatal problem.

  Then, we should record their trace when interrupts in and out. The recorded 
information could help us analyze interrupts errors.

  Itrace is such an interrupts trace tool we have developed, it provides config 
interface and trace information through procfs.

  Do you think it has the value to upstream?

  Thanks
  Zhiping Du

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/