Page MenuHomeFreeBSD

(umaperf 4/7) Use a separate lock for the zone and keg.
ClosedPublic

Authored by jeff on Dec 15 2019, 11:38 PM.
Tags
None
Referenced Files
F108514463: D22828.id65696.diff
Sat, Jan 25, 7:37 PM
F108511766: D22828.id66332.diff
Sat, Jan 25, 7:13 PM
Unknown Object (File)
Dec 12 2024, 7:17 PM
Unknown Object (File)
Nov 25 2024, 9:45 PM
Unknown Object (File)
Nov 2 2024, 6:30 AM
Unknown Object (File)
Oct 2 2024, 10:19 PM
Unknown Object (File)
Oct 2 2024, 12:14 PM
Unknown Object (File)
Sep 16 2024, 6:40 PM
Subscribers

Details

Summary

This is part of a series of patches intended to enable first-touch numa policies for UMA by default. It also reduces the cost of uma_zalloc/zfree by approximately 30% each in my tests.

Zone lock protected a few random things that did not provide any real protection so I eliminated them. Now zone lock effectively synchronizes the bucket lists and counts. So it is used in the cache_alloc()/cache_free() path but not below. These holds are all very short. If this lock is still shown to be contending we could further break the zone lock up by domain with a little effort in the bucket accounting.

This helps with crossdomain free because you may have to drain buckets back to the keg layer. This process will now not hold-up the normal allocation/free path. The introduction of uz_import/uz_release also broke any strong relationship between these two layers.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 28168
Build 26300: arc lint + arc unit