From owner-freebsd-dtrace@freebsd.org Wed Jul 1 20:51:04 2015 Return-Path: Delivered-To: freebsd-dtrace@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05863992968 for ; Wed, 1 Jul 2015 20:51:04 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: from mail-ie0-x22f.google.com (mail-ie0-x22f.google.com [IPv6:2607:f8b0:4001:c03::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BEBA41202; Wed, 1 Jul 2015 20:51:03 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: by iecvh10 with SMTP id vh10so43311158iec.3; Wed, 01 Jul 2015 13:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Sdo1+OApsXttlWPqxpbfqwSdSpVyoSL6fFCn24apV0o=; b=pE6ogY5VrfGXX6idrM5uzNlqrOhGqhsA8S3Ll10s9VMHOnI60kwsKqxtWmjC1Ir6pe fYfPm/BGYUC7jUiLB1wN7KLDf6TCBrbyKBhNsjDAIxauPh8s6dd9lEFJoNu/mHwRaee7 QfYXdj0cwEREYE6GVSaAZyB8eUIik8w5lkiipJ/tOp7AkYsIfmT0ToExrJ1uE3K/jFzz 9zDaVD8ujXI7PeC30VNJEePld28SE8WRqCH14dmrPAbMw/9fpPpnK94+y9p09yZ2QPGH puqJbaBg/wFgU9z0MTXOMrzUOtljz7QKk692fx6tENNOgYjuoLEUABrAXJx2ToBfAyJJ F/Og== MIME-Version: 1.0 X-Received: by 10.42.207.129 with SMTP id fy1mr7256996icb.34.1435783863023; Wed, 01 Jul 2015 13:51:03 -0700 (PDT) Received: by 10.107.145.68 with HTTP; Wed, 1 Jul 2015 13:51:02 -0700 (PDT) In-Reply-To: References: Date: Wed, 1 Jul 2015 16:51:02 -0400 Message-ID: Subject: Re: Regarding schedgraph.d From: Ryan Stone To: abhishek kulkarni Cc: Ryan Stone , "freebsd-dtrace@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-dtrace@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "A discussion list for developers working on DTrace in FreeBSD." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jul 2015 20:51:04 -0000 On Tue, Jun 30, 2015 at 7:11 PM, abhishek kulkarni wrote: > Hello Ryan, > > I was looking to schedgraph.d . I need to modify the script for a single, > particular thread. I atleast need to know the thread transitions, as in the > context switches for the particular thread and also the different states > for a single thread. Could you please help with the filters that I need to > add in order to use the script for a single thread or else suggest me just > the nexessary probes that I could use for writing a new script for a single > thread . > > Regards > Abhishek Kulkarni > There are a couple of things that you could filter on, depending on what you know about the thread of interest. The "execname" variable gives the name of the current process. If you're interesting in tracing a single-threaded process, that would be an option. Another variable of interest would be the "curthread" variable. This gives a pointer to the "struct thread" for the current thread. One field that you could trace on would be curthread->td_tid. You can use ps to find your thread id and then run the script as: dtrace -s script.d And in the script, filter with / curthread->td_tid == $1 /. Another field that you could use would be curthread->td_name, which contains the name of the current thread. If your application names threads with "pthreads_set_name_np()", then that name will appear in td_name and you can filter based off of that. An alternative approach would be to use a thread-local variable. If you know that your thread is the only thread that might hit a probe, you can set a thread local variable in that probe and filter on it later on. For example, if your thread is the only thread that will call a function called foobar() in the kernel, you could do this: fbt::foobar:entry { self->interesting = 1; } sched:::off-cpu / self->interesting / { /* trace interesting data here */ }