Date: Wed, 18 Mar 2015 13:57:58 -0700 From: Adrian Chadd <adrian@freebsd.org> To: "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>, FreeBSD Net <freebsd-net@freebsd.org> Subject: RFT: break out IPv4 fragment reassembly locking into per-bucket locks Message-ID: <CAJ-Vmom6eoJs2DWwnT%2B7aKVoBWY5oNoFAcGaksdOYqXHLUdnZA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, I've created a review for this: https://reviews.freebsd.org/D2095 It does a couple things: * The IPv4 reassembly locking is now per-bucket, rather than global * If space needs to be made, it's made /after/ the reassembly queue manipulation is done. This way it's done without the queue lock held, rather than trying to grab a lock for bucket X whilst doing work in bucket Y. This dramatically reduces the lock contention when doing IPv4 fragment reassembly. I'd prefer this to be done along RSS bucket lines so there's /no/ lock contention during RSS based IPv4 fragment reassembly, but this is a good first step and applies even if RSS isn't being done. I'd appreciate any testing/reviews people may have. Thanks, -adrian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmom6eoJs2DWwnT%2B7aKVoBWY5oNoFAcGaksdOYqXHLUdnZA>