Received: by 10.223.164.202 with SMTP id h10csp2459404wrb; Mon, 27 Nov 2017 17:53:59 -0800 (PST) X-Google-Smtp-Source: AGs4zMZ0nRCXAFvNB3RqfHMDW0fr+kPTX2+pZu9hViZHlFRupXr2Y3bX7BDTlbM8IC0W0N5VgkdK X-Received: by 10.84.233.131 with SMTP id l3mr39792307plk.295.1511834039387; Mon, 27 Nov 2017 17:53:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511834039; cv=none; d=google.com; s=arc-20160816; b=Mu2w/PwFmGvrmL6K6fkpm/lw/AbzFeJZyICVUjDrn2aWOcBZ4UODxGAPReYaJEQd6i D9b2PbgGhFWtaa3rOxIaSz8oY3ctyjCv/0HuxR4yfBj+bZEZjdcaMjAUMMUCp3Nub54i 0yamevt5IcB9qUF9zFnCBD8+6ad02Zq6qOUpJNNfc275w1II+o/8fZD6BGYK1958n1dE JFgz8ZHdA+QRuB5z4B8j/3JfWitTUeOoL9aDyUtkWSbWr5dTnWXNhJgkBlRqQDz7CAMP AyHa3QwndFSwO15jv4MXC5w77qS+Y1DDyiTd+4uCkqa8b07dgEdtkudUfJ8yuRXclljD kbIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=l4bitPvdMeS/MHIQSeGya2GcxrwsQgiI94i3cuwtFv8=; b=ASgQZ9w2O/9LXDSHchJj1QgfjnY7xUW793clWy+VYvUgCYgq/RuAS65KHlhZwVefR+ 3Rbe29ETnaLGp6UYC3u13j1zLLkQdlMHLuglNj8c3EOTlAMl4H7xdo8ElDdCYp6n29Xk bYtbUaS4KGYRVpgRkcz4XTLxm1njLXxEKwYD6rnqjM/yzwJL+bXUCK5jOK8zy7g2LsEN eshyVIeho78xV3b/xPMKdjzeMsI9lc9rzZ+61u/jt2wUNKCDkEslgbp4fWgDqZYqwzO+ PJZJhmWfyjDDM4zjoQ4vxW4Bp/kHwBXNEl+iJe5UjIFnKN8zGIT66AaaIK9ZHvLUgtj3 misw== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d19si23874015plr.654.2017.11.27.17.53.47; Mon, 27 Nov 2017 17:53:59 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753294AbdK1BxN (ORCPT + 78 others); Mon, 27 Nov 2017 20:53:13 -0500 Received: from mxhk.zte.com.cn ([63.217.80.70]:61310 "EHLO mxhk.zte.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752804AbdK1BxM (ORCPT ); Mon, 27 Nov 2017 20:53:12 -0500 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id F06D6CE6C46C31B0C80C; Tue, 28 Nov 2017 09:53:09 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id vAS1r0iO039501; Tue, 28 Nov 2017 09:53:00 +0800 (GMT-8) (envelope-from jiang.biao2@zte.com.cn) Received: from localhost.localdomain ([10.75.10.200]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017112809530366-2692652 ; Tue, 28 Nov 2017 09:53:03 +0800 From: Jiang Biao To: akpm@linux-foundation.org, mhocko@suse.com, hannes@cmpxchg.org, hillf.zj@alibaba-inc.com, minchan@kernel.org, ying.huang@intel.com, mgorman@techsingularity.net Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, jiang.biao2@zte.com.cn, zhong.weidong@zte.com.cn Subject: [PATCH] mm/vmscan: try to optimize branch procedures. Date: Tue, 28 Nov 2017 09:49:45 +0800 Message-Id: <1511833785-55392-1-git-send-email-jiang.biao2@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-11-28 09:53:03, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2017-11-28 09:52:56, Serialize complete at 2017-11-28 09:52:56 X-MAIL: mse01.zte.com.cn vAS1r0iO039501 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 1. Use unlikely to try to improve branch prediction. The *total_scan < 0* branch is unlikely to reach, so use unlikely. 2. Optimize *next_deferred >= scanned* condition. *next_deferred >= scanned* condition could be optimized into *next_deferred > scanned*, because when *next_deferred == scanned*, next_deferred shoud be 0, which is covered by the else branch. 3. Merge two branch blocks into one. The *next_deferred > 0* branch could be merged into *next_deferred > scanned* to simplify the code. Signed-off-by: Jiang Biao --- mm/vmscan.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index eb2f031..5f5d4ab 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -338,7 +338,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, delta *= freeable; do_div(delta, nr_eligible + 1); total_scan += delta; - if (total_scan < 0) { + if (unlikely(total_scan < 0)) { pr_err("shrink_slab: %pF negative objects to delete nr=%ld\n", shrinker->scan_objects, total_scan); total_scan = freeable; @@ -407,18 +407,16 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, cond_resched(); } - if (next_deferred >= scanned) - next_deferred -= scanned; - else - next_deferred = 0; /* * move the unused scan count back into the shrinker in a * manner that handles concurrent updates. If we exhausted the * scan, there is no need to do an update. */ - if (next_deferred > 0) + if (next_deferred > scanned) { + next_deferred -= scanned; new_nr = atomic_long_add_return(next_deferred, &shrinker->nr_deferred[nid]); + } else new_nr = atomic_long_read(&shrinker->nr_deferred[nid]); -- 2.7.4 From 1586324805052530233@xxx Sat Dec 09 16:33:44 +0000 2017 X-GM-THRID: 1586324805052530233 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread