From owner-freebsd-hackers@FreeBSD.ORG Sun Sep 28 01:07:43 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 26239990 for ; Sun, 28 Sep 2014 01:07:43 +0000 (UTC) Received: from mail-ig0-f181.google.com (mail-ig0-f181.google.com [209.85.213.181]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E691EA21 for ; Sun, 28 Sep 2014 01:07:42 +0000 (UTC) Received: by mail-ig0-f181.google.com with SMTP id h18so1516243igc.8 for ; Sat, 27 Sep 2014 18:07:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-type; bh=dw+uLjsl8zv5Dm0fuABFKZlhGvwtipCVFUDSHnlH00I=; b=abx5fhT8MSMWooPZTQAYG/FeDIahOvFGkWdSL1RmNOzhchL4wZTC7lR+SuEXxyMy5I /iPGm0qtlvkp5CpkK9iQAa1xxwQiQ2cC4w9QZXd3tHMp7rMnDPumFhSfLBi7FqTCwdJu 8xOI09fhwK3KhLYDV1nzm6wI/TeG/4BTDOnX3uJcm7x6u5K8HLvnuzIbybxTPukbS1mP ddjgLPyrcSWz7bTa/RLAKju1dU7NLDy9IIZDi774GIt94fCLSV8Pilcu0jcWKsp8pl2t XXXs49uTpJLPmluHjziB74Yo76ncq3ffEtIq3o2fcXqwExPtAXYSZ/8ZvFe0CbliImD1 4dtg== X-Gm-Message-State: ALoCoQmQLvHjmz5E+HbBv9unznq58BbPFknus8WOzAb/ls8FxyMbUmU8emARJNy/wjnpFYzqzC0g X-Received: by 10.50.62.50 with SMTP id v18mr24503647igr.21.1411866007491; Sat, 27 Sep 2014 18:00:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.9.67 with HTTP; Sat, 27 Sep 2014 17:59:47 -0700 (PDT) X-Originating-IP: [67.198.113.68] From: Bryan Venteicher Date: Sat, 27 Sep 2014 19:59:47 -0500 Message-ID: Subject: Change uma_mtx to rwlock To: "freebsd-hackers@freebsd.org" Content-Type: multipart/mixed; boundary=047d7bdc0854d973ec050415ab2b X-Content-Filtered-By: Mailman/MimeDel 2.1.18-1 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2014 01:07:43 -0000 --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--