Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp7114551ybi; Thu, 13 Jun 2019 09:48:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqzaNKNmCTquBb3BXe9YEFatBRmiYaZ8V6ffNZ3WsKep+M92bL2ytmuPKe5VgLxcLb1b5OdC X-Received: by 2002:a63:6a49:: with SMTP id f70mr31141040pgc.55.1560444494531; Thu, 13 Jun 2019 09:48:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560444494; cv=none; d=google.com; s=arc-20160816; b=GjyZ8hPSEkzFfqrODrpPnkRVHwXI+vqW7dHbFpPWGJgqIMAt472CPfD+9gYNbyIveg QGPrMoXyrG0ZEsVYUD7tF5h2ofgtWEwuP+wV92NbtndPD7yFOsZIcg30Yvhzj1ob5VE/ 6yDQQGaqYpfuwdHB22hLuDJMzcG15KwjCVz6cmeoz4EvN84VrE2v6q8qevK4ZDnDtDC2 nNTlqK9NsiPqbg7i9J00FKraQjYYLA1Isyy5EAiKsW5Su3UGW/t6W7PckR0uU47pdOJ4 hjwiOADQSd4OkJlF1PD0dqDdYe2mC7W5H9QtW76aOwMku/1dMhLRaf5FS6SWSHMUALTG fV2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=/7WDCBC5qFx+f/Kahslw5ORYJBb3fYU7g6V0PD2h25w=; b=MzddZvLwQS5JGTi1z88J5UVn0KuxAXwRL/1fqtQKJB7AIeyw8FA+TFA1cofEFPsklU eGVucj3KpG0UsV7nLFbEQxJy99ArtnuAHikPYpSkEk5xXzJ81paADBRbjVxDQDr1OvbS rPpEbIM5HR+Qy1cd5LbLegyYUFoyA+0EEbEzI9CHS0JSzoJLoxpLOzuRozLuhrTw1RHa sN1T/ZKly9/V2gikUIGY1+4DFBW82XisrUZboADXrLCQRcdbw9a/aiijGHl8uq30F/9B dkErb12StfU6QTYhvIBvQ02s8y+KsL4WqnXfSiIY6B1JR1yZWq9u0xeSyhMKTlj7MxWG 76aw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m6si168170pjl.60.2019.06.13.09.47.59; Thu, 13 Jun 2019 09:48:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404200AbfFMQrg (ORCPT + 99 others); Thu, 13 Jun 2019 12:47:36 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:36125 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730258AbfFME7X (ORCPT ); Thu, 13 Jun 2019 00:59:23 -0400 Received: by mail-pg1-f196.google.com with SMTP id f21so4182497pgi.3 for ; Wed, 12 Jun 2019 21:59:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=/7WDCBC5qFx+f/Kahslw5ORYJBb3fYU7g6V0PD2h25w=; b=PxBLnRk5p4aUxz2HgIYzFkfpvujRACsQ2Pn44xsmO+JF4PcoNuHlIyVqVXyiab8KIE GJevLUjPjYowyw2Nj7mSeBaEAD9NGiwlWkO8+RVQNOafWRR9DtPPr5etJX5eDsEozmgw nwVxj4KFWuyXPGYnT1Op+LdpwfKsAw7obanVXzPzPChLiAZ2MVSHHN8hAGAmC1K7WXZx GkxFPe42NQh4+NAn5oVZKgP6xN5v25Ozcdsyra6S4kohDW7Tc7lC7tr+JbD9B5yIFqwO yq+7L5UwBIi2WIGcJTc0qCHdVQxMRyAWOMHq4mZlcLfbNJWczee5oEP7VOlfkIj2fqtw 4hPw== X-Gm-Message-State: APjAAAXCH6HA1ck6nb0W1do8Aea/Xswbm8opmaFdg3D74SAGuTnGM/Do /jYNy24MGdWaefIWgFeneAo= X-Received: by 2002:a63:484d:: with SMTP id x13mr19594551pgk.448.1560401962810; Wed, 12 Jun 2019 21:59:22 -0700 (PDT) Received: from htb-2n-eng-dhcp405.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id o66sm1215327pfb.86.2019.06.12.21.59.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 12 Jun 2019 21:59:21 -0700 (PDT) From: Nadav Amit To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Nadav Amit , Borislav Petkov , Toshi Kani , Peter Zijlstra , Dave Hansen , Dan Williams , Bjorn Helgaas , Ingo Molnar Subject: [PATCH 0/3] resource: find_next_iomem_res() improvements Date: Wed, 12 Jun 2019 21:59:00 -0700 Message-Id: <20190613045903.4922-1-namit@vmware.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Running some microbenchmarks on dax keeps showing find_next_iomem_res() as a place in which significant amount of time is spent. It appears that in order to determine the cacheability that is required for the PTE, lookup_memtype() is called, and this one traverses the resources list in an inefficient manner. This patch-set tries to improve this situation. The first patch fixes what appears to be unsafe locking in find_next_iomem_res(). The second patch improves performance by searching the top level first, to find a matching range, before going down to the children. The third patch improves the performance by caching the top level resource of the last found resource in find_next_iomem_res(). Both of these optimizations are based on the ranges in the top level not overlapping each other. Running sysbench on dax (Haswell, pmem emulation, with write_cache disabled): sysbench fileio --file-total-size=3G --file-test-mode=rndwr \ --file-io-mode=mmap --threads=4 --file-fsync-mode=fdatasync run Provides the following results: events (avg/stddev) ------------------- 5.2-rc3: 1247669.0000/16075.39 +patches: 1293408.5000/7720.69 (+3.5%) Cc: Borislav Petkov Cc: Toshi Kani Cc: Peter Zijlstra Cc: Dave Hansen Cc: Dan Williams Cc: Bjorn Helgaas Cc: Ingo Molnar Nadav Amit (3): resource: Fix locking in find_next_iomem_res() resource: Avoid unnecessary lookups in find_next_iomem_res() resource: Introduce resource cache kernel/resource.c | 96 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 17 deletions(-) -- 2.20.1