Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jul 2015 12:38:43 -0700
From:      abhishek kulkarni <abhya007@gmail.com>
To:        Mark Johnston <markj@freebsd.org>
Cc:        Ryan Stone <rysto32@gmail.com>, Ryan Stone <rstone@freebsd.org>,  "freebsd-dtrace@freebsd.org" <freebsd-dtrace@freebsd.org>
Subject:   Re: Regarding schedgraph.d
Message-ID:  <CAJUVseupLX%2B8_ea58h4buES%2By9__YcROO14koz7RpL1jYgqmRg@mail.gmail.com>
In-Reply-To: <CAJUVseuHukeDRjWt27jm%2Bmkn1AqofQFqb5NgDZW9QJqmnUnxSQ@mail.gmail.com>
References:  <CAJUVsesOHQegeS=yfED8iKUoJK5KEVnLBqKH1MpSUuH_4i=_RQ@mail.gmail.com> <CAFMmRNwu8SoX-dJPb1wBh26UnXAnM5x7FZprDmXpVXbS7htkYQ@mail.gmail.com> <CAJUVseuHN-hLvLP6AQZdjwnQqpB24nSfm-dAWmn=j3y1EYiEMw@mail.gmail.com> <CAFMmRNy0AFBazEKR=QFY1h6htTre=Zi=dd==2c7Dkfc7BygZ%2BQ@mail.gmail.com> <20150705233202.GA70385@raichu> <CAJUVseuHukeDRjWt27jm%2Bmkn1AqofQFqb5NgDZW9QJqmnUnxSQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a1139cf22300872051a7667a9
Content-Type: text/plain; charset=UTF-8

Hello,

I got some very good inputs from you for writing a script that gives the
total running time for a particular thread as well as the total time that
the particular thread was off cpu. That script is working fine. Now, I want
to extend that script for a system wide performance. I need the "running
times" and the " off cpu times" for each thread. So, the script should
summarize the results at the end of the script for each thread. Is it
possible to achieve that using Dtrace and if yes, how. If no, would it need
a python like script to summarize the results threadwise. Please find the
attached script for a single thread.

Regards
Abhishek Kulkarni

On Sun, Jul 5, 2015 at 5:48 PM, abhishek kulkarni <abhya007@gmail.com>
wrote:

> Thanks mark. I will go through all the references mentioned. your answer
> gives a clear picture of how the sched provider differs for FreeBSD.
>
> Thanks and Regards
> Abhishek Kulkarni
>
> On Sun, Jul 5, 2015 at 4:32 PM, Mark Johnston <markj@freebsd.org> wrote:
>
>> On Thu, Jul 02, 2015 at 07:40:21PM -0400, Ryan Stone wrote:
>> > The best that I can offer right now is the Illumos documentation:
>> >
>> > http://dtrace.org/guide/chp-sched.html
>>
>> I wrote and committed some DTrace provider man pages a little while ago.
>> The page for the sched provider is here:
>>
>> https://www.freebsd.org/cgi/man.cgi?query=dtrace-sched&sektion=4&apropos=0&manpath=FreeBSD+11-current
>>
>> >
>> > The caveat is that the types documented there are not implemented in
>> > FreeBSD.  Where illumos uses a lwpsinfo_t, FreeBSD uses a struct thread:
>> >
>> >
>> https://svnweb.freebsd.org/base/head/sys/sys/proc.h?revision=284215&view=markup#l206
>> >
>> > psinfo_t is replaced by struct proc.
>> >
>> >
>> https://svnweb.freebsd.org/base/head/sys/sys/proc.h?revision=284215&view=markup#l495
>> >
>> > cpuinfo_t* arguments are not implemented and passed as NULL.  You can
>> > access the current cpu number using the "cpu" variable.
>> >
>> >
>> > Finally, the schedctl-* probes don't apply to the FreeBSD scheduler and
>> > therefore are unimplemented.
>>
>> I removed them in r281702: our sched provider uses FreeBSD types and
>> thus is already incompatible with the Solaris/illumos sched provider, so
>> it didn't make much sense to me to keep them around.
>>
>> >
>> >
>> > On Thu, Jul 2, 2015 at 12:30 PM, abhishek kulkarni <abhya007@gmail.com>
>> > wrote:
>> >
>> > > Thanks Ryan. Those are some very useful tips. Ill get on with trying
>> all
>> > > of those and get back If I have some more concerns. Also, could you be
>> > > having some document which has some logical description about the
>> "sched"
>> > > probes for FreeBSD, which could give details like when is the
>> particular
>> > > probe fired, the probe's arguments etc. Thanks again.
>> > >
>> > > Regards
>> > > Abhishek Kulkarni
>> > >
>> > > On Wed, Jul 1, 2015 at 1:51 PM, Ryan Stone <rysto32@gmail.com> wrote:
>> > >
>> > >> On Tue, Jun 30, 2015 at 7:11 PM, abhishek kulkarni <
>> abhya007@gmail.com>
>> > >> 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 <tid>
>> > >>
>> > >> 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 */
>> > >> }
>> > >>
>> > >>
>> > >
>> > _______________________________________________
>> > freebsd-dtrace@freebsd.org mailing list
>> > https://lists.freebsd.org/mailman/listinfo/freebsd-dtrace
>> > To unsubscribe, send any mail to "
>> freebsd-dtrace-unsubscribe@freebsd.org"
>>
>
>

--001a1139cf22300872051a7667a9
Content-Type: text/plain; charset=US-ASCII; name="modified_drace.txt"
Content-Disposition: attachment; filename="modified_drace.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ibwlkc8z0

I3ByYWdtYSBEIG9wdGlvbiBxdWlldA0KI3ByYWdtYSBEIG9wdGlvbiBidWZwb2xpY3k9cmluZw0K
DQpCRUdJTg0Kew0KIGZsYWc9MDsNCiB0aW1lc19vZmZjcHU9MDsNCiBjcHVzdGFydFtjcHVdID0g
MDsNCiB0aW1lc19vbmNwdT0wOw0KIGZsYWcxPTA7DQp9DQoNCnNjaGVkOjo6b2ZmLWNwdQ0KL2V4
ZWNuYW1lID09InBpbmciLw0KICAgICAgICB7DQogICAgICAgICAgICAgICBzZWxmLT50cyA9IHRp
bWVzdGFtcDsNCiAgICAgICAgICAgICAgIHNlbGYtPm5leHRfdGhyZWFkID0gYXJnc1swXS0+dGRf
dGlkOw0KICAgICAgICAgICAgICAgcHJpbnRmKCJ0YWtlbiBvZmYgdGhlIGNwdSxUaGUgbmV4dCB0
aHJlYWQgdG8gcnVuIGlzIDogJWRcbiIsIHNlbGYtPm5leHRfdGhyZWFkKTsNCiAgICAgICAgICAg
ICAgIGZsYWc9MjsNCiAgICAgICAgICAgfQ0KDQpzY2hlZDo6Om9uLWNwdQ0KL2V4ZWNuYW1lPT0i
cGluZyIgICYmIGZsYWcgPT0yLw0Kew0KICAgICAgICAvKnNlbGYtPmRlbHRhICs9ICh0aW1lc3Rh
bXAgLSBzZWxmLT50cykvMTAwMDsqLw0KICAgICAgICAgICAgICB0aW1lc19vbmNwdSs9KHRpbWVz
dGFtcC1zZWxmLT50cykvMTAwMDsNCiAgICAgICAgICAgICAvKiBwcmludGYoInRoZSB0aW1lIG9m
Zi1jcHUgd2FzIDogJWQgbWljcm8tc2Vjb25kc1xuIixzZWxmLT5kZWx0YSk7ICovDQogICAgICAg
ICAgICAgICAgZmxhZz0wOw0KICAgICAgICAgICB9DQoNCnNjaGVkOjo6ZW5xdWV1ZQ0KLyBleGVj
bmFtZSA9PSJwaW5nIi8NCnsNCiAgICAgICAgcHJpbnRmKCJhZGRlZCB0byB0aGUgcnVucSBhdCAl
WVxuIiwgdGltZXN0YW1wKTsNCn0NCg0Kc2NoZWQ6OjpkZXF1ZXVlDQovYXJnc1swXS0+dGRfbmFt
ZSA9PSJwaW5nIi8NCnsNCiAgICAgICAgcHJpbnRmKCJyZW1vdmVkIGZyb20gdGhlIHJ1bnEgYXQg
JVlcbiIsdGltZXN0YW1wKTsNCg0KfQ0Kc2NoZWQ6OjpvZmYtY3B1DQogL2NwdXN0YXJ0W2NwdV0g
JiYgZXhlY25hbWUgPT0icGluZyIgJiYgZmxhZzE9PTEvDQogew0KDQogICAgICAgIC8qIHNhdmUg
ZWxhcHNlZCAqLw0KICAgICAgICB0aW1lc19vbmNwdSArPSAodGltZXN0YW1wIC0gY3B1c3RhcnRb
Y3B1XSkvMTAwMDsNCiAgICAgICAgZmxhZzE9MDsNCg0KIH0NCg0KIC8qIFJlY29yZCB0aGUgc3Rh
cnQgdGltZSBvZiBhIHRocmVhZCAqLw0KIHNjaGVkOjo6b24tY3B1LA0KIHNjaGVkOjo6cmVtYWlu
LWNwdQ0KL2V4ZWNuYW1lID09ICJwaW5nIi8NCiB7DQoNCiAgICAgICBwcmludGYoInRocmVhZCBy
dW5uaW5nXG4iKTsNCiAgICAgICBjcHVzdGFydFtjcHVdID0gdGltZXN0YW1wOw0KICAgICAgIGZs
YWcxPTE7DQp9DQoNCg0KDQoNCg0KRU5EDQp7DQoNCiAgcHJpbnRmKCItLS0tLS0tWFhYLS0tLS0t
LS0tXG50aGUgdG90YWwgdGltZSBvZmYgY3B1IGlzIDogJWRcbiIsdGltZXNfb2ZmY3B1KTsNCiAg
cHJpbnRmKCJUaGUgdG90YWwgcnVubmluZyB0aW1lIGZvciB0aGUgdGhyZWFkIGlzIDolZFxuIix0
aW1lc19vbmNwdSk7DQp9DQoNCg==
--001a1139cf22300872051a7667a9--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJUVseupLX%2B8_ea58h4buES%2By9__YcROO14koz7RpL1jYgqmRg>