From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10937 invoked by alias); 11 May 2009 15:44:54 -0000 Received: (qmail 10728 invoked by uid 22791); 11 May 2009 15:44:52 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_54,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 May 2009 15:44:45 +0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n4BFiJKB003768 for ; Mon, 11 May 2009 11:44:40 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n4BFEfd5014514 for ; Mon, 11 May 2009 11:14:46 -0400 Received: from [10.16.10.94] (vpn-10-94.bos.redhat.com [10.16.10.94]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n4BEcdR5020830; Mon, 11 May 2009 10:38:40 -0400 Message-ID: <4A0838E6.2000309@redhat.com> Date: Mon, 11 May 2009 15:44:00 -0000 From: Masami Hiramatsu User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Ingo Molnar CC: Steven Rostedt , lkml , Avi Kivity , "H. Peter Anvin" , Frederic Weisbecker , Ananth N Mavinakayanahalli , Andrew Morton , Andi Kleen , Jim Keniston , "K.Prasad" , KOSAKI Motohiro , systemtap , kvm , Tom Zanussi Subject: Re: [PATCH -tip v5 0/7] tracing: kprobe-based event tracer and x86 instruction decoder References: <20090509004829.5505.38720.stgit@localhost.localdomain> <20090509044302.GH8007@elte.hu> In-Reply-To: <20090509044302.GH8007@elte.hu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2009-q2/txt/msg00548.txt.bz2 Ingo Molnar wrote: > * Masami Hiramatsu wrote: > >> Hi, >> >> Here are the patches of kprobe-based event tracer for x86, version >> 5, which allows you to probe various kernel events through ftrace >> interface. >> >> This version supports only x86(-32/-64) (but porting it on other >> arch just needs kprobes/kretprobes and register and stack access >> APIs). >> >> This patchset also includes x86(-64) instruction decoder which >> supports non-SSE/FP opcodes and includes x86 opcode map. I think >> it will be possible to share this opcode map with KVM's decoder. >> >> This series can be applied on the latest linux-2.6-tip tree. >> >> This patchset includes following changes: >> - Add x86 instruction decoder [1/7] >> - Check insertion point safety in kprobe [2/7] >> - Cleanup fix_riprel() with insn decoder [3/7] >> - Add kprobe-tracer plugin [4/7] >> - Fix kernel_trap_sp() on x86 according to systemtap runtime. [5/7] >> - Add arch-dep register and stack fetching functions [6/7] >> - Support fetching various status (register/stack/memory/etc.) [7/7] >> >> Future items: >> - .init function tracing support. >> - Support primitive types(long, ulong, int, uint, etc) for args. > > Ok, this looks pretty complete already. > > Two high-level comments: > > - There's no self-test - would it be possible to add one? See > trace_selftest* in kernel/trace/ I'm not so sure. Currently, it seems that those self-tests are only for tracers which define new event-entry on ring-buffer. Since this tracer just use ftrace_bprintk, it might need another kind of selftest. e.g. comparing outputs with expected patterns. In that case, would it be better to make a user-space self test including filters and tracepoints? > - No generic integration. Right, this just rides on the ftrace's printk :-) > > It would be nice if these ops: > >> E.g. >> echo p do_sys_open a0 a1 a2 a3 > /debug/tracing/kprobe_events >> >> This sets a kprobe on the top of do_sys_open() function with recording >> 1st to 4th arguments. >> >> echo r do_sys_open rv rp >> /debug/tracing/kprobe_events > > were just generally available in just about any other tracer - a bit > like the event tracer. > > It would also be nice to use the 'function attributes' facilities of > the function tracer, combined with a new special syntax of the > function-filter regex parser, to enable the recovery of return > values (or the call arguments), for selected set of functions. > > For example, today we can already do things like: > > echo 'sys_read:traceon:4' > /debug/tracing/set_ftrace_filter > > for 'trace triggers': the above will trigger tracing to be enabled > on the entry of sys_read(), 4 times. > > Likewise, something like: > > echo 'sys_read:args' > /debug/tracing/set_ftrace_filter > echo 'sys_read:return' > /debug/tracing/set_ftrace_filter > > Could activate kprobes based argument and return-value tracing. Ah, that's a good idea. And also, I have another idea for using filters with kprobes, which is adding new kprobe-entry as a new trace-event when user defines a new probe via kprobe_events. Thus, user can use it as a dynamic-defined tracepoint. Thank you, -- Masami Hiramatsu Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division e-mail: mhiramat@redhat.com