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>