[dtrace-discuss] Multiple returns from a syscall
Adam Leventhal
ahl at eng.sun.com
Tue Jun 5 12:12:01 PDT 2007
Hi Jesus,
Note that DTrace output is presented one CPU at a time rather than sorted
chronologically. Without seeing the full output from DTrace, one wouldn't
be able to draw any conclusions about a 'missing' entry. I suggest you
trace the timestamp in addition and then sort based on that column or
pbind the process to a specific CPU when doing this sort of analysis.
Adam
On Tue, Jun 05, 2007 at 08:58:46PM +0200, Jesus Cea wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Trying to debug a very ugly issue (multisecond disk delays), found the
> following "impossible" info:
>
> """
> ...
> 0 40286 pwrite64:entry
> 0 40287 pwrite64:return 36436
> 0 39998 fdsync:entry 5379
> 1 39999 fdsync:return 37918785 4
> 1 40286 pwrite64:entry
> 1 40287 pwrite64:return 69130
> 1 39998 fdsync:entry 5394
> 0 39999 fdsync:return 213396018 4
> 0 40286 pwrite64:entry
> 0 40287 pwrite64:return 22620
> 0 39998 fdsync:entry 3993
> 0 40286 pwrite64:entry
> 0 40287 pwrite64:return 63125
> 0 39998 fdsync:entry 5358
> 0 39999 fdsync:return 35506247 4
> 1 39999 fdsync:return 48140410 4
> 1 40286 pwrite64:entry
> 1 40287 pwrite64:return 52625
> 1 39998 fdsync:entry 5068
> 1 39999 fdsync:return 13777558 4
> 1 39999 fdsync:return 7192502 4
> ...
> """
>
> The "pwrite64:return" shows the time spend in the "pwrite64" syscall.
> The "fdsync:entry" number shows the delay between the "pwrite64"
> finishing and the "fdsync" syscall. The "fdsync:return" shows time spend
> in the fdsync. We can see this syscall is very slow (comparatively), as
> expected.
>
> The issue is the last fragment: There is multiple "return" but only a
> single call. How can it be possible. What am I missing.
>
> The dtrace code:
>
> """
> [root at tesalia correo]# cat pwrite_y_fdsync.d
> self unsigned long long ts;
>
> syscall::pwrite64:entry
> /pid==$1/
> {
> printf(" ");
> self->ts=timestamp;
> }
>
> syscall::pwrite64:return
> /pid==$1 && self->ts/
> {
> printf("%llu",timestamp-self->ts);
> self->ts=timestamp;
> }
>
> syscall::fdsync:entry
> /pid==$1/
> {
> printf("%llu",timestamp-self->ts);
> self->ts=timestamp;
> }
>
> syscall::fdsync:return
> /pid==$1 && self->ts/
> {
> printf("%llu %d",timestamp-self->ts,tid);
> self->ts=0;
> }
> """
>
> Solaris 10 Update 3 here.
>
> Thanks in advance.
>
> - --
> Jesus Cea Avion _/_/ _/_/_/ _/_/_/
> jcea at argo.es http://www.argo.es/~jcea/ _/_/ _/_/ _/_/ _/_/ _/_/
> jabber / xmpp:jcea at jabber.org _/_/ _/_/ _/_/_/_/_/
> _/_/ _/_/ _/_/ _/_/ _/_/
> "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
> "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
> "El amor es poner tu felicidad en la felicidad de otro" - Leibniz
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iQCVAwUBRmWyZplgi5GaxT1NAQLGPQP7BnOR7N4AspdM36R/wZBMX+S4Fhu7+JEI
> PA8VZaQninPCMZjHwlVoYDcf2BVbeY/9L9CKOlLLsuQaE18G5Zu66p3MXlbVHLhF
> VOJ64nHU2MFCyV1v863ypBimBFENxHE9X8gFCt4h/fKIAex6cSTdYzwM5irIRvsV
> iTPyE+GDWyo=
> =NL28
> -----END PGP SIGNATURE-----
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss at opensolaris.org
--
Adam Leventhal, Solaris Kernel Development http://blogs.sun.com/ahl
More information about the dtrace-discuss
mailing list