tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Blocking vcache_tryvget() across VOP_INACTIVE() - unneeded



On Tue, Jan 21, 2020 at 11:12:06PM +0100, Mateusz Guzik wrote:
> 
> This does not happen with rb trees and would not happen with the hash
> table if there was bucket locking instead of per-cpu.
> 
> I would stick to hash tables since they are easier to scale (both with
> and without locks).
> 
> For instance if 2 threads look up "/bin" and "/usr" and there is no
> hash collision, they lock *separate* buckets and suffer less in terms
> of cacheline bouncing. In comparison with rb trees they will take the
> same lock. Of course this similarly does not scale if they are looking
> up the same path.

I think there's probably a generic bucket-locked hashtable implementation
in one of the code contributions Coyote Point made long ago.  That said,
we're talking about a screenful of code, so it's not like it'd be hard to
rewrite, either.  Do we want such a thing?  Or do we want to press on
towards more modern "that didn't work, try again" approaches like
pserialize or the COW scheme you describe?

-- 
 Thor Lancelot Simon	                                     tls%panix.com@localhost
  "Whether or not there's hope for change is not the question.  If you
   want to be a free person, you don't stand up for human rights because
   it will work, but because it is right."	--Andrei Sakharov


Home | Main Index | Thread Index | Old Index