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 6F0AFC3DA63 for ; Wed, 24 Jul 2024 08:14:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C525E6B0082; Wed, 24 Jul 2024 04:14:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C017B6B0083; Wed, 24 Jul 2024 04:14:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC85F6B0085; Wed, 24 Jul 2024 04:14:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 8E0B06B0082 for ; Wed, 24 Jul 2024 04:14:18 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id F1D90140772 for ; Wed, 24 Jul 2024 08:14:17 +0000 (UTC) X-FDA: 82373933754.18.14914CB Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by imf10.hostedemail.com (Postfix) with ESMTP id ABC3DC0007 for ; Wed, 24 Jul 2024 08:14:15 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=cy8sH1V1; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf10.hostedemail.com: domain of jgross@suse.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=jgross@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721808817; a=rsa-sha256; cv=none; b=CjZVSp7YakWuXn5NyAEPQ2rEnHCktg/zX2ZDiVHlfUfqY1tS5EtbQWT1eOPLooi2Ta8/sE 9781bYepBiLgC3w1d8ExLH/t9Avtr06arzN/pU9Hv7lwxvWQh3Bev7PzkyX1t9kdmEIt6M zdlRp5POMCQ3O2uNsjbEQMdua1nyAZk= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=cy8sH1V1; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf10.hostedemail.com: domain of jgross@suse.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=jgross@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721808817; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jaRsVgfOKLFGoy0MVEb7glaoqqC1wwJGWAgYlCrETi0=; b=hz1rJ5M5FxxX+Nn45braWzSU2jrjx8/75M8jW3UWdp/C1yF7VXvYqAj16Eehiwc985O7lD 0JDkV5yhUoxRYsJwi+0kQO5Wj5EczbN2EF9daHwFGtjL1RlMt+CVK4xc7rMM6k4IHKsmCy HBfUOz7OCKF1H2Ei/8hQTtXEzjOJpRs= Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5a2a90243c9so5308772a12.0 for ; Wed, 24 Jul 2024 01:14:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1721808854; x=1722413654; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=jaRsVgfOKLFGoy0MVEb7glaoqqC1wwJGWAgYlCrETi0=; b=cy8sH1V1yCqu9TSoCG7Mwvnf3sbwk2ocWjPOBdwxHSbnmaWbPvs8D//BQ17VswUDc4 sH8dDqzkhrZofml9NsO0Eqw3iBPLnzWD9a/SEpNa4ovDDk5xUxvCNJIsB+49dRj6+Rw7 iOCIfZyqUrmED1E9mmHKP1DpAFz6pOQTDMa7yCSe4MLSV1Cnrt38VOXj5PWkQARLEGLa J2Bj8YkeCfMgizhBQmLcqVlAHuEBVOrECuvkWcU33crauBV2qYwr4EPfJAnVXp9JvN/B O/1H8sdaMGZJ5sgQke47AjuayxLvTgb6uE2G6aTa3Tkonhos4qkXPTcQvvEGAiw7c9PC JT1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721808854; x=1722413654; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jaRsVgfOKLFGoy0MVEb7glaoqqC1wwJGWAgYlCrETi0=; b=YoqTpKY5siRl4BXdMZwaXNI6WbA/KmPuSJDcRRU93LJcGrztcYwJj7HZ7Axk6U0pny /B4Ga3S6owp95d0bp6ElAOMqdfGPmbEibFJS2qihGBQOh8WQqeKp7+ftXYfhzd3zeYWe gdfx+WAEwk+WfxE5I/YEj5LLfdnLMZFZzGS8Anhd8+8DDnDsd0zjHCaB2X3ccu5lE9Lx YJf3rJ3Txu/BmIdAYz/r+ajRWcmPRCPZ87owRpL6O8KglVilUwdPSdDhrBJ7fPp8FZPM VOLa/fdET6EcxqFOHjQo735RmEA14JhxmkLisZoDCnsyJQrLJD2vg7XkSHfKANIwhvV6 xjMA== X-Forwarded-Encrypted: i=1; AJvYcCWong/xaWQedG1H4qsj2sDYrO79mLgFdhkikJHhRMonzxN7t+XbrVGW8l8FE1eql9Gm7vw3edl4ChYGOWGklpjfcJQ= X-Gm-Message-State: AOJu0Yxo6a+ou6tShnJ8ZRaP0afOKEX26NZ9gzQ/7K1xp3cnCZtYrq2n aZJife8m1YOEIYKv3muZztQ6SBsJVDzXlzS+lfS/EJJNXiKYA492f8mVF+m1WKs= X-Google-Smtp-Source: AGHT+IErFz6fk4k4pDS53bVIdpr3Cmi7kyuKzcJkJAFzrVycMLPuZ4ETQuR0kvj/epfBBRSJC5/Cqw== X-Received: by 2002:a50:9b5d:0:b0:5a3:b866:eaee with SMTP id 4fb4d7f45d1cf-5a47848532fmr7897510a12.7.1721808853815; Wed, 24 Jul 2024 01:14:13 -0700 (PDT) Received: from ?IPV6:2003:e5:8729:4000:29eb:6d9d:3214:39d2? (p200300e58729400029eb6d9d321439d2.dip0.t-ipconnect.de. [2003:e5:8729:4000:29eb:6d9d:3214:39d2]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5a30a4d7127sm8662732a12.3.2024.07.24.01.14.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 24 Jul 2024 01:14:13 -0700 (PDT) Message-ID: <16f51077-f525-4d3c-92ad-8a1ccc02e4ff@suse.com> Date: Wed, 24 Jul 2024 10:14:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Build performance regressions originating from min()/max() macros To: Lorenzo Stoakes , Andrew Morton , david.laight@aculab.com Cc: Arnd Bergmann , willy@infradead.org, torvalds@linux-foundation.org, Jason@zx2c4.com, hch@infradead.org, andriy.shevchenko@linux.intel.com, pedro.falcato@gmail.com, Mateusz Guzik , linux-mm@kvack.org, linux-kernel@vger.kernel.org References: Content-Language: en-US From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: ABC3DC0007 X-Stat-Signature: jfgzecsrs5gcu3errthrj9xi8fwye4u1 X-Rspam-User: X-HE-Tag: 1721808855-397084 X-HE-Meta: U2FsdGVkX19oeGnv3jeU8FPNr9yEsYc+uyqURajhKwyCzPpF6c37Wy8Omax3c+tOv7XYOwwR1KHnylX0mQOSSGZO4KzlGBbUpshU/hCBJYRSl6qNcNxuYUyWGE4t+ODn9iPmbdRpXa5evunXYiHI7vrdiSUoB6VOWMZEt9notdokNTjdFryzVkT3pJXWsqjFrGDn5o3W1dBmLxvySGgDPjoi+cShflxREQEJQSVZNALHwWfSUjiRmmnnnUn1cb50ZEfbzqyD+xDLv5w6TUhcR4T2OcATG9n0+7o2GIwiMD7LBOPXu+5egiDQXm0OW/G2uemP0x1tUmhMP1Y2EB0YRB8d6M49+lbu0ge9LBCF2vGW+zV1eGJsWOgy2+1zqxSdwtJCWVdfQs0Zcpf9fMW2wFmvaAFbAhRbm0hWgnG4otgjU0/bf627dAn5YgFXpgQNFgllbVA2Hg3LxoquXNJcDVOFJwJym/LpQigASiJ1dbfnWZkSPGrTGWN1x+ZxF29yn7nHM3gQiixpDu5rNNymTcooEVY2OKMNM5eMa3Vs2T/03ErVDvSz/hHskB3XxtVA+cBdx1fE3jifFdJPXujwltPUT+ZOIVL/Wi3T0W6mIHOiWclAshuYTIGHlyBqMC562UDWsfwArnaG3H687LJBUrvPWC5w6qXOUFzsE3oy2BhBCs6z5bP7W6QBqNIbcvs23+iTGH6+KsUhd22Xniizs8XYQUH5Fv6nBK8kTY9e4u1zw/sagV690tljDgJwdq088cxrQbqMWbh3krUs5dChxuW6ctFot3875i0lvR+mHQSYwU/ZYIx6xaP1H5i3fOPabfEHuKgJAAS0NLRiwdJxPm/JpYW6sw8VHQI0EXVbfGUu2u3etJaBRm0J2xzI7NKSwKSk51/U9kZ0JgwTIYelRZQpZxI2HLLWH2fpIb5VN52pPcslV4NyBAwGX6L81yqCZfyTHgl88ow+I6Q8oor z0WpJwek qBaSqQ+PfjNdkmRvn1w28aHpp1HloQXwG+6B+StLdYW8svsiVlJG2jy/UwM18gmpCHajpNB81JC8riID0cvawYIAuUjEXZ7fhUjmV7ud3uai0gZAvAp34fzLfk8agDiC/nbHyxzveqcKWc3eK79tzdUBOMooEdiXiwFxYZLWZOYlaZ31Qrq/4F6EEHk/D2L21A3FrINA3at1RZQiSAhwQZ83+kpZQsAMGVG/ZD3MDmJdm4l0jPP8iJv2g5ynBNQTNsg5gDbIFqjXIzjhLbRHUe56ikpG2IlWgjV3si/RIFn8TqTof0da34GJ9xr99B2cW4/MF45CQBhR/PsBhh/6F0XBdalRPhENiAKK9mQ5p6c7D4Kig8dJWv6Yz7LLSaJ90wr1ZINFs0pKDvXYhXg4R4wn6awQ1efQyu6ub9F6m0XbjvbU= 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 23.07.24 23:59, Lorenzo Stoakes wrote: > Arnd reported a significant build slowdown [0], which was bisected to the > series spanning commit 80fcac55385c ("minmax: relax check to allow > comparison between unsigned arguments and signed constants") to commit > 867046cc70277 ("minmax: relax check to allow comparison between unsigned > arguments and signed constants"), originating from the series "minmax: > Relax type checks in min() and max()." [1]. > > I have reproduced this locally, reverting this series and manually fixing > up all call sites that invoke min()/max() for a simple x86-64 defconfig (+ > some other debug flags I use for debug kernels, I can provide the .config > if needed). > > Arnd noted that the arch/x86/xen/setup.c file was particularly problematic, > taking 15 (!) seconds to pre-process on his machine, so I also enabled > CONFIG_XEN to test this and obtained performance numbers with this set/not > set. > > I was able to reproduce this very significant pre-processor time on this > file, noting that with the series reverted compile time for the file is > 0.79s, with it in place, it takes 6.90s for a 873.4% slowdown. > > I also checked total build times (32-core intel i9-14900KF box): > > ## With CONFIG_XEN > > ### Reverted minmax code > > make 1588.46s user 92.33s system 2430% cpu 1:09.16 total > make 1598.57s user 93.49s system 2419% cpu 1:09.94 total > make 1598.99s user 92.49s system 2419% cpu 1:09.91 total > > ### Not reverted > > make 1639.25s user 96.34s system 2433% cpu 1:11.32 total > make 1640.34s user 96.01s system 2427% cpu 1:11.54 total > make 1639.98s user 96.76s system 2436% cpu 1:11.27 total > > ## Without CONFIG_XEN > > ### Reverted minmax code > > make 1524.97s user 89.84s system 2399% cpu 1:07.31 total > make 1521.01s user 88.99s system 2391% cpu 1:07.32 total > make 1530.75s user 89.65s system 2389% cpu 1:07.83 total > > ### Not reverted > > make 1570.64s user 94.09s system 2398% cpu 1:09.41 total > make 1571.25s user 94.36s system 2401% cpu 1:09.36 total > make 1568.25s user 93.83s system 2396% cpu 1:09.35 total > > Which suggests a worryingly significant slowdown of ~45s with CONFIG_XEN > enabled and ~35s even without it. > > The underlying problems seems to be very large macro expansions, which Arnd > noted in the xen case originated from the line: > > extra_pages = min3(EXTRA_MEM_RATIO * min(max_pfn, PFN_DOWN(MAXMEM)), > extra_pages, max_pages - max_pfn); > > And resulted in the generation of 47 MB (!) of pre-processor output. > > It seems a lot of code now relies on the relaxed conditions of the newly > changed min/max() macros, so the question is - what can we do to address > these regressions? I can send a patch to simplify the problematic construct, but OTOH this will avoid only one particularly bad example. Juergen