Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2013 18:37:08 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, hackers@freebsd.org
Subject:   Re: b_freelist TAILQ/SLIST
Message-ID:  <51CDADA4.9090803@FreeBSD.org>
In-Reply-To: <CAJ-VmonKubEaU1RQ=D49SEj%2BmusP7d0vOVHy%2BiU_aXtc0Zowuw@mail.gmail.com>
References:  <51CCAE14.6040504@FreeBSD.org> <20130628065732.GL91021@kib.kiev.ua> <51CD4FEA.7030605@FreeBSD.org> <CAJ-VmonKubEaU1RQ=D49SEj%2BmusP7d0vOVHy%2BiU_aXtc0Zowuw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 28.06.2013 18:14, Adrian Chadd wrote:
> .. i'd rather you narrow down _why_ it's performing better before committing it.

If you have good guesses -- they are welcome. All those functions are so 
small, that it is hard to imagine how congestion may happen there at 
all. I have strong feeling that lock spinning there consumes 
incomparably much more CPU time then the locked region itself could consume.

> Otherwise it may just creep up again after someone does another change
> in an unrelated part of the kernel.

Big win or small, TAILQ is still heavier then STAILQ, while it is not 
needed there at all.

> You're using instructions-retired; how about using l1/l2 cache loads,
> stores, etc? There's a lot more CPU counters available.

I am using unhalted-cycles, that is more reasonable then 
instructions-retired. What's about other counters, there are indeed a 
lot of them, but it is not always easy to get something useful out of them.

> You have a very cool problem to solve. If I could reproduce it locally
> I'd give you a hand.

You'd need a lot of hardware and patches to reproduce it in full. But if 
you like to see this with your own eyes, I can give you an SSH access to 
my test machine.

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51CDADA4.9090803>