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 91CADC54798 for ; Wed, 28 Feb 2024 01:55:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 066046B0275; Tue, 27 Feb 2024 20:55:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 015E26B0277; Tue, 27 Feb 2024 20:55:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E1F636B0278; Tue, 27 Feb 2024 20:55:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id CFCE16B0275 for ; Tue, 27 Feb 2024 20:55:19 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 374E51A039E for ; Wed, 28 Feb 2024 01:55:19 +0000 (UTC) X-FDA: 81839545158.21.B3AEE60 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf20.hostedemail.com (Postfix) with ESMTP id E1A6F1C0005 for ; Wed, 28 Feb 2024 01:55:13 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf20.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709085317; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=tlFSIFjSwTC360dyql6gdgtA5/mNJv1EOBDFnxyRb5I=; b=zYDnTrfbA/lArZ9bYrTV9d5axnvmmcrpwm+UP9LKhv7S3QSO+L31ywIRY68zsdUapGMGrt zzCMk4Wcg25D0uTU217C3Wg4iWL+eFODwT8IJeOpAbPrUFeyHD4micp5ccSrzuujEfHYS/ ZQskN6oDjjAcqybD3pi+fCbxpwkRg8c= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf20.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709085317; a=rsa-sha256; cv=none; b=1vc/vhRh0g7ivpyhWZqJxr6kmK4+5ZV76FqyukMLAeo2EhQS2x8NykiWjm4YGIZX/NjWRz W3mgSRqz2fVXf3c3BUCpR0Iu6mXBiXckerORXisvnFkJ8/xmCKYOeM6/zP1u1TT3imgi3j CQRv+1KnMrsy1lzUN9aQ0RqjUM974iU= X-AuditID: a67dfc5b-d6dff70000001748-61-65de927f07d1 From: Byungchul Park To: akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel_team@skhynix.com, hannes@cmpxchg.org Subject: [PATCH] mm/vmscan: simplify the calculation of fractions for SCAN_FRACT Date: Wed, 28 Feb 2024 10:55:00 +0900 Message-Id: <20240228015500.52452-1-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEJMWRmVeSWpSXmKPExsXC9ZZnoW79pHupBo9OCljMWb+GzWL1Jl+L y7vmsFncW/Of1YHF4/Cb98wemz5NYvc4MeM3i8fnTXIBLFFcNimpOZllqUX6dglcGfPXdzMX zOCvOPu1m72BcRJPFyMnh4SAicTP1UfYYOzmvjnMIDabgLrEjRs/wWwRAVmJqX/Ps4DYzALp EpcbloPFhQUCJE6sucUOYrMIqErsudTMCGLzCphKHF35mAViprzE6g0HmCHsvawSk7+qQNiS EgdX3GCZwMi9gJFhFaNQZl5ZbmJmjoleRmVeZoVecn7uJkagz5fV/onewfjpQvAhRgEORiUe 3gt37qYKsSaWFVfmHmKU4GBWEuGVEQQK8aYkVlalFuXHF5XmpBYfYpTmYFES5zX6Vp4iJJCe WJKanZpakFoEk2Xi4JRqYAwu5Z/65Hzo/jydvg3RClPvKz1/13JlbWnkFCkxGeWs8NUl8086 V2Xc3qnNqFF8aso9z1dpFpoXdWVm+5gvjDFXL+E1vZ4rZ/sxX9AkT2Cq3PSjogq71wqHN9Ws 2ND5a529ceDhk5WTA/66Z77MU1r2Z3PC+5d9urHm/I91m1r7TrTGmCzIV2Ipzkg01GIuKk4E AAi0dVH1AQAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFJMWRmVeSWpSXmKPExsXC5WfdrFs/6V6qwaOrnBZz1q9hs1i9ydfi 8NyTrBaXd81hs7i35j+rA6vH4TfvmT02fZrE7nFixm8Wj8UvPjB5fN4kF8AaxWWTkpqTWZZa pG+XwJUxf303c8EM/oqzX7vZGxgn8XQxcnJICJhINPfNYQax2QTUJW7c+AlmiwjISkz9e54F xGYWSJe43LAcLC4sECBxYs0tdhCbRUBVYs+lZkYQm1fAVOLoyscsEDPlJVZvOMA8gZFjASPD KkaRzLyy3MTMHFO94uyMyrzMCr3k/NxNjEAfLqv9M3EH45fL7ocYBTgYlXh4L965myrEmlhW XJl7iFGCg1lJhFdGECjEm5JYWZValB9fVJqTWnyIUZqDRUmc1ys8NUFIID2xJDU7NbUgtQgm y8TBKdXAmLP43r6tf7Nj5J5XzVj3ds9chYrNaZkuUiUNcUdWnpt1vqz72c6zr99/UNhYdodl ihT3tO9Xrha8UkldwROir5z3YM+Js0dD+Liuiu0/0fM+uun3O9MtVw3+m587mHv927Rfy7l2 1q9Kq7QXSa0/c8TVwuWZ/43DxgdWhFVuPDLVSuADs/CR9UeVWIozEg21mIuKEwHr9n3w3QEA AA== X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E1A6F1C0005 X-Stat-Signature: geefi3ze89wfz46zcw9f689owzcz5qcp X-HE-Tag: 1709085313-760573 X-HE-Meta: U2FsdGVkX18yz+TpfYksfr1majqLsWAwPNBq6dr81+N1Ct5bJkHIZ1xfKiW5S4ooxcQy01c2ETGbtZO5ojMkhduw0ItdB6AjjDUMCq3Crs7bsPX+tFOQWf9UnAjzFB5Yi/DhC/nyBAKVIaXNZBSakgNCDpraZusI/qssC3V9E8oHz40xBG4i70Hn8I3X/+O9JvxXukjqSE0MUK+o2EpPKK1Vfgu6HH5Ze6JC3FLbrwONPyttMGkHswsTEn9M7CQnr4be8HxcMiqImNZY7vb2ZpAyGcvmubM0kVo/yR3TILRo4cOEbEXqy06TCXc/OPRgWVaSUhaN4mdlPTkCU1QQs9EkJFGZh+yrXYaSpJZgiKmcrYAA8JlqYVvsXMhMPEx0WEjRAGmlpI/P/JKcQjIBK4TIFJX/xjGNIA2EbawkcP5jCp6X1UhpgNwamdxxVnNAWs5QeKdClun2aXkbT06GJUyF2bkzrLy9mSbZnE1/ZSS5uts6WK7qH9GD2YGbYI1FtF52/6kHpGV2p6TNVOKZjDCG+VM5Zo2BZrT0L0buI8r0hNBl/7MIjTFU6Oh8aKrW/EqLV/Bsz9ph04UpkDaGu9fjkO812o88TDFiDRmpq+O8pMKddEUNQ5P+YcLLUum+EbbFB+ux16bOg+YFoLN4/1oZQNLRQ/fqRsQ0sbSUzHyegO8UWo6bnSae2rhzNEZ+2oq8VEAzQpezqw8IFzJO8seqn5KkrA/59bJ0KNJpZTVA7qj6cNNoIius6AmPQ4aa X-Bogosity: Ham, tests=bogofilter, spamicity=0.003494, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The current way to calculate fractions for SACN_FRACT is little readable and more complicated than it should be. It also performs unnecessary division and adjustment to avoid zero operands. Prune away by multiplying the fractions by 'anon_cost * file_cost / (3 * total_cost)': where: total_cost = sc->anon_cost + sc->file_cost anon_cost = total_cost + sc->anon_cost file_cost = total_cost + sc->file_cost before: fraction[0] = swappiness * 3 * total_cost / anon_cost fraction[1] = (200 - swappiness) * 3 * total_cost / file_cost after: fraction[0] = swappiness * file_cost fraction[1] = (200 - swappiness) * anon_cost Worth noting that this patch doesn't change the formula. Signed-off-by: Byungchul Park --- mm/vmscan.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 4657440854db..7b33fcc1cbdc 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2339,7 +2339,6 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, u64 fraction[ANON_AND_FILE]; u64 denominator = 0; /* gcc */ enum scan_balance scan_balance; - unsigned long ap, fp; enum lru_list lru; /* @@ -2416,17 +2415,10 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, total_cost = sc->anon_cost + sc->file_cost; anon_cost = total_cost + sc->anon_cost; file_cost = total_cost + sc->file_cost; - total_cost = anon_cost + file_cost; - ap = swappiness * (total_cost + 1); - ap /= anon_cost + 1; - - fp = (200 - swappiness) * (total_cost + 1); - fp /= file_cost + 1; - - fraction[0] = ap; - fraction[1] = fp; - denominator = ap + fp; + fraction[0] = swappiness * file_cost; + fraction[1] = (200 - swappiness) * anon_cost; + denominator = fraction[0] + fraction[1]; out: for_each_evictable_lru(lru) { int file = is_file_lru(lru); -- 2.17.1