From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755009AbdLTL2r (ORCPT ); Wed, 20 Dec 2017 06:28:47 -0500 Received: from mail-eopbgr20123.outbound.protection.outlook.com ([40.107.2.123]:19963 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754153AbdLTL2l (ORCPT ); Wed, 20 Dec 2017 06:28:41 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH 1/2] mm/memcg: try harder to decrease [memory,memsw].limit_in_bytes To: Michal Hocko Cc: Andrew Morton , Johannes Weiner , Vladimir Davydov , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20171220102429.31601-1-aryabinin@virtuozzo.com> <20171220103337.GL4831@dhcp22.suse.cz> From: Andrey Ryabinin Message-ID: <6e9ee949-c203-621d-890f-25a432bd4bb3@virtuozzo.com> Date: Wed, 20 Dec 2017 14:32:19 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171220103337.GL4831@dhcp22.suse.cz> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0102CA0025.eurprd01.prod.exchangelabs.com (2603:10a6:7:14::38) To DB6PR08MB2823.eurprd08.prod.outlook.com (2603:10a6:6:1d::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b8fa0982-1d53-470b-7fea-08d5479cd0ec X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603307)(7153060);SRVR:DB6PR08MB2823; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;3:WGH/nZ37PtPPkHT3qtgw1+Po0SDSldWf0dtewSq2rV4uiL2HhOwobwJYl8bNlAtu6oZrip7AbcR1CVQa5f8UPD5InuHS+GiYIpR5RQG36Kns8sYaTSugGTPJGHxlmDmeEbwFofFa35DeKPz35RzimxjMjg5kydXhcmwv/V5Ikh6spmC0QIvKw4n1YlXKftCKchHssv58zAmEHgkfQqxMx1kfekaBlak6H1KBnb9+B0yy2SEBpei9Sc33oX8K5nxu;25:+b3cn+540Ro/wLekOEk8DBEYDg+Rf9d2COI5FZwmev0W0jZ2zj+clJrDFbkkIwk4JTgszMpTJzAfWPc2SLlZeZw1je2GDRYHBi93BRkwVAMxWiI+SWxoDoh5NpBnwSaGk3/Y+xVwlzQI4GPGP6fmqghFHw1SNkQ58UP/AlI3yGdBX5U9iaIxzP7NsB6TXna/1byauO7Z1MtWZG8lV+bwqa7AEl9QZ2x8wasdB7WIHp2GohxiiC3gHTtntGIiXxgrmkHXGOI9Wr02iy9iCvLFJj1/trvwrX9MyKxICHqhGE6Ts9K8ZATFri4wAGZZV36AD0Lc/9Lg6hBI+IfOHISK1w==;31:RQXPEVy9g/GJErtOWDDABrK2g9cIB7zw/9HwDPPNBAih/9nbpsG5BiaaHkGYQec8tVS4lBVML8ves4RNYa2fRZzZCwTbAjUplNDopGzZvB+5pIcK7bs2uWTcKFG6uUAUVkYzLzyWG3Bl1LjJoQ9dzJQsdVDjbky2XHVe5B7sCM8z94GDeSXfOjrkUZcpwE2SUe8nTYYFjuA7fn6JcazqPuPQZQw8K5IRaTAz1051DTc= X-MS-TrafficTypeDiagnostic: DB6PR08MB2823: X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:wg++XN2gyJjZwl+/eUKldyLOeMu7UhViEJ4ow+b9VD0EbPvkI9Q4cwuFPSR9t84HUfIfupiOJ0ARl67aKOvXg7rZ9zeN8ePhRxxEGFVus5hhZZ+ajo2GFAL3aMlbg/+LDhB8p4mDo0722QdQYYXU9M8ZLCuYZCspmcGfN5zmaBYRafBcCqccCgsP17+gv/e9vcXAos/0Zpx/emc4SwdpASoO5DLcGaLbZkghbrsB4p29p5iaWVqbBb7o9SPHoCDhDfDkf/2V/mTcA+k2Mtt2C+Jht24NknpBZknMkkuG/XET6jILNJKzMMskEpBIzSgpPac6sPq8Hk8AhyTdo8JxweVdht6JwY9mqdTFozHi+tWQR4qaQB3JPxm0L2Apnsotz79vcFYz5cgY7pCnLTAyzbSFsKd2L5mRSrgOYGnO5zI=;4:UOQC2pTNXoJoaaPsVB4Te80yo/gYSnGF84XkM4oWjf2rHH1XOi02Cbx32SF6nJUEit3lWx+IJ8Du1QFxyXwvSJeyghyie4TEAWd1I/kEpzi/jg4fgdeER3tKVXBGJmxb+Bf5oitaRZqTclH/JCm5g7ncY1ARkmeh0beicHUv8XabdyaKdLS7tQXDW2QGI+RpcY8aYf6y0xBadAgmSnJvVyW6AzlwikcUe3CY37hdpye2jHecM5Wb6rzcdAQ9AE5Kd6InmnMrtU08XLaWdDmBxg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231023)(6041268)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:DB6PR08MB2823;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2823; X-Forefront-PRVS: 0527DFA348 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(39380400002)(396003)(39840400004)(376002)(346002)(366004)(24454002)(199004)(189003)(377424004)(478600001)(6486002)(2950100002)(50466002)(77096006)(16526018)(59450400001)(52116002)(386003)(53546011)(55236004)(76176011)(230700001)(3846002)(2906002)(7736002)(229853002)(6116002)(8936002)(31686004)(81166006)(31696002)(81156014)(25786009)(39060400002)(4326008)(8676002)(305945005)(6246003)(53936002)(316002)(64126003)(58126008)(36756003)(68736007)(106356001)(86362001)(105586002)(83506002)(6916009)(66066001)(6666003)(16576012)(65806001)(65956001)(5660300001)(54906003)(65826007)(23676004)(97736004)(2486003)(52146003)(47776003)(34023003)(148693002)(142933001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2823;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4TUIyODIzOzIzOnhaNFd3MjJsNS9rQU9TQUExT2JTUTRqQXNP?= =?utf-8?B?QzAzZHdjaUZBTUovbFh3TXdiQnVrMEp3T3pVZDhNem9lT2N3RGNOUkVmcFdG?= =?utf-8?B?MEtnVFhMeGt6dndobFpZNFFwYWVSYlhVMlQxdlNRYms5WVhmRzN6eTIzUnF3?= =?utf-8?B?TUlkWGVnZUFVbnN1SXppdEU4UEM2MHBrUE1qd0JFekVLM0hKT2U2YXhpUVAv?= =?utf-8?B?dTl4Z1p4UlgzZVFqL3BBQXk3Z1M3d21QTGlTNXZsTlJyZ1k2SnJseGZweFJo?= =?utf-8?B?SjYxSklEcEZUR0RwL2F5OXFCNFk4bi9YNG9VSkJJcWdiQlBacW5VNmZudENE?= =?utf-8?B?QlJEUUhYb1JwL0xyd2pRMnBDQUk0ejJoTUh3cTZ5QW12Qjc5bDduT25EVWg3?= =?utf-8?B?QUlIYndXa1RkUGdWZlVESEk5VGNKa0llKzB6K3VkZk9raXZ5Mm9nUzVUNHp1?= =?utf-8?B?b212dm9SY1U0bEJvTzBiZGc0QWtueFJndzJ3MERBaUdVeVhHb3hhbHRKM0t3?= =?utf-8?B?Mm5iUnREdUh5VEtPQnI4NUNIei9IQzlVV29BZXhEdnZnQ0dEUzFDTDBqL2F6?= =?utf-8?B?QVk5b2F0dGUySWVzb0ZvTmxYYjdHN0V1dXYvcXlUVUFrVlB4bWorOGlFTUdU?= =?utf-8?B?S05tTExwRHhieEtPTnEyTDM0cU5Wbmo2dGJJa3NaR0kxMHAyazBsM0JYSThG?= =?utf-8?B?N0FXd3BDeFl6NDBCV0IxZm1LcEJXVlFja1d5S3NvQzZSZEliRHhTaGQ4Um53?= =?utf-8?B?ZWVtd3BLNTFCTXhhYWJMK1M3Y1dSUUVxTm9HN05UT2VDa0Y4Q01TanhKbS9p?= =?utf-8?B?THF1SlhRYVhqQUJaSVd6eUoxTktVYUx5Vll4NjBSS1dCb053Tld5clorL291?= =?utf-8?B?YXBLeVBuTWJ3OGlIWVVUdXpER216V2VqQzhkbWlQQnVOQS9vTkZpRlBLNUhr?= =?utf-8?B?aEdzN3RxM3dNZFBlMFRHSExIS3cvZytqZlJJNHk1UEdzQnhpT3lmWDNieHBX?= =?utf-8?B?S2Y1cEpuLy9rcjJqaWQ0ZE9OR2swclhHRjlaUUF0OERrTXdVNVpURHBUYTha?= =?utf-8?B?VS9PMHFCaGN5cEl1V2ZLenpOUkZSM0E0VFlyWDNlc0wvV0xWTE5ncFJ4QnBk?= =?utf-8?B?TmhJQTNHTE1qallkQ1hqbkxjNmNsbUtvTXl4S2xhT2Q4S1dRUlhHQk8zdUpX?= =?utf-8?B?MkxoMFVtSnA0Vlg1OE5YZUFkR1dWMk5PYlliRGI3QXVHKy8rcjhwZFd4ZjFw?= =?utf-8?B?L1ZPOEtmaThaeWhUcWF6REJVeERxQ2pUTTZYYk11ZmE3RHBoRG95SloyY2Yz?= =?utf-8?B?UVI0S1Z4UXpsQ0R5MU1MWDkzWTdGWjhtQVdDNlFwZHR1c1F2MzBDZ25QVEZa?= =?utf-8?B?YlpMbmhyK3dOTUM0UVQ3ZkFMQUU5alVJYndNMFl3OFoydVJ0L1dWTGJ5cG1W?= =?utf-8?B?K1pmQW84Z2p2d0V0ZG5lT2ZwQkdIN1JHWXdQczNmZWEzMU1PeHBlUUgwMVBU?= =?utf-8?B?ZCthSUdiY055ektaUExrTDMwYTZQdHoxcG93NlZXYTlhV3RaOU9GZERpWTNR?= =?utf-8?B?WUxHbmpveFN0ZVExQ1hmc1lXQ3AvaXNwdURabG44eGdyTnpBS0tkdXFPaVRM?= =?utf-8?B?YzVxbTgzT3MzRE5NSmMrOXJ1dVROQzBvZC8rVW5hWXNSQ2dsckdzOGpnVUdv?= =?utf-8?B?SnkyVU1rdlJkN1I3Yk1TZDNqWkczeVd3NFlBUjdjQnNIYmp4WlM5NlJDYk51?= =?utf-8?B?dGhEcFZDVEdoQytNb3JZMlRJNTRyWGxlbU1JTWlpUGs2N0pTb2dsWnp6UmM4?= =?utf-8?B?VUdKU3U3SlpySm5zQ2gxTHhxOUwvSVh2ekdKRm1vSGF5bnBORGRQcGRhTmZo?= =?utf-8?B?Ty9kbE5pWG5RNml2WjNJYWNWSGZXR2JMcElVQlRaQlgydlpLUWhvRnRTT21N?= =?utf-8?B?MnlsWlkvWGJvZi90U0FYRDJ6WUZqK0k3SzdycW1NdzBqL1VNU0w1Q2pvREtu?= =?utf-8?B?SjZPSEg5YkRKWWlIREdsajJHTGsyTHFPQUhicjZYRjY3V3BtT0NGQTFibHg5?= =?utf-8?Q?4TB/bhA26ImXe82XJBKoSITDN?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;6:4ktKqSL0PTTRWoUL4bk6a7z2NHMuAsf/uqYOaPRwhi5K/a3FmdXNIhOkYkPMzbk0AZrTRDF4y5J4cpZi1ncZYtCrTTGXIdyCi27Sjc4VR73YpLwvKFB4rbO665Ct/aWePCbU23AI8ft3yMOZZwK9ySE7VKyvG05o4Jy1cCxS090o0EDzU/9KevdKLP7N7+/f20qEyDZKYOkSrKw+5JkaTrQKD/a/EtJIU0vIGhgfx+BNcoxhgj4qdJKWB4EZa/eaPtNOb50nNPOTa7J2/SOhGJIecGo/yygtZBIEDVgZlIEDuWsxSuseEObNBrJavPH/7h/vyyx2AWuKNOAb2GBF4in6hKABsqt+ArmYd8v/uFE=;5:XyteBdoa1r5dGQtBs24x4A7ZWl3QodtDgT6ADuJJRBZQNHdo5cxwzesEYH187urMrsDesY5YwFGu8Q9qJbdECuOB9WzXkWG55+3BlXwcWCa3cpKKxA96ik6R0pbaorPYh/8XQWhqlRMRnK4nTTLbH7FPhyCMiM8LQDSf4VuYDx4=;24:KPDwLens2zOMoJgFcVlc8rr35D/3CNe3VGRCOPOQyi+PpbfxndIyUJMdywu03vPTwoiCwFv72Kg24UObONM2aHAxUq0K5axhYX5Oabt+xIY=;7:McfTIVX2O9GRjxW4KJm7DD+kTuXKGWTvBjMYvi9kuIL7ISwRSPMzDlEDegQT7IvCH/+RAD9VEUTqAlxJKZGQYbmnSK835fcTgj+VKm9x1rctR5qRo42foHHo+ZG0Wjlhk6mIT1jXxive38CceZ/weH6mD9aGhq+j9UGq+adbh3ixqt8qj46ic2ofC7QDnXtXepeSoVvcr1dg2Eq3RoKDRWvZUBa/yoZWghDiz10j/4iIRjauhzx5KdNgU+woVDF7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:+x+D8zHpg62wiJuu/XrTqH33ECX5b5NsAt7LaBRKNaoOAcMBQ7uajvUdky6DL3pn46+HbnGkw+K9fWVrpsFbbFC4EXwuXfgIxFzS03tEan8MVVLUvhSyOjcyIA6l91YRnsZRGMiX3An9JeF+PNzpOBjgCaGmI7uVEo1mDDmo9NI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2017 11:28:38.1079 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b8fa0982-1d53-470b-7fea-08d5479cd0ec X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2823 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/20/2017 01:33 PM, Michal Hocko wrote: > On Wed 20-12-17 13:24:28, Andrey Ryabinin wrote: >> mem_cgroup_resize_[memsw]_limit() tries to free only 32 (SWAP_CLUSTER_MAX) >> pages on each iteration. This makes practically impossible to decrease >> limit of memory cgroup. Tasks could easily allocate back 32 pages, >> so we can't reduce memory usage, and once retry_count reaches zero we return >> -EBUSY. >> >> It's easy to reproduce the problem by running the following commands: >> >> mkdir /sys/fs/cgroup/memory/test >> echo $$ >> /sys/fs/cgroup/memory/test/tasks >> cat big_file > /dev/null & >> sleep 1 && echo $((100*1024*1024)) > /sys/fs/cgroup/memory/test/memory.limit_in_bytes >> -bash: echo: write error: Device or resource busy >> >> Instead of trying to free small amount of pages, it's much more >> reasonable to free 'usage - limit' pages. > > But that only makes the issue less probable. It doesn't fix it because > if (curusage >= oldusage) > retry_count--; > can still be true because allocator might be faster than the reclaimer. > Wouldn't it be more reasonable to simply remove the retry count and keep > trying until interrupted or we manage to update the limit. But does it makes sense to continue reclaiming even if reclaimer can't make any progress? I'd say no. "Allocator is faster than reclaimer" may be not the only reason for failed reclaim. E.g. we could try to set limit lower than amount of mlock()ed memory in cgroup, retrying reclaim would be just a waste of machine's resources. Or we simply don't have any swap, and anon > new_limit. Should be burn the cpu in that case? > Another option would be to commit the new limit and allow temporal overcommit > of the hard limit. New allocations and the limit update paths would > reclaim to the hard limit. > It sounds a bit fragile and tricky to me. I wouldn't go that way without unless we have a very good reason for this. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Ryabinin Subject: Re: [PATCH 1/2] mm/memcg: try harder to decrease [memory,memsw].limit_in_bytes Date: Wed, 20 Dec 2017 14:32:19 +0300 Message-ID: <6e9ee949-c203-621d-890f-25a432bd4bb3@virtuozzo.com> References: <20171220102429.31601-1-aryabinin@virtuozzo.com> <20171220103337.GL4831@dhcp22.suse.cz> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=N2e8hybeoxs/0+UgEg7PozcwwpD8GRD/yK+GPTdPAX8=; b=JHrzE5CalfghS3+ScvvzfUbbFrGHiXgzWKQVmI2QnEya0+BEXfVQiEV//zOAu8uJHftIzOFEHVMSoRxlsy7QPWqP97SaAe/iyrzg6Hem4WQklwEiANlXFj3SEVG+0c+dnVwMT+OZxJX8AWfRYWG/0KcviUBxD6DuSP8l5qt7cNM= In-Reply-To: <20171220103337.GL4831@dhcp22.suse.cz> Content-Language: en-US Sender: owner-linux-mm@kvack.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Michal Hocko Cc: Andrew Morton , Johannes Weiner , Vladimir Davydov , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org On 12/20/2017 01:33 PM, Michal Hocko wrote: > On Wed 20-12-17 13:24:28, Andrey Ryabinin wrote: >> mem_cgroup_resize_[memsw]_limit() tries to free only 32 (SWAP_CLUSTER_MAX) >> pages on each iteration. This makes practically impossible to decrease >> limit of memory cgroup. Tasks could easily allocate back 32 pages, >> so we can't reduce memory usage, and once retry_count reaches zero we return >> -EBUSY. >> >> It's easy to reproduce the problem by running the following commands: >> >> mkdir /sys/fs/cgroup/memory/test >> echo $$ >> /sys/fs/cgroup/memory/test/tasks >> cat big_file > /dev/null & >> sleep 1 && echo $((100*1024*1024)) > /sys/fs/cgroup/memory/test/memory.limit_in_bytes >> -bash: echo: write error: Device or resource busy >> >> Instead of trying to free small amount of pages, it's much more >> reasonable to free 'usage - limit' pages. > > But that only makes the issue less probable. It doesn't fix it because > if (curusage >= oldusage) > retry_count--; > can still be true because allocator might be faster than the reclaimer. > Wouldn't it be more reasonable to simply remove the retry count and keep > trying until interrupted or we manage to update the limit. But does it makes sense to continue reclaiming even if reclaimer can't make any progress? I'd say no. "Allocator is faster than reclaimer" may be not the only reason for failed reclaim. E.g. we could try to set limit lower than amount of mlock()ed memory in cgroup, retrying reclaim would be just a waste of machine's resources. Or we simply don't have any swap, and anon > new_limit. Should be burn the cpu in that case? > Another option would be to commit the new limit and allow temporal overcommit > of the hard limit. New allocations and the limit update paths would > reclaim to the hard limit. > It sounds a bit fragile and tricky to me. I wouldn't go that way without unless we have a very good reason for this. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org