From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755655AbeASN0N (ORCPT ); Fri, 19 Jan 2018 08:26:13 -0500 Received: from mail-ve1eur01on0121.outbound.protection.outlook.com ([104.47.1.121]:11200 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754771AbeASNZx (ORCPT ); Fri, 19 Jan 2018 08:25:53 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; From: Andrey Ryabinin To: Andrew Morton Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrey Ryabinin , Shakeel Butt , Michal Hocko , Johannes Weiner , Vladimir Davydov Subject: [PATCH v5 2/2] mm/memcontrol.c: Reduce reclaim retries in mem_cgroup_resize_limit() Date: Fri, 19 Jan 2018 16:25:44 +0300 Message-Id: <20180119132544.19569-2-aryabinin@virtuozzo.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180119132544.19569-1-aryabinin@virtuozzo.com> References: <20171220102429.31601-1-aryabinin@virtuozzo.com> <20180119132544.19569-1-aryabinin@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:802:2a::18) To AM4PR08MB2817.eurprd08.prod.outlook.com (2603:10a6:205:d::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f863f6f-d244-4072-8736-08d55f40275a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:AM4PR08MB2817; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2817;3:9RUAqRkkgzwUVTZ0rQiB6WQJb4LBOA1BEt3bMu1d9EH2UdbkxPhDMD7l8M7PPUiUS9Cgj6WUinRuZg0qxrOULCW2/L1/Lo8CvFu3lWOkKy0xdXxPtGKuA3UCk4nJgFgwPi4HjzC6rxx3S1JPRtkCOKvCY0JdVOfKNG+IwLv1jBbqt8FpsOHoCddnMZqCOSnwdVX0d3/XRRXVv5oK3U3qhdZZGNzen18K5dvV65j8+X5slGLeAaT4DKA3LTuufqnN;25:ejA60yiXfA7Erw2o30LHVJxP6Ysc+IRPm2lbD0D2GESz67NCiI6jIpdEYTqxvHax+YVAAmj+nlUGh6oN23XS/jf/B4wvuGv3fpehotr9TGrWsMAVb9HsMRxPgG+qKJGbbfnB6+ypMmQKOYc/CGkZcStwvWsOuCjeozKsJE4q6Sn51VbemfXVUvkg2FhxOyNKvycvVltRtE6xfqvKX7mqrh8C6T7/x3ps2sh5KmznitHnCR6d9P8IIKbvglSSlvSFKxrhvHPLDOnMBbUHui/pWjlYrBQKMcaagtiQoWeCGBfvqOZYbZIS6mNFUIBBc8aYrdpSO2TQJgQbKY5mnQHigw==;31:X3/Yln9DrErtoXk6MTowNyzczex6pXP5nd//ueumsYsXGp8qMyR84P1ElflD7IWVlqLgaGr28In/8bTgr6ThWbkyZYiPVb5/+l9fHUfaTtTpb0c7R8/oxYzfHt/SLnaRj70IRmA3wmgF7cDo2wAid8Cte0He52cGsgsyqWvdPU3jU58h5mz13T8Rs0a4fxWPRecJkHVZu8uP7OlaPVwA/gFa2Q/9FG2D9GcHfZVn0Ho= X-MS-TrafficTypeDiagnostic: AM4PR08MB2817: X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2817;20:snp+qUJV0CK0NPKoaCO+aIoLqkVaPC4GFkNyNEyvVy7051giWLUaNYI0qZ9lhRYJs3xYJtyqFLd/tDvCLuqxFjwebORz55iJVikdt4KnaqZQN395CWGb+J0otoS3JqjL+oQw3fXA7fXC2BJUzVQE9NmqEjTMc5TmHaep+FxwIhHSCdAX3dZ5F2X4SlIroznJOrwWwi7KnCQVTVN9hNN3CVdcQKX0jK8S1O2u5TCXg9UyeUApzxIwH+dLfsHlRaG9nAbHtCRlWPyRhuB7Gf8d+wxPpqZDvYZeO84tq7SDaSzQ6ZuCmt7l0PtA/fmrzMnS4ZzDa09nXgpYZce8VUpSncpcOIaEre5fg63ZmqrpaOf+FeUBqLQEbZpoeL0ZfA+HkQfrUq30Up0cfs9srnzTbt6mumtPc1VaSbOTUJKVA84=;4:bZX7CTmYa5U0DgU37K+zPMAIJCs3FpYqoHf9Y4asMNPEYbbJC6uFievdiElhp1+Tz36GgMcCoCmFxr7zXF8mqaaRjn6gDzJj/peOJVsXmcEog3NSrTxJcOgfxRRidaQ1UAwqaNDQCpziBbfGz7xjtGCCnYH/jy3ld6mY/vsIIHdsXcGlCJfnH7Ac0nuWo6lSNO2noXUvkVfnWqJkajrpbcKKzBTtBVuNSbiw0Koa4Kdei7UQeU0hzejzw1W1B3zQo7VvgSwpBBTZRBDLMaWwUO0JitWwLw/q973lqKwo//3CLTlUYCLXwsNriIzFYbNuZxrM5rUKU4315hCZ0ZhbGlSAzkxEUjJ9grNNXLo8rqkbTucEbqKOH7fUVu1xylUS X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(5005006)(8121501046)(10201501046)(3231023)(2400078)(944501161)(3002001)(93006095)(93001095)(6041268)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(6072148)(201708071742011);SRVR:AM4PR08MB2817;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM4PR08MB2817; X-Forefront-PRVS: 0557CBAD84 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6069001)(396003)(346002)(366004)(39380400002)(39840400004)(376002)(189003)(199004)(54906003)(81166006)(305945005)(50466002)(86362001)(48376002)(39060400002)(6512007)(97736004)(16586007)(66066001)(36756003)(7736002)(47776003)(68736007)(5660300001)(2906002)(81156014)(53936002)(76506005)(106356001)(50226002)(316002)(53416004)(8676002)(8936002)(105586002)(3846002)(6916009)(386003)(6666003)(6506007)(478600001)(6116002)(4326008)(2950100002)(69596002)(26005)(52116002)(76176011)(16526018)(51416003)(25786009)(6486002)(1076002)(59450400001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR08MB2817;H:localhost.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR08MB2817;23:WMLkHZxJfFhzkwRbA0qSnYKpW7ruJIWUDdF6iMk80?= =?us-ascii?Q?9qZO60/mON3K9HyJpy7vdB7XxGcl9weXvqncLPEQwmfG1/kSjho/NpnVkBiT?= =?us-ascii?Q?poBzxemFa/xr6reppMGwl33dAEYF5VUtHA5GSCT/UxlhNYq+IRLDH8uv0eY+?= =?us-ascii?Q?30evSv8T97oM+MI5u7UQ3nSwG5OvBXzN7kCd+5idIzgT9WTZG7tmZYorN6RB?= =?us-ascii?Q?soldwkTCEk9NmlUGSZHPwdtMi1+deSvYvLtlSHLV/Bd9E0RG+spLR4V0bHvu?= =?us-ascii?Q?gB8yflT1NKE3xT8bNm3DeNMGbYjtDor42xPVWksjzF3/Ug5cAQk0iNDx4x7z?= =?us-ascii?Q?HyE5J1OglNNQV77ybsb/JbJYzSaESQZdQmQ2sE2wkiq0kTZO903Ue9d9eezV?= =?us-ascii?Q?GunFfVyd+YUauZKdqQg8V/n5Ly4P9RwzBHiJooz2igWnhFsVWqfZndXMVwEe?= =?us-ascii?Q?j9lDcz4uxgo5e//lJhYoqJKpbRBc7jPZ7qrgf9a4EGMhBF3jtLJpoikE4nY3?= =?us-ascii?Q?66tA0f+DSgV0wAi2N7eV9SqOA4vvQEEBN3E3QNkW4lJ4MAT4ZoXWM0F39I9G?= =?us-ascii?Q?3k5LkZCc3+MQvHMjQLr5xhN9bJNlnlB+lGb9PDmwvaEvUva9H4yDf0BbfY30?= =?us-ascii?Q?iR/2qtyAXQhydJoSjaDCil0A2bUqeo8Nd84kYNFbDAxvIAiQsy/puVYq6bw0?= =?us-ascii?Q?JE9+U3PWllsxpu1JHWNlPA9+mJ3nIroziuZcW7anFs2IhOlW4z+CMOGGOuf+?= =?us-ascii?Q?ruzmVxyL6UD32WinS15mWapb0p7jIsAskkmF6aw6lB4QeUB6cwOqQt1WqLa4?= =?us-ascii?Q?XQiyanFHma0Cc/Y33R5X4KyXF8P59DPpP730B4cgf1RD6kyzPDPkm8H7r1FJ?= =?us-ascii?Q?ZZZaX3fLmAF/maHA37RuPxFh9L/oaRYnx6GjUGsMW9DuUpY44BGLs0OhzA86?= =?us-ascii?Q?h+unO4wClomAOGIqVX3OIVksG6qcsAV8v0d5rgJQCrku/D9jFLgZ8pwPletJ?= =?us-ascii?Q?GVDb9Dw/EsUegI4cIW4wqdBt0sP8nUm7kXavZLrxIgfnGLRZmxHQS3jWfKah?= =?us-ascii?Q?rzQlWW0Pi3moR8VPQAn6QqyyJBT2Wv1eFWfCuFv6gnl+KjuzO4OkrzK4qpxJ?= =?us-ascii?Q?rrVq95tkC/vS12b/6XiVpp5o7PdrU9T5mOzdXt11jurAFaNHlNQTpkOeQd9D?= =?us-ascii?Q?RLecp3WOiZShAij3RWDG4pNCdtR2Gf2pqVmAWa0EOE7EBTtjgz/GJsfT8jqI?= =?us-ascii?Q?zcxtasrdJDA4AJ6c+TnBNpU8w1rSCd4d7DoA9ig?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2817;6:6K1LFXhYXf+eiVOYh3fTH47kI9hwtaxXErwImHltwAqIQ4iDFNVvM+aqHMfBvME0z+icr4KdDJPX80YibMBYWANw3X60T/b1EG5m1RLU9KYMExS9XMyeCxVSZV5NuVRBRmk/UG0ZFrLUqe6sQqTM/0zlByT2318NUI/ZVEmZVZmCFImotzJN1ANqMj7z+6tfyOXvBIx9FywOih9pcpZ7OxyT4WGnL9kdsvSossrcxeASPH2g2AbvCIplRvhKKDCSk2u9AJwWWIAEhzv19uEtvCfNvRqlsYRpRHFgHz5umXddkIV96gIA9Xm4oPCQ6sJOfRxGYGhhNP3xE3YrMx4v5jv9eTLzoEz6fEwXuQZHf9o=;5:8ofUJYkQt+CzcNYZkUl+U5Xu3p1ld3ibNGX7juUAdt8suRGRH2uLOFs2HeETL8j6MV9VCEZuCwLKNxdB434jzDwq/pnIZ6blJYXsTYyZmV50VuR1bwUVl6J0rSzHln98gIS8DtMfXllPZP6FqR7jr7fHmCr1E7t7uHQpnNYjdso=;24:pdgsOXWuMTdkRdJc7rJIFOOMaXYaZz64wRPcy3jb9iXDR1M75oewOJJ57l1g76oX0wLBqIlTI28KfEeRQIn9shgrWoiOXk5PrOUNkIOn+pE=;7:HRbI77hkh+Z5bhUKyi1F1ypxbq7kVNBu4xjb6yUeGipDCM/ud1g0TamJxW63QnGIB2qbSN9Ee8CsKLkjJLd2VkYN4nK5WJNeAbe6iCRuOvemcRiYGe1AOPOrP8Tc3eRNnDIbPr78QDAubjhOz8MZgZfPJPbWYBsj+ZuLy9gfngw5tPQeBf8WKnlFxhLRsx/WAmagK8jxCSUcPaMHlVzGdKoDzkmcXHihy6IMaZ8bc+/nfFThkPgn/7A3gMtWP4s0 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2817;20:865pbC17c2vu59LR0cso7bW1FWdF3rUgBnak/LIV7cysl86KfA6cCRTIiOIgvmpXrNXbeOifZlSwNqyyV+sKVhCV0CJlxyH7A2MS7uUjM13/Tk9R6pilErq/7t1n5c4dhUIv4C93ZVjUE/9IsxfjwtBzFCg4O4ZRAWBVaZc4lzc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2018 13:25:47.6833 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f863f6f-d244-4072-8736-08d55f40275a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2817 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently mem_cgroup_resize_limit() retries to set limit after reclaiming 32 pages. It makes more sense to reclaim needed amount of pages right away. This works noticeably faster, especially if 'usage - limit' big. E.g. bringing down limit from 4G to 50M: Before: # perf stat echo 50M > memory.limit_in_bytes Performance counter stats for 'echo 50M': 386.582382 task-clock (msec) # 0.835 CPUs utilized 2,502 context-switches # 0.006 M/sec 0.463244382 seconds time elapsed After: # perf stat echo 50M > memory.limit_in_bytes Performance counter stats for 'echo 50M': 169.403906 task-clock (msec) # 0.849 CPUs utilized 14 context-switches # 0.083 K/sec 0.199536900 seconds time elapsed Signed-off-by: Andrey Ryabinin Cc: Shakeel Butt Cc: Michal Hocko Cc: Johannes Weiner Cc: Vladimir Davydov --- mm/memcontrol.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 9d987f3e79dc..09bac2df2f12 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2448,6 +2448,7 @@ static DEFINE_MUTEX(memcg_limit_mutex); static int mem_cgroup_resize_limit(struct mem_cgroup *memcg, unsigned long limit, bool memsw) { + unsigned long nr_pages; bool enlarge = false; int ret; bool limits_invariant; @@ -2479,8 +2480,9 @@ static int mem_cgroup_resize_limit(struct mem_cgroup *memcg, if (!ret) break; - if (!try_to_free_mem_cgroup_pages(memcg, 1, - GFP_KERNEL, !memsw)) { + nr_pages = max_t(long, 1, page_counter_read(counter) - limit); + if (!try_to_free_mem_cgroup_pages(memcg, nr_pages, + GFP_KERNEL, !memsw)) { ret = -EBUSY; break; } -- 2.13.6