Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Sep 2014 19:59:47 -0500
From:      Bryan Venteicher <bryanv@daemoninthecloset.org>
To:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Change uma_mtx to rwlock
Message-ID:  <CAMo0n6Q=P5H3%2BCqr8KjFRVLvWHZfJYnROVe4xF3DmKw95D%2B5zQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--047d7bdc0854d973ec050415ab2b
Content-Type: text/plain; charset=UTF-8

Hi,

I'd appreciate some comments attached patch that changes the uma_mtx to a
rwlock.

At $JOB, we have machines with ~400GB RAM, with much of that being
allocated through UMA zones. We've observed that timeouts were sometimes
unexpectedly delayed by a half second or more. We tracked one of the
reasons for this down to when the page daemon was running, calling
uma_reclaim() -> zone_foreach(). zone_foreach() holds the uma_mtx while
zone_drain()'ing each zone. If uma_timeout() fires, it will block on the
uma_mtx when it tries to zone_timeout() each zone.

--047d7bdc0854d973ec050415ab2b
Content-Type: application/octet-stream; 
	name="0001-Make-the-UMA-lock-a-rwlock-instead-of-a-mutex.patch"
Content-Disposition: attachment; 
	filename="0001-Make-the-UMA-lock-a-rwlock-instead-of-a-mutex.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0lofryd0

RnJvbSA5NTYwYzMwODIyOWZlODhjOTAxMTRhZmIyMDdmZDJhOTZlZDYzMjRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCcnlhbiBWZW50ZWljaGVyIDxicnlhbnZAZGFlbW9uaW50aGVj
bG9zZXQub3JnPgpEYXRlOiBUdWUsIDEgSnVsIDIwMTQgMTY6MDQ6MjMgLTA1MDAKU3ViamVjdDog
W1BBVENIXSBNYWtlIHRoZSBVTUEgbG9jayBhIHJ3bG9jayBpbnN0ZWFkIG9mIGEgbXV0ZXgKClRo
ZSB6b25lX2ZvcmVhY2goKSBjYWxsIHRoYXQgaXMgZG9uZSBpbiB1bWFfdGltZW91dCgpIG1heSBi
bG9jayBvbiB0aGUKVU1BIG11dGV4IHdoaWxlIHRoZSBlYWNoIHpvbmUgaXMgZHJhaW5lZCBpbiB1
bWFfcmVjbGFpbSgpLiBUaGlzIG1heQpzdGFsbCB0aW1lb3V0cyBmb3IgYW4gdW5hY2NlcHRhYmxl
IGFtb3VudCBvZiB0aW1lIGlmIHRoZSBkcmFpbmluZyB0YWtlcwphIGxvbmcgdGltZS4KLS0tCiBz
eXMvdm0vdW1hX2NvcmUuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyMiBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zeXMvdm0vdW1hX2NvcmUuYyBiL3N5cy92bS91bWFfY29y
ZS5jCmluZGV4IDgxYjcxNGEuLjMwYmE5MGEgMTAwNjQ0Ci0tLSBhL3N5cy92bS91bWFfY29yZS5j
CisrKyBiL3N5cy92bS91bWFfY29yZS5jCkBAIC0xMzUsOCArMTM1LDggQEAgc3RhdGljIExJU1Rf
SEVBRCgsdW1hX2tlZykgdW1hX2tlZ3MgPSBMSVNUX0hFQURfSU5JVElBTElaRVIodW1hX2tlZ3Mp
Owogc3RhdGljIExJU1RfSEVBRCgsdW1hX3pvbmUpIHVtYV9jYWNoZXpvbmVzID0KICAgICBMSVNU
X0hFQURfSU5JVElBTElaRVIodW1hX2NhY2hlem9uZXMpOwogCi0vKiBUaGlzIG11dGV4IHByb3Rl
Y3RzIHRoZSBrZWcgbGlzdCAqLwotc3RhdGljIHN0cnVjdCBtdHhfcGFkYWxpZ24gdW1hX210eDsK
Ky8qIFRoaXMgUlcgbG9jayBwcm90ZWN0cyB0aGUga2VnIGxpc3QgKi8KK3N0YXRpYyBzdHJ1Y3Qg
cndsb2NrX3BhZGFsaWduIHVtYV9yd2xvY2s7CiAKIC8qIExpbmtlZCBsaXN0IG9mIGJvb3QgdGlt
ZSBwYWdlcyAqLwogc3RhdGljIExJU1RfSEVBRCgsdW1hX3NsYWIpIHVtYV9ib290X3BhZ2VzID0K
QEAgLTg4Niw2ICs4ODYsNyBAQCBmaW5pc2hlZDoKIHN0YXRpYyB2b2lkCiB6b25lX2RyYWluX3dh
aXQodW1hX3pvbmVfdCB6b25lLCBpbnQgd2FpdG9rKQogeworCWludCB3bG9jazsKIAogCS8qCiAJ
ICogU2V0IGRyYWluaW5nIHRvIGludGVybG9jayB3aXRoIHpvbmVfZHRvcigpIHNvIHdlIGNhbiBy
ZWxlYXNlIG91cgpAQCAtODk3LDE2ICs4OTgsMjAgQEAgem9uZV9kcmFpbl93YWl0KHVtYV96b25l
X3Qgem9uZSwgaW50IHdhaXRvaykKIAl3aGlsZSAoem9uZS0+dXpfZmxhZ3MgJiBVTUFfWkZMQUdf
RFJBSU5JTkcpIHsKIAkJaWYgKHdhaXRvayA9PSBNX05PV0FJVCkKIAkJCWdvdG8gb3V0OwotCQlt
dHhfdW5sb2NrKCZ1bWFfbXR4KTsKKwkJd2xvY2sgPSByd193b3duZWQoJnVtYV9yd2xvY2spOwor
CQlyd191bmxvY2soJnVtYV9yd2xvY2spOwogCQltc2xlZXAoem9uZSwgem9uZS0+dXpfbG9ja3B0
ciwgUFZNLCAiem9uZWRyYWluIiwgMSk7Ci0JCW10eF9sb2NrKCZ1bWFfbXR4KTsKKwkJaWYgKHds
b2NrICE9IDApCisJCQlyd193bG9jaygmdW1hX3J3bG9jayk7CisJCWVsc2UKKwkJCXJ3X3Jsb2Nr
KCZ1bWFfcndsb2NrKTsKIAl9CiAJem9uZS0+dXpfZmxhZ3MgfD0gVU1BX1pGTEFHX0RSQUlOSU5H
OwogCWJ1Y2tldF9jYWNoZV9kcmFpbih6b25lKTsKIAlaT05FX1VOTE9DSyh6b25lKTsKIAkvKgog
CSAqIFRoZSBEUkFJTklORyBmbGFnIHByb3RlY3RzIHVzIGZyb20gYmVpbmcgZnJlZWQgd2hpbGUK
LQkgKiB3ZSdyZSBydW5uaW5nLiAgTm9ybWFsbHkgdGhlIHVtYV9tdHggd291bGQgcHJvdGVjdCB1
cyBidXQgd2UKKwkgKiB3ZSdyZSBydW5uaW5nLiAgTm9ybWFsbHkgdGhlIHVtYV9yd2xvY2sgd291
bGQgcHJvdGVjdCB1cyBidXQgd2UKIAkgKiBtdXN0IGJlIGFibGUgdG8gcmVsZWFzZSBhbmQgYWNx
dWlyZSB0aGUgcmlnaHQgbG9jayBmb3IgZWFjaCBrZWcuCiAJICovCiAJem9uZV9mb3JlYWNoX2tl
Zyh6b25lLCAma2VnX2RyYWluKTsKQEAgLTE1NDIsOSArMTU0Nyw5IEBAIGtlZ19jdG9yKHZvaWQg
Km1lbSwgaW50IHNpemUsIHZvaWQgKnVkYXRhLCBpbnQgZmxhZ3MpCiAKIAlMSVNUX0lOU0VSVF9I
RUFEKCZrZWctPnVrX3pvbmVzLCB6b25lLCB1el9saW5rKTsKIAotCW10eF9sb2NrKCZ1bWFfbXR4
KTsKKwlyd193bG9jaygmdW1hX3J3bG9jayk7CiAJTElTVF9JTlNFUlRfSEVBRCgmdW1hX2tlZ3Ms
IGtlZywgdWtfbGluayk7Ci0JbXR4X3VubG9jaygmdW1hX210eCk7CisJcndfd3VubG9jaygmdW1h
X3J3bG9jayk7CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMTU5NCw5ICsxNTk5LDkgQEAgem9uZV9j
dG9yKHZvaWQgKm1lbSwgaW50IHNpemUsIHZvaWQgKnVkYXRhLCBpbnQgZmxhZ3MpCiAJCXpvbmUt
PnV6X3JlbGVhc2UgPSBhcmctPnJlbGVhc2U7CiAJCXpvbmUtPnV6X2FyZyA9IGFyZy0+YXJnOwog
CQl6b25lLT51el9sb2NrcHRyID0gJnpvbmUtPnV6X2xvY2s7Ci0JCW10eF9sb2NrKCZ1bWFfbXR4
KTsKKwkJcndfd2xvY2soJnVtYV9yd2xvY2spOwogCQlMSVNUX0lOU0VSVF9IRUFEKCZ1bWFfY2Fj
aGV6b25lcywgem9uZSwgdXpfbGluayk7Ci0JCW10eF91bmxvY2soJnVtYV9tdHgpOworCQlyd193
dW5sb2NrKCZ1bWFfcndsb2NrKTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC0xNjEzLDcgKzE2MTgs
NyBAQCB6b25lX2N0b3Iodm9pZCAqbWVtLCBpbnQgc2l6ZSwgdm9pZCAqdWRhdGEsIGludCBmbGFn
cykKIAkJem9uZS0+dXpfZmluaSA9IGFyZy0+ZmluaTsKIAkJem9uZS0+dXpfbG9ja3B0ciA9ICZr
ZWctPnVrX2xvY2s7CiAJCXpvbmUtPnV6X2ZsYWdzIHw9IFVNQV9aT05FX1NFQ09OREFSWTsKLQkJ
bXR4X2xvY2soJnVtYV9tdHgpOworCQlyd193bG9jaygmdW1hX3J3bG9jayk7CiAJCVpPTkVfTE9D
Syh6b25lKTsKIAkJTElTVF9GT1JFQUNIKHosICZrZWctPnVrX3pvbmVzLCB1el9saW5rKSB7CiAJ
CQlpZiAoTElTVF9ORVhUKHosIHV6X2xpbmspID09IE5VTEwpIHsKQEAgLTE2MjIsNyArMTYyNyw3
IEBAIHpvbmVfY3Rvcih2b2lkICptZW0sIGludCBzaXplLCB2b2lkICp1ZGF0YSwgaW50IGZsYWdz
KQogCQkJfQogCQl9CiAJCVpPTkVfVU5MT0NLKHpvbmUpOwotCQltdHhfdW5sb2NrKCZ1bWFfbXR4
KTsKKwkJcndfd3VubG9jaygmdW1hX3J3bG9jayk7CiAJfSBlbHNlIGlmIChrZWcgPT0gTlVMTCkg
ewogCQlpZiAoKGtlZyA9IHVtYV9rY3JlYXRlKHpvbmUsIGFyZy0+c2l6ZSwgYXJnLT51bWluaXQs
IGFyZy0+ZmluaSwKIAkJICAgIGFyZy0+YWxpZ24sIGFyZy0+ZmxhZ3MpKSA9PSBOVUxMKQpAQCAt
MTcyMCw5ICsxNzI1LDkgQEAgem9uZV9kdG9yKHZvaWQgKmFyZywgaW50IHNpemUsIHZvaWQgKnVk
YXRhKQogCWlmICghKHpvbmUtPnV6X2ZsYWdzICYgVU1BX1pGTEFHX0lOVEVSTkFMKSkKIAkJY2Fj
aGVfZHJhaW4oem9uZSk7CiAKLQltdHhfbG9jaygmdW1hX210eCk7CisJcndfd2xvY2soJnVtYV9y
d2xvY2spOwogCUxJU1RfUkVNT1ZFKHpvbmUsIHV6X2xpbmspOwotCW10eF91bmxvY2soJnVtYV9t
dHgpOworCXJ3X3d1bmxvY2soJnVtYV9yd2xvY2spOwogCS8qCiAJICogWFhYIHRoZXJlIGFyZSBz
b21lIHJhY2VzIGhlcmUgd2hlcmUKIAkgKiB0aGUgem9uZSBjYW4gYmUgZHJhaW5lZCBidXQgem9u
ZSBsb2NrCkBAIC0xNzQ0LDkgKzE3NDksOSBAQCB6b25lX2R0b3Iodm9pZCAqYXJnLCBpbnQgc2l6
ZSwgdm9pZCAqdWRhdGEpCiAJICogV2Ugb25seSBkZXN0cm95IGtlZ3MgZnJvbSBub24gc2Vjb25k
YXJ5IHpvbmVzLgogCSAqLwogCWlmIChrZWcgIT0gTlVMTCAmJiAoem9uZS0+dXpfZmxhZ3MgJiBV
TUFfWk9ORV9TRUNPTkRBUlkpID09IDApICB7Ci0JCW10eF9sb2NrKCZ1bWFfbXR4KTsKKwkJcndf
d2xvY2soJnVtYV9yd2xvY2spOwogCQlMSVNUX1JFTU9WRShrZWcsIHVrX2xpbmspOwotCQltdHhf
dW5sb2NrKCZ1bWFfbXR4KTsKKwkJcndfd3VubG9jaygmdW1hX3J3bG9jayk7CiAJCXpvbmVfZnJl
ZV9pdGVtKGtlZ3MsIGtlZywgTlVMTCwgU0tJUF9OT05FKTsKIAl9CiAJWk9ORV9MT0NLX0ZJTkko
em9uZSk7CkBAIC0xNzY4LDEyICsxNzczLDEyIEBAIHpvbmVfZm9yZWFjaCh2b2lkICgqemZ1bmMp
KHVtYV96b25lX3QpKQogCXVtYV9rZWdfdCBrZWc7CiAJdW1hX3pvbmVfdCB6b25lOwogCi0JbXR4
X2xvY2soJnVtYV9tdHgpOworCXJ3X3Jsb2NrKCZ1bWFfcndsb2NrKTsKIAlMSVNUX0ZPUkVBQ0go
a2VnLCAmdW1hX2tlZ3MsIHVrX2xpbmspIHsKIAkJTElTVF9GT1JFQUNIKHpvbmUsICZrZWctPnVr
X3pvbmVzLCB1el9saW5rKQogCQkJemZ1bmMoem9uZSk7CiAJfQotCW10eF91bmxvY2soJnVtYV9t
dHgpOworCXJ3X3J1bmxvY2soJnVtYV9yd2xvY2spOwogfQogCiAvKiBQdWJsaWMgZnVuY3Rpb25z
ICovCkBAIC0xNzg5LDcgKzE3OTQsNyBAQCB1bWFfc3RhcnR1cCh2b2lkICpib290bWVtLCBpbnQg
Ym9vdF9wYWdlcykKICNpZmRlZiBVTUFfREVCVUcKIAlwcmludGYoIkNyZWF0aW5nIHVtYSBrZWcg
aGVhZGVycyB6b25lIGFuZCBrZWcuXG4iKTsKICNlbmRpZgotCW10eF9pbml0KCZ1bWFfbXR4LCAi
VU1BIGxvY2siLCBOVUxMLCBNVFhfREVGKTsKKwlyd19pbml0KCZ1bWFfcndsb2NrLCAiVU1BIGxv
Y2siKTsKIAogCS8qICJtYW51YWxseSIgY3JlYXRlIHRoZSBpbml0aWFsIHpvbmUgKi8KIAltZW1z
ZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7CkBAIC0zMzY0LDEyICszMzY5LDEyIEBAIHN5c2N0
bF92bV96b25lX2NvdW50KFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJaW50IGNvdW50OwogCiAJY291
bnQgPSAwOwotCW10eF9sb2NrKCZ1bWFfbXR4KTsKKwlyd19ybG9jaygmdW1hX3J3bG9jayk7CiAJ
TElTVF9GT1JFQUNIKGt6LCAmdW1hX2tlZ3MsIHVrX2xpbmspIHsKIAkJTElTVF9GT1JFQUNIKHos
ICZrei0+dWtfem9uZXMsIHV6X2xpbmspCiAJCQljb3VudCsrOwogCX0KLQltdHhfdW5sb2NrKCZ1
bWFfbXR4KTsKKwlyd19ydW5sb2NrKCZ1bWFfcndsb2NrKTsKIAlyZXR1cm4gKHN5c2N0bF9oYW5k
bGVfaW50KG9pZHAsICZjb3VudCwgMCwgcmVxKSk7CiB9CiAKQEAgLTMzOTQsNyArMzM5OSw3IEBA
IHN5c2N0bF92bV96b25lX3N0YXRzKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiAJc2J1Zl9uZXdfZm9y
X3N5c2N0bCgmc2J1ZiwgTlVMTCwgMTI4LCByZXEpOwogCiAJY291bnQgPSAwOwotCW10eF9sb2Nr
KCZ1bWFfbXR4KTsKKwlyd19ybG9jaygmdW1hX3J3bG9jayk7CiAJTElTVF9GT1JFQUNIKGt6LCAm
dW1hX2tlZ3MsIHVrX2xpbmspIHsKIAkJTElTVF9GT1JFQUNIKHosICZrei0+dWtfem9uZXMsIHV6
X2xpbmspCiAJCQljb3VudCsrOwpAQCAtMzQ3MCw3ICszNDc1LDcgQEAgc2tpcDoKIAkJCVpPTkVf
VU5MT0NLKHopOwogCQl9CiAJfQotCW10eF91bmxvY2soJnVtYV9tdHgpOworCXJ3X3J1bmxvY2so
JnVtYV9yd2xvY2spOwogCWVycm9yID0gc2J1Zl9maW5pc2goJnNidWYpOwogCXNidWZfZGVsZXRl
KCZzYnVmKTsKIAlyZXR1cm4gKGVycm9yKTsKLS0gCjEuOC41LjQKCg==
--047d7bdc0854d973ec050415ab2b--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMo0n6Q=P5H3%2BCqr8KjFRVLvWHZfJYnROVe4xF3DmKw95D%2B5zQ>