public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
From: "Frank Ch. Eigler" <fche@redhat.com>
To: Theodore Tso <tytso@mit.edu>
Cc: Roland McGrath <roland@redhat.com>,
	        ksummit-2008-discuss@lists.linux-foundation.org,
	        systemtap@sources.redhat.com
Subject: Re: [Ksummit-2008-discuss] DTrace
Date: Wed, 02 Jul 2008 19:27:00 -0000	[thread overview]
Message-ID: <20080702192519.GA31206@redhat.com> (raw)
In-Reply-To: <20080701231327.GA5829@mit.edu>

Hi -


On Tue, Jul 01, 2008 at 07:13:27PM -0400, Theodore Tso wrote:

> [...]  And one of the major flaws of the Linux's RAS tools is that
> the LKML development community doesn't use them; and to the extent
> that tapsets would be written more quickly if they are easy for
> kernel developers who aren't depending on distro packaging and
> distro building of systemtap.  [...]

Please excuse my return to this point, but it meshes with something
else:

> probe kernel.function ("vfs_write"),
>       kernel.function ("vfs_read")
> {
>   dev_nr = $file->f_dentry->d_inode->i_sb->s_dev
>   inode_nr = $file->f_dentry->d_inode->i_ino
> 
>   if (dev_nr == ($1 << 20 | $2) # major/minor device
>       && inode_nr == $3)
>     printf ("%s(%d) %s 0x%x/%u\n",
>       execname(), pid(), probefunc(), dev_nr, inode_nr)
> }

So, one way a kernel developer could help write a tapset piece for us
is to encapsulate this into a tapset script fragment:

probe vfs.read = kernel.function ("vfs_read")
  {
    dev_nr = $...expression
    inode_nr = $...expression
  }

Then this definition would be shipped with the kernel or systemtap,
tested in one or the other build system for currency.  (Not by
coincidence, something much like that is already in our tapset, just
lacks those two values.)

Then the end user just does

   probe vfs.read { if (dev_nr != MKDEV(2,3)) printf ("whatever you want to print") }


****  or  ****


Kernel maintainers could add a marker or two right into their C code:

vfs_read() 
{
    /* ... */
    trace_mark (vfs_read, "dev %u inode %u whatever %s",
                          expression1, expression2, whatever);
    /* ... */
}

And that's it.  It's compiled-in, and checked as a part of your
routine builds.  Then the systemtap-side interpration code is trivial,
and anyone can write it.  And it doesn't require debugging data.

   probe vfs.read = kernel.mark("vfs_read") { dev_nr = $arg1; inode_nr = $arg2 }
   probe vfs.read = kernel.mark("vfs_read") { dev_nr = $arg1; inode_nr = $arg2 }


If people could get over the funny look of the markers (since
performance effects have been shown to be negligible), they could make
a significant contribution to this problem, with just a few lines of C
code.


- FChE

  parent reply	other threads:[~2008-07-02 19:27 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-30 13:57 DTrace Frank Ch. Eigler
2008-06-30 19:00 ` [Ksummit-2008-discuss] DTrace Grant Grundler
2008-06-30 19:40 ` Theodore Tso
2008-06-30 20:00   ` Frank Ch. Eigler
2008-06-30 20:19     ` Theodore Tso
2008-06-30 21:12       ` Arnaldo Carvalho de Melo
2008-06-30 23:02         ` David Miller
2008-06-30 21:13       ` James Bottomley
2008-06-30 22:10       ` Frank Ch. Eigler
2008-07-01  2:42         ` Theodore Tso
2008-07-01  7:08           ` Roland McGrath
2008-07-01 10:15             ` Theodore Tso
2008-07-01 11:04               ` Sam Ravnborg
2008-07-01 12:13                 ` Theodore Tso
2008-07-02 20:27                   ` Sam Ravnborg
2008-07-01 20:06               ` Roland McGrath
2008-07-01 23:13                 ` Theodore Tso
2008-07-02  2:23                   ` Frank Ch. Eigler
2008-07-02 19:27                   ` Frank Ch. Eigler [this message]
2008-07-02 21:40                     ` Potential Systemtap topics for the Kernel Summit Theodore Tso
2008-07-02 21:51                       ` [Ksummit-2008-discuss] " Jonathan Corbet
2008-07-02 23:41                         ` Arnaldo Carvalho de Melo
2008-07-02 22:38                       ` Masami Hiramatsu
2008-07-02 22:54                       ` [Ksummit-2008-discuss] " Stephen Hemminger
2008-07-03  0:44                         ` Ulrich Drepper
2008-07-03  1:02                           ` H. Peter Anvin
2008-07-03  1:50                             ` Theodore Tso
2008-07-03  1:51                             ` Ulrich Drepper
2008-07-02 20:08                   ` [Ksummit-2008-discuss] DTrace Joel Becker
2008-07-02 20:17                     ` J. Bruce Fields
2008-07-02 20:41                       ` Frank Ch. Eigler
2008-07-02 21:19                       ` H. Peter Anvin
2008-07-02 21:30                       ` Theodore Tso
2008-07-02 21:46                         ` J. Bruce Fields
2008-07-05  9:46                   ` Peter Zijlstra
2008-07-05 10:07                     ` Christoph Hellwig
2008-07-05 12:12                       ` Frank Ch. Eigler
2008-07-05 18:08                         ` Christoph Hellwig
2008-07-05 13:50                       ` James Bottomley
2008-07-05 18:08                         ` Christoph Hellwig
2008-07-05 18:05                       ` K.Prasad
2008-07-07 14:36                         ` Christoph Hellwig
2008-07-07 17:44                           ` K.Prasad
2008-07-05 12:34                     ` Theodore Tso
2008-07-01  5:29   ` Ananth N Mavinakayanahalli
2008-06-30 19:59 ` James Bottomley
2008-06-30 23:52   ` Masami Hiramatsu
2008-07-08 23:32   ` Eric W. Biederman
     [not found] <20080627150424.GB14894@parisc-linux.org>
     [not found] ` <1214580213.3394.40.camel@localhost.localdomain>
     [not found]   ` <20080627155018.GC14894@parisc-linux.org>
     [not found]     ` <1214583502.7698.15.camel@weaponx>
     [not found]       ` <20080627163056.GB1416@lst.de>
     [not found]         ` <20080628072605.GA505@in.ibm.com>
     [not found]           ` <20080629084002.GA24131@lst.de>
     [not found]             ` <20080630051034.GA4970@in.ibm.com>
     [not found]               ` <20080630112913.GA18817@lst.de>
2008-06-30 19:27                 ` Frank Ch. Eigler
2008-07-01  1:21                   ` Jim Keniston
     [not found]                   ` <20080706123414.GA9265@lst.de>
2008-07-06 15:47                     ` Frank Ch. Eigler
2008-07-06 16:36                       ` Evgeniy Polyakov
2008-07-06 18:05                         ` Frank Ch. Eigler
2008-07-06 18:24                           ` Evgeniy Polyakov
2008-07-06 21:46                             ` Frank Ch. Eigler
2008-07-06 22:47                               ` Karen Shaeffer
2008-07-06 23:15                                 ` Frank Ch. Eigler
2008-07-07  5:59                               ` Evgeniy Polyakov
2008-07-07 11:19                                 ` Frank Ch. Eigler
     [not found]   ` <20080627182754.GB7549@mit.edu>
     [not found]     ` <1214597135.3394.82.camel@localhost.localdomain>
     [not found]       ` <aday74qlh08.fsf@cisco.com>
     [not found]         ` <4865B111.2040307@redhat.com>
     [not found]           ` <adavdzujh2u.fsf@cisco.com>
     [not found]             ` <20080704200055.GA11232@synapse.neuralscape.com>
     [not found]               ` <20080704224424.GA12454@synapse.neuralscape.com>
     [not found]                 ` <1215273663.3439.34.camel@localhost.localdomain>
2008-07-06 23:33                   ` Frank Ch. Eigler
2008-07-07 14:35                     ` James Bottomley
2008-07-07 15:02                     ` James Bottomley

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=20080702192519.GA31206@redhat.com \
    --to=fche@redhat.com \
    --cc=ksummit-2008-discuss@lists.linux-foundation.org \
    --cc=roland@redhat.com \
    --cc=systemtap@sources.redhat.com \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).