svn commit: r279539 - head/sys/sys
John Baldwin
jhb at freebsd.org
Mon Mar 2 21:44:24 UTC 2015
On Monday, March 02, 2015 12:26:46 PM Davide Italiano wrote:
> On Mon, Mar 2, 2015 at 12:05 PM, John-Mark Gurney <jmg at freebsd.org> wrote:
> > Author: jmg
> > Date: Mon Mar 2 20:05:16 2015
> > New Revision: 279539
> > URL: https://svnweb.freebsd.org/changeset/base/279539
> >
> > Log:
> > give others fair warning that _SPARE2 isn't just cxgb, but used by large
> > number of other subsystems, so you probably don't want _SPARE2..
> >
> > ktr needs an overhaul to really only compile in the ones you want,
> > we've long passed the 31 bits it provides..
>
> If you really want to do the overhaul (which would be honestly great),
> I might consider revamping my work for per-cpu KTR buffer and include
> that in the change. Originally it was just an exercise, but then it
> evolved and I've been sitting with it in my local tree for a while. I
> never had the chutzpah to upstream it because it involves fundamental
> changes and breaks compatibility with the old ktrdump(1) format.
> A rather outdated (and maybe not completely functional) version of the
> patch can be found here:
> http://people.freebsd.org/~davide/locking/ktr_percpu.4.diff , which
> should give you an high level view of the change.
> I can update it to the last version and bring up for review, if
> somebody think it might be a sane idea avoiding synchronization on a
> single buffer for KTR.
The only issue with that is that often when I use KTR I want to see the "true"
order of operations between CPUs. I realize it is a tradeoff between the
extra synchrony in KTR "fixing" some races while you are debugging vs having
misleading traces that don't let you line up events to know what occurred
when.
For replacing the mask field, I've kicked around in my head a replacement for
ktr_mask that would use per-type integers, so you would have debug.ktr.proc
tunables and sysctls. There are some downsides to this though. In the past
I've used hacks where I would clear ktr_mask when certain events happen so
that I could reliably get a trace of events leading up to a specific event
that wasn't itself a crash. Having N different integers is not conducive to
that, though could perhaps have a global "ktr_enabled" to give that. What I
was stuck on before was getting the cpp macro glue nice so that one could
ideally use the existing CTRx() macros without having to redo all of them.
Was thinking of having something like 'KTR_DECLARE(KTR_PROC)' and
'KTR_DEFINE(KTR_PROC, "some description")', etc. You might end up with
ktr_type_## type variables and CTRx() would check those. However, that
doesn't support KTR_COMPILE at all (and I hadn't worked out a way to do that
cleanly, though we could also just punt and always compile in all traces). It
also doesn't easily support CTRx(KTR_FOO | KTR_BAR, ...) which does occur a
few places in the tree, though we could possibly just replace those with
duplicates.
--
John Baldwin
More information about the svn-src-head
mailing list