From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751975AbcF0Q5m (ORCPT ); Mon, 27 Jun 2016 12:57:42 -0400 Received: from mail-db3on0130.outbound.protection.outlook.com ([157.55.234.130]:49420 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751638AbcF0Q5k (ORCPT ); Mon, 27 Jun 2016 12:57:40 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=VDavydov@virtuozzo.com; Date: Mon, 27 Jun 2016 19:57:23 +0300 From: Vladimir Davydov To: Chen Feng CC: , , , , , , , , , , , , , , Subject: Re: [PATCH] mm, vmscan: set shrinker to the left page count Message-ID: <20160627165723.GW21652@esperanza> References: <1467025335-6748-1-git-send-email-puck.chen@hisilicon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1467025335-6748-1-git-send-email-puck.chen@hisilicon.com> X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR01CA0063.eurprd01.prod.exchangelabs.com (10.165.170.159) To HE1PR0801MB1626.eurprd08.prod.outlook.com (10.168.149.10) X-MS-Office365-Filtering-Correlation-Id: 03c539a0-f086-4235-2aa1-08d39eac2142 X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1626;2:4nLStXA/mn/ivX2BgOL0kE+zEJBAwcQm9qq3PxZT3vlCdM7q/cOcEuKp2DR33kHx645HgoOWPHQ3uIZia3TPBBQnzrmWMY914nxhD9ObWxUEb2YG1Lihr8YbVycfBRmiHWbP8Nl7VGxMzaAMugPLzhVHYQwA2Z046ulcq0GLIURtI6Z3DMKZY17RJhY1UjZS;3:scG8eh3Ux40NI6I8vn0I9a1WLg11GUsopi13YhpbTu+R5hK0ExIy/HNCsKRMmoCfNfndUIxMBcThD6q2Bmr7KCBfwHIbtdpy+HzhwJ1wo8rrbQ3e6u78po70DDt/lJkm;25:rjIoGR/S5kV36IMaVJUOSCzeg8Kz1bBxHTWpbpQBTcaj29daN/dWUhNC5KctgaCozsoq1Ft4TtDFoYTfZlHlsfAFUSGomTYS2IoU5ae+HUENGm5+DAdzaTatp/HYg8PUERtKVWLWRWVL7fGygKfMrkXzaE7X3HDJgRtbJREA2FYcUHmMNiyXew6RU4OxwK0SQr3uj2vVC6TfnFLJMTIAQNKMX5D02bK/DM8Yq1aGPEfuTsSW3vUvTW7TiWQXB9BeCG0p+MNds7X1PO4X4Rq/FqViiAc6oUc3l6y0RUxR0whHsIhJ7uYLxxXLI5fCs0i1mmwO5GoaRTKgn6u6I5sPMgDxqHeEM+N9euEHm9v8eF/534hpDZ1Rc2tZdYwpuMOaI7W7zLDe3XCiUBX/27gSPke/g6751xPQujEAgFB5JT0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1626; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041072)(6043046);SRVR:HE1PR0801MB1626;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1626; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1626;4:aKS7YOvvO5/lU8kPGA3h9ITfua2a7vLc7pEP2pMMk9vyZuCvBT40xwBdbWIKPVuHRvBF+OScdf0elug3T2vL8mobelweZttfFTFmzLfaEquAYMo0eIerzBsdRcpYNBmyJomASmR4TC076mwT7m2Xz1RA69ifUOxTZnjPrNz6TMoHaq/7FdqNs3veZHimowrTeaguZhLVh/zmYCrWxUvO6dPgSWmWe/CNpXzl4ps/LamOdnAFfpMBOSHcvMFzHxRabzErVyVWBO6vf+0lcJHYbkbhIyTMPt23zFQ3481OhzgLzPpTuBX7sLJTunmG3Pj0zizIwgoUpOjNWdPp43UkMl6ablOlr3zOYGUSVoEKzVEaAG0ak0klYH/GXPBoxCYlMC1IoME1yoYazPaWY5Rwyfz9ETfAgsFF39jJxdQZZH0= X-Forefront-PRVS: 09860C2161 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(24454002)(199003)(189002)(2906002)(7846002)(97736004)(50466002)(50986999)(92566002)(33656002)(97756001)(305945005)(77096005)(80792005)(4326007)(110136002)(189998001)(47776003)(101416001)(9686002)(76176999)(68736007)(54356999)(66066001)(2950100001)(19580395003)(19580405001)(106356001)(8676002)(7736002)(81166006)(81156014)(105586002)(586003)(46406003)(86362001)(3846002)(33716001)(1076002)(23726003)(6116002)(42186005);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1626;H:esperanza;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1626;23:A43lpIEaQotp9yDmJj6f97b93+3icIBM1b/1lbh?= =?us-ascii?Q?jGz3okMCC6+7z5ubBYKIIEwFv1MrPNZ31iCxf2RHPrjsnmMob9DYvRjmqk/z?= =?us-ascii?Q?cjQpOB5nGN2BB2y5Jl2hn8x26mutTYQyYrq/yaaN5wL1k8b5uoWv4PSiB31v?= =?us-ascii?Q?FowUCQUxX2k3xtYXKlEVvbMmgGXvPathmdBfjpIKJdxseNNxtZidma38xQOR?= =?us-ascii?Q?UBsR6M2bvy8dago647ON/rUM8K+4aQqrWO/ScPEVl2bX5RlS9NUCVPCrFxpS?= =?us-ascii?Q?743eQW3CAZn3mpZB4cv2DjQ2UTmLZAasx4zWMZrzONvA9GAdHZ9xVq32rJya?= =?us-ascii?Q?utdNeFdRQEYqc6wG+nqKqZIqahqiBR7R0+CNTujHBlL3Pq9mR6R0qFTUIV1n?= =?us-ascii?Q?ytTQzJAOc5l1Uqcdutj0ZivS+w1GmH5Djugqw4UMYyU17BTF7JdTpZy6Nns1?= =?us-ascii?Q?I8yxIao6Z2fq4KzjkFfuY27nWg469+lm5L5wCEJZv9LuEDglTPfyUI70vely?= =?us-ascii?Q?eUj/xuk0cwDAPDBP5oKaQS39iYkXndAXdVKQvMcca3aS16Hc6Ga+gTaQUsUl?= =?us-ascii?Q?Ncu+jluOvyfeSX10a7WRfMS8C7UvcKjQZp3sJ2oHWQ4SW/g3NAbjZKB7YQRX?= =?us-ascii?Q?9ejLaKKDisNkCUWu0qaozVDSyKeStBV85xgmEnQ7kPEbM5sxsKr8jloCrpwB?= =?us-ascii?Q?icWLeT/ISPWkE3ohB9gGgIphEO2qXuvof07sqlJSLdSBic9/GbAimuz77N6c?= =?us-ascii?Q?lim/xLGGWjbSTZwWJSFuPMcvGhn/2mg1EmypaZlAlIKxaCY82AkPZtpvLcIJ?= =?us-ascii?Q?a+5sOdQcO2S7VGbAOzbZJoNxfzUm2pplbIBYx47vXS4Iw4+aHxhqC7ELm2QY?= =?us-ascii?Q?sB1Raj29p9kfjWnlhl1+11wrMQ9JXQ4/gyTsx+F22YLsJVb6/cQgPXe6Mbaq?= =?us-ascii?Q?C64QJNJLo6BssDiAwTKrfuRqnM6LU45FewrUJlndRIS4/OdLQB4zmnNsqlMw?= =?us-ascii?Q?3JFx7GME/teq0ykN10EQzBwXBWtyHG1guygTaBdJ2f4PDRHz0hRYHxPzpHy7?= =?us-ascii?Q?/L+T2JzzDxZlEmpe/hZfg9jUdtKohZDtpOSscTT8VSnJg65N0R3ghxdF/T7S?= =?us-ascii?Q?BGvLA5blqLlk=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1626;6:94FtdLlF8l+i1X1BRVNs+eOsFG5o/GkQ/edEzwc6+wEpSKPqSgINeU0DpDjufT9+qw1Q1uVn6IEHw0EYy+3n9h52kZO+PoZyxWce8T97Ta7EqNw1fXkooYuwK2gsbTMmgOizf+n7OSI6WHgToTFk0LCj4NU1GsWo8dyBDB1BDn0K9ywtOkGkT/IIU7++immU4wjuHudSAiQCrhrTBhRFZCfLEnzGUxt1MFig6wLxmqAXP1PAgRFFzKjmJEk7n8jV5r/vkdthSq7uzogEjt5Cqxwp2m/hh2Zm3RMg/ayS2aafC6hkU43DWWLDpFTe8V0vCohEMvNkQtaaDREgSKWEdw==;5:iPCOGwDSo1xN6T5HyOW1ufAXBoQh1tXoEbToz6hhuWH1hA6IClXn50APXxF+vo5tIbIFtG9vkVqP401UfBxB3xVI2mXUENqTO3AE+Bf+sAxDaXXoLHV7QnIsajVTn+dU4SV0gqsYpCxLM2WoVx/S5Q==;24:R6pcr/hUyuhL7wyZimSGdUzx5z7nHZaWxbnEyC2DfTHs2Jp1zyF+Kw43mw9UnMIHYX9OpWUXoabRaNbE210pcDWFyEh7DtKrJdixL+IzQIA=;7:F9L1uqOzAdcrD7MmmKdDSOr0ECRKb+FVCliGlDASrEg/4sCduJ6cBXXmvZ6dHJl+O8o35A16jx2aZ7OrooxZfiWCPbLnXYJs+IS2Qw+ZLvO1cegICLWrB1K8wICO6gWKPsf5/f5C+uwk4DD/L7uz/h/xpIFrxCt1sd0bxMUmW2U2xJt6Uk6KspEYsGU9hwA7OT+17VVsO/i/Tj8XejtoCa9tqCIovHwdMihFoxm+qQca3vZpd6w1D4CHIPWT6TXrf4Om+Ei8Y8KP0FFWDDXSjA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1626;20:Qf2tqOROp2mx6bY6JOkiv3uXABg/HV64u7u09LRjsi8/Y5+9htHy/cGBewqk76WQv3vGSa9WzUqqIVi4eKAF0S9Wr8ScatKon+g+vTyeCB3iodh8rrm31JkPrG7+lVqGF2fDlsfvVMAbV1xKPPEh6l5RX6H4OaKO5Z4o3VzG43c= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2016 16:57:29.7421 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1626 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 27, 2016 at 07:02:15PM +0800, Chen Feng wrote: > In my platform, there can be cache a lot of memory in > ion page pool. When shrink memory the nr_to_scan to ion > is always to little. > to_scan: 395 ion_pool_cached: 27305 That's OK. We want to shrink slabs gradually, not all at once. > > Currently, the shrinker nr_deferred is set to total_scan. > But it's not the real left of the shrinker. And it shouldn't. The idea behind nr_deferred is following. A shrinker may return SHRINK_STOP if the current allocation context doesn't allow to reclaim its objects (e.g. reclaiming inodes under GFP_NOFS is deadlock prone). In this case we can't call the shrinker right now, but if we just forget about the batch we are supposed to reclaim at the current iteration, we can wind up having too many of these objects so that they start to exert unfairly high pressure on user memory. So we add the amount that we wanted to scan but couldn't to nr_deferred, so that we can catch up when we get to shrink_slab() with a proper context. > Change it to > the freeable - freed. > > Signed-off-by: Chen Feng > --- > mm/vmscan.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index c4a2f45..1ce3fc4 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -357,8 +357,8 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, > * manner that handles concurrent updates. If we exhausted the > * scan, there is no need to do an update. > */ > - if (total_scan > 0) > - new_nr = atomic_long_add_return(total_scan, > + if (freeable - freed > 0) > + new_nr = atomic_long_add_return(freeable - freed, > &shrinker->nr_deferred[nid]); > else > new_nr = atomic_long_read(&shrinker->nr_deferred[nid]);