From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC117C4167B for ; Sun, 26 Nov 2023 13:47:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC3096B0373; Sun, 26 Nov 2023 08:47:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B4D356B0374; Sun, 26 Nov 2023 08:47:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9ECB26B038C; Sun, 26 Nov 2023 08:47:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8B2A66B0373 for ; Sun, 26 Nov 2023 08:47:40 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5F48CB5541 for ; Sun, 26 Nov 2023 13:47:40 +0000 (UTC) X-FDA: 81500233080.07.AB65B53 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf15.hostedemail.com (Postfix) with ESMTP id 20990A0009 for ; Sun, 26 Nov 2023 13:47:36 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=lw5y9c1r; spf=none (imf15.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701006458; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9VJ0rA3r7NTPoB0XFwR/Lf+pF2vP6kSME4kg3g2wpTc=; b=c2P761pVXQE6P5rsrnznRa+njsfwX3DGWGQpN7Ujc93xA7mpLkm+q4KxXQEYWcvpKRIlpv g5fY+/tg0/l7T0CPTcmLgJATn9YbRfilc/C9C5NRMvspKFkLN/y9v9RTrkkbcEpoB1nOmT /PD3vmGpUojzktgpXNiw2d6f3pouMos= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=lw5y9c1r; spf=none (imf15.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701006458; a=rsa-sha256; cv=none; b=V9YaIavhHmhmm2rRmjbaKbckJiZFspF8KMp7YZxPK3j9xFDf2pmWayWbt5RuESTM++c+Q3 10nrHalVQfb8YyO+rwejFowswCjDm65gwIHXFR7m3GkrBi5JDJFpyU1y6Pgz/k1bkEB11/ ldpv6xgakgX/HZJt1PM9MiTw0X8nQ/s= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=9VJ0rA3r7NTPoB0XFwR/Lf+pF2vP6kSME4kg3g2wpTc=; b=lw5y9c1ry4n30Bn0J1WuMtPLdN 11Ow8mx7FVsIXslY6+Nje0sBgLNOFldGpOB6Z9G5TRknB/CtaLXS1LU1r7manFVX+4vCPi8NNhSaX JDWN8mtj+9HUMAlxf26MaBxJdfEVQKSjF4D8qiVXs8Z8QyDXLl4zPxqJ/26h9+I0UCGS7pz45jWqZ Kh7ZjCJL1o9lv7J3cUd59b+AXTSjccl/RnpdTcdLcTm325dohDfiXQk/xOiEIKi2PsgQoTkxXK4+W 4d//hEHj7WkAGJp4LsWkaw/2P+tJjyMhUFZtdd26GBeivCCd7d6vDpGoQAogwLAHhs/KdAiwApk3M iUj1iTYw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1r7FTi-00AYix-IB; Sun, 26 Nov 2023 13:47:18 +0000 Date: Sun, 26 Nov 2023 13:47:18 +0000 From: Matthew Wilcox To: David Wang <00107082@163.com> Cc: liam.howlett@oracle.com, akpm@linux-foundation.org, ankitag@nvidia.com, bagasdotme@gmail.com, chunn@nvidia.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, regressions@lists.linux.dev, surenb@google.com Subject: Re: [REGRESSION]: mmap performance regression starting with k-6.1 Message-ID: References: <20231123143452.erzar3sqhg37hjxz@revolver> <20231126071854.19490-1-00107082@163.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231126071854.19490-1-00107082@163.com> X-Rspamd-Queue-Id: 20990A0009 X-Rspam-User: X-Stat-Signature: xt6yakdk66884a6fnd3pttdbtnb3kp5c X-Rspamd-Server: rspam01 X-HE-Tag: 1701006456-94021 X-HE-Meta: U2FsdGVkX1+3A8kwLIt3l979yI34UISpQlc+GKvVTSpFyLUDvEF+awJkhKZvkQfw0pCReumnRRg3dSF7ynfe+GtL9K7/XfvY2Pr7bdoak/cR/raBSuBySsJdMWdmEMfhFKQM4PWLKRdDvCdjY59jMebraMMPd+sOpvZVWkKMKCrywF5QhapqBFqtnE+GKCPzxFX7i4FV1LR0BnAXV429vnug7nN0IQiiD2mjHjjpQczY2vEAOn9JWYEUPwsLKlZ9dLHBfErdHKlyHaYB1z5Jz1CW/9usXTJZ82v3Jtzk6viG2Gszcl8qumjMqV0ibGHF3D6RGYEJWhxqZUbrNYTuUMPJ23uPYKnOj/l5VNAGcroazKApm3DYE5bysKnW6Wiy9rW7zZInvfqyhy18zJt6Tlqbr4kwYs3C0rkUHUG0F6WntcNACTCS1L3gCoqEluu4n28cjrrWBMVnVbIdsvktmbmMFIc6lhsv8qfxZqmgYXEJMI9gxCBb5kHs2DWPuKQFnZife+zHlVGCk53tsoHgOyZqOaxEQdy02/LajEKklpc1HK54Vk1GoaGQ3dD5Z5sa8y1PfHRxSpy6I1uxDZei1YxQ8TbBpAhZuwoefav81bT6sDSqeIOiwYmkj0+GbuCOFV0GCTC02AI+4fEuBcBwyGD6OKh0angOD53NpxVIhKRopNEJ70IdhrbKuSKbfpyaRg3dXgCLIawg5+3J316ymNYg9c4c44uKqsQUS61vCfB0ORkv34Ui1DVxi084YqKokcqKZVaxHAiC9aogv5gxRNIOZ3QMJ6xpxs7XifGcJybXjLt0a+dhOKTMk0UShO2S7ONj6FdUeiMxR6reBpzwxzZ4y7CTF1sJ8bHGzxmK4cRGPE8mjdrTbTCcnJrhNOAWYYRxcu1ATWibWKpX5JRjBWqToUWr6xZ40/7akeyNh/NFQ8hVRtL8rjyLlWgRdPPkORFDcd7pOWLS3qNUJYp ETCS2qR3 RVAkOEMZ7dXDY0DSyzDHlAgxleMesRtRcTq7ZJPpMRVbqEGgHS8vTz4mDHs7bANjdGqFSaQjGMFND0OPd/ad0O5TK+6XrgtsNDKwZCExQMBFTZHGsnhdVy8/RNsFmtrEWucbRpMmvjOxXqXU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sun, Nov 26, 2023 at 03:18:54PM +0800, David Wang wrote: > I add memory access between mmap and munmap to the simple stress, and timeit. It's still not a very good benchmark ... > My test code now is: > > #define MAXN 1024 > struct { void* addr; size_t n; } maps[MAXN]; > void accessit(char *addr, size_t n) { > for (int i=0; i } > int main() { > int i, n, k, r; > void *p; > for (i=0; i n = 1024*((rand()%32)+1); > p = mmap(NULL, n, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); So 'n' is now a number between 1kB and 32kB. That's not terribly realistic; I'd say you want to be more like n = 4096 * ((rand() % 512) + 1)); > for (i=0; i<10000000; i++) { > k = rand()%MAXN; > #ifdef PAGE_FAULT > accessit((char*)maps[k].addr, maps[k].n); > #endif > r = munmap(maps[k].addr, maps[k].n); > if (r) { > perror("fail to munmap"); > return -1; > } > n = 1024*((rand()%32)+1); > p = mmap(NULL, n, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); Are you simulating something a real application actually does? Because this all seems very weird and micro-benchmark to me. The real applications we've benchmarked see a speedup so I'm not thrilled about chasing down something that no real application does. In terms of what's going on in the kernel, for each loop, you're calling munmap(), taking between 1 and 8 page faults, then calling mmap(). That may just be too few page faults to see the benefit of the maple tree.