From: Jan Kiszka <jan.kiszka@domain.hid>
To: Sebastian Smolorz <ssm@domain.hid>
Cc: adeos-main@gna.org
Subject: Re: [Adeos-main] [PATCH] I-pipe tracer for ARM
Date: Mon, 04 Dec 2006 18:48:31 +0100 [thread overview]
Message-ID: <45745F6F.2050101@domain.hid> (raw)
In-Reply-To: <E1GrHXk-00023w-Oq@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 8387 bytes --]
Sebastian Smolorz wrote:
> Hi,
>
> here comes a preliminary version of the missing ARM-parts for the I-pipe
Cooool.
> tracer. It's not yet complete, some features for the tracing of IRQs-off
> times are missing, but will soon be added. Besides of that, the tracer seems
> to work. ;-)
>
> The following traces were recorded on a S3C2440. It would be nice if someone
> could have a look at them and determine if everything looks sane so far.
Only some quick remarks below.
>
> --
> Sebastian
>
[snipped code]
Wow, looks like it was a lot of work. Why did you have to add so many
stuff to make tracing work?
>
> ------------------------------------------------------------------------
>
> I-pipe worst-case tracing service on 2.6.15/ipipe-1.5-03
> ------------------------------------------------------------
> Begin: 21055672 cycles, Trace Points: 3 (-10/+10), Length: 4651 us
>
> +----- Hard IRQs ('|': locked)
> |+---- <unused>
> ||+--- <unused>
> |||+-- <unused>
> ||||+- Linux ('*': domain stalled, '+': current, '#': current+stalled)
> ||||| +---------- Delay flag ('+': > 1 us, '!': > 10 us)
> ||||| | +- NMI noise ('N')
> ||||| | |
> Type User Val. Time Delay Function (Parent)
> +func -15 1.333N __ipipe_stall_root+0x10 (run_timer_softirq+0x38)
^^^
There is "NMI noise" marked in a lot of lines. I don't know if your
board has NMI support at all, but it would surely not fire that often.
Something is screwed up, either only in the trace_point recording or
(more critical) in the locking.
> | +begin 0x80000001 -13 1.333N __ipipe_stall_root+0x34 (run_timer_softirq+0x38)
> | #end 0x80000001 -12 1.444N __ipipe_stall_root+0x4c (run_timer_softirq+0x38)
> #func -10 1.444N __ipipe_unstall_root+0x10 (run_timer_softirq+0x19c)
> | #begin 0x80000000 -9 1.555 __ipipe_unstall_root+0x30 (run_timer_softirq+0x19c)
> | +end 0x80000000 -7 1.333N __ipipe_unstall_root+0x68 (run_timer_softirq+0x19c)
> +func -6 1.444N __ipipe_stall_root+0x10 (__do_softirq+0x74)
> | +begin 0x80000001 -5 1.555 __ipipe_stall_root+0x34 (__do_softirq+0x74)
> | #end 0x80000001 -3 2.111N __ipipe_stall_root+0x4c (__do_softirq+0x74)
> +func -1 1.444N default_idle+0x10 (cpu_idle+0x48)
>> | +begin 0x80000000 0+ 1.555 default_idle+0x44 (cpu_idle+0x48)
> :| +func 1! 4650.111N s3c24xx_default_idle+0x10 (default_idle+0x78)
You are tracing idle! Likely you have to account for the halt operation
reenabling IRQs before falling asleep.
> <| +end 0x80000000 4651 1.666N default_idle+0x8c (cpu_idle+0x48)
> | +func 4653 1.333N __ipipe_grab_irq+0x10 (__irq_svc+0x24)
> | +func 4654 1.555N __ipipe_handle_irq+0x10 (__ipipe_grab_irq+0xc8)
> | +func 4656 1.333N __ipipe_ack_timerirq+0x10 (__ipipe_handle_irq+0x150)
> | +func 4657 1.333N ipipe_test_and_stall_pipeline_from+0x10 (__ipipe_ack_timerirq+0x20)
> | #func 4658 1.444N __ipipe_mach_acktimer+0x10 (__ipipe_ack_timerirq+0x28)
> | #func 4660 1.444N s3c_irq_ack+0x10 (__ipipe_ack_timerirq+0x44)
> | #func 4661 1.555N s3c_irq_unmask+0x10 (__ipipe_ack_timerirq+0x50)
> | +func 4663 1.444N __ipipe_walk_pipeline+0x10 (__ipipe_handle_irq+0x1a8)
> | +func 4664 1.666N __ipipe_sync_stage+0x10 (__ipipe_walk_pipeline+0x9c)
> | #func 4666 0.000N asm_do_IRQ+0x14 (__ipipe_sync_stage+0x1f8)
>
>
> I-pipe frozen back-tracing service on 2.6.15/ipipe-1.5-03
> ------------------------------------------------------------
> Freeze: 18284279888 cycles, Trace Points: 30 (+10)
>
> +----- Hard IRQs ('|': locked)
> |+---- <unused>
> ||+--- <unused>
> |||+-- <unused>
> ||||+- Linux ('*': domain stalled, '+': current, '#': current+stalled)
> ||||| +---------- Delay flag ('+': > 1 us, '!': > 10 us)
> ||||| | +- NMI noise ('N')
> ||||| | |
> Type User Val. Time Delay Function (Parent)
> : #func -90+ 1.333N vma_prio_tree_next+0x10 (update_mmu_cache+0x144)
> : #func -89+ 2.333 prio_tree_next+0x14 (vma_prio_tree_next+0x64)
> : #func -86+ 1.555N prio_tree_left+0x10 (prio_tree_next+0x128)
> : #func -85+ 1.555N prio_tree_right+0x10 (prio_tree_next+0x180)
> : #func -83+ 1.333N prio_tree_parent+0x10 (prio_tree_next+0x170)
> : #func -82+ 1.777N prio_tree_right+0x10 (prio_tree_next+0x180)
> : #func -80+ 1.666N __ipipe_unstall_root+0x10 (update_mmu_cache+0x150)
> :| #begin 0x80000000 -78+ 1.555N __ipipe_unstall_root+0x30 (update_mmu_cache+0x150)
> :| +end 0x80000000 -77+ 9.666N __ipipe_unstall_root+0x68 (update_mmu_cache+0x150)
> : +func -67+ 1.444N __up_read+0x10 (do_page_fault+0x1d4)
> : +func -66+ 1.777N __ipipe_test_and_stall_root+0x10 (__up_read+0x18)
> :| +begin 0x80000001 -64+ 1.777 __ipipe_test_and_stall_root+0x34 (__up_read+0x18)
> :| #end 0x80000001 -62+ 1.555N __ipipe_test_and_stall_root+0x4c (__up_read+0x18)
> : #func -61+ 1.555N __ipipe_restore_root+0x10 (__up_read+0xd4)
> : #func -59+ 1.555N __ipipe_unstall_root+0x10 (__ipipe_restore_root+0x24)
> :| #begin 0x80000000 -57+ 2.222 __ipipe_unstall_root+0x30 (__ipipe_restore_root+0x24)
> :| +end 0x80000000 -55! 12.555N __ipipe_unstall_root+0x68 (__ipipe_restore_root+0x24)
> : +func -43+ 3.333N __ipipe_syscall_root+0x10 (vector_swi+0x64)
> : +func -39+ 1.777N sys_write+0x14 (ret_fast_syscall+0x0)
> : +func -38+ 4.222N fget_light+0x10 (sys_write+0x24)
> : +func -33+ 3.444N vfs_write+0x10 (sys_write+0x50)
> : +func -30+ 5.000N rw_verify_area+0x14 (vfs_write+0x94)
> : +func -25+ 4.333N __ipipe_frozen_ctrl+0x14 (vfs_write+0xc4)
> : +func -21+ 2.111N simple_strtol+0x10 (__ipipe_frozen_ctrl+0x9c)
> : +func -18+ 6.000N simple_strtoul+0x10 (simple_strtol+0x30)
> : +func -12+ 1.777N ipipe_trace_frozen_reset+0x10 (__ipipe_frozen_ctrl+0xfc)
> : +func -11+ 2.777 __ipipe_global_path_lock+0x10 (ipipe_trace_frozen_reset+0x14)
> :| +begin 0x80000001 -8+ 6.000N __ipipe_global_path_lock+0x30 (ipipe_trace_frozen_reset+0x14)
> :| +end 0x80000001 -2+ 2.333N __ipipe_global_path_unlock+0x68 (ipipe_trace_frozen_reset+0x68)
> < +freeze 0xffffffff 0 97.444N __ipipe_frozen_ctrl+0x108 (vfs_write+0xc4)
Hmm, takes quite a long time to complete the freeze though you only have
10 post-trace points (which defines its complexity). Unusual, also when
comparing with other traced functions.
> +func 97 3.222N do_PrefetchAbort+0x10 (ret_from_exception+0x0)
> +func 100 2.333N do_translation_fault+0x14 (do_PrefetchAbort+0x1c)
> +func 103 2.777N do_page_fault+0x14 (do_translation_fault+0x2c)
> +func 105 2.222N __down_read_trylock+0x10 (do_page_fault+0xbc)
> +func 108 1.888N __ipipe_test_and_stall_root+0x10 (__down_read_trylock+0x18)
> | +begin 0x80000001 109 1.888N __ipipe_test_and_stall_root+0x34 (__down_read_trylock+0x18)
> | #end 0x80000001 111 2.111N __ipipe_test_and_stall_root+0x4c (__down_read_trylock+0x18)
> #func 113 1.777N __ipipe_restore_root+0x10 (__down_read_trylock+0x4c)
> #func 115 1.555N __ipipe_unstall_root+0x10 (__ipipe_restore_root+0x24)
> | #begin 0x80000000 117 0.000N __ipipe_unstall_root+0x30 (__ipipe_restore_root+0x24)
>
>
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]
next prev parent reply other threads:[~2006-12-04 17:48 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-04 17:23 [Adeos-main] [PATCH] I-pipe tracer for ARM Sebastian Smolorz
2006-12-04 17:48 ` Jan Kiszka [this message]
2006-12-05 9:26 ` Sebastian Smolorz
2006-12-05 9:36 ` Jan Kiszka
2006-12-05 14:09 ` Sebastian Smolorz
2006-12-05 14:31 ` Jan Kiszka
2006-12-05 14:38 ` Gilles Chanteperdrix
2006-12-05 14:40 ` Jan Kiszka
2006-12-05 14:56 ` Gilles Chanteperdrix
2006-12-05 16:39 ` Sebastian Smolorz
2006-12-05 16:48 ` Jan Kiszka
2006-12-05 18:34 ` Sebastian Smolorz
2006-12-05 18:51 ` Jan Kiszka
2006-12-06 8:19 ` Sebastian Smolorz
2006-12-06 10:16 ` Jan Kiszka
2006-12-06 16:05 ` Sebastian Smolorz
2006-12-08 15:57 ` Jan Kiszka
2006-12-05 16:52 ` Gilles Chanteperdrix
2006-12-05 9:08 ` Gilles Chanteperdrix
2006-12-05 10:18 ` Sebastian Smolorz
2006-12-05 13:06 ` Gilles Chanteperdrix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45745F6F.2050101@domain.hid \
--to=jan.kiszka@domain.hid \
--cc=adeos-main@gna.org \
--cc=ssm@domain.hid \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.