From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752900AbdLEPfQ (ORCPT ); Tue, 5 Dec 2017 10:35:16 -0500 Received: from mail-eopbgr00110.outbound.protection.outlook.com ([40.107.0.110]:18206 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752610AbdLEPfH (ORCPT ); Tue, 5 Dec 2017 10:35:07 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Subject: Re: [PATCH] aio: Add memcg accounting of user used data To: Michal Hocko Cc: axboe@kernel.dk, oleg@redhat.com, bcrl@kvack.org, tj@kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-aio@kvack.org, jmoyer@redhat.com References: <151246799787.29619.13497559380263553588.stgit@localhost.localdomain> <20171205151532.5evofjjma2zg3kte@dhcp22.suse.cz> From: Kirill Tkhai Message-ID: <7f440fd7-872e-ff17-a152-6ef6dbd10a4e@virtuozzo.com> Date: Tue, 5 Dec 2017 18:34:59 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171205151532.5evofjjma2zg3kte@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: HE1PR0102CA0019.eurprd01.prod.exchangelabs.com (2603:10a6:7:14::32) To AM5PR0801MB1330.eurprd08.prod.outlook.com (2603:10a6:203:1f::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c15dc21-76ab-4259-4a89-08d53bf5c133 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603286);SRVR:AM5PR0801MB1330; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1330;3:tWcdvZCnm0wu9ZTWTxx5LRE2GmVqGrSt/6XVN2OhvMppgERgqMcauuLgrTHKwas+zzLl0POxdauK6GgNhbK1eQzwpzNe7QGyOAp8Q94OSVSOz3ztS3aEye5LhyPcwxRXcdOVbHvK+D47T1WyB9xbcK9ge7jaOL20YroWf2j+hCBK6CzAGBfkZPbDs/CPrqVxzAROTShUlUy8MyVNZoZQek7SV6d7fsHPq4sdJgrpcfOK5VWE89JB910pzi0iDDpu;25:5W1ALMUkL9EISagh67WHTPSZpn/B5nx6QsVNM/SpHzQyyyIOqk01r9/pMD0NaYGCKL85KtpwHg0/zymyy4fnsqSMan/F8jN+JEc0m5GTPHZLNocKQT6mTlz13O71kySBX59NKAIJ80Xq/36lcvsA4eQ6Xofg0llWkaj/YFGJKJSkGldfypATHFoXVHrN9/t6hu5XVyUACtVrZpOBhkHwHSgG3PDknga77erh+akGWk+APd8skRm+HeTxCEzSKhpLHTb2GSzxLvMwI3wLW709iK9iZHlwJuKGFJ5UUE79kW2xsEj+gLT9WM5OH85An8AjyJ0U5tzadNkFSah8lKw9UQ==;31:q/BW4woV6j/nCzvEBh/Dxi5/shv7o9dfgH3St1wIWTC+ltsQSgqo6IiQlvFH/5A/cTu5HEmIVjSD52LOW0CaFJjpIwPjH0AMdBzz0GO7TLg6L1Jw1aTqrYdR2uo7ASK6PE6JVPzd3aBurU6BWm+DMnyCJoVJ+TDeF1xWRWj1SDfokDyqZqJHo97YXLEYnlN+AEIdo8jN/JLKswOTExTUY6KCwUL6NNs7/cQ87vO7Fh8= X-MS-TrafficTypeDiagnostic: AM5PR0801MB1330: X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1330;20:D+1tv1mwkeYBKQoxSzTYyWhf6OnUuM04WGdCLQCCA+hHwSbnHe+L3+WadSSXPlg8KoHU9BXjZJfaIIMTWXlr1BhnED1z4HQiPifj4LUT6GwjQWNlHXYdfiU2QK2U8wdB8iZkYgG+V90vf+02K/lX2MH1ZO1VTTBnsDGFHzCrFlZoimLVPG0yydsGrTmvaIpTsYOJYOUHUmWK1NooO6NFs6ufl43lg4fdSNsmPoeDJ5fN4C3VIjcakQqQPPiFNhrEpmf1KYvv8luHtQD6C/UVGP/zBCQPJuYN/I4P5/IiMcyLRNY7D46UWNzzxBYMOhky4yJn3kgWKL3SuTtrf6E+VBfvfSbhSMGtBU0q7UCs23rMzP6wpRv9Ta/KG7HG07NONTjLWLMkXPyBy7in9REQNS1NrVJHTesJtZHi6FD+8pc=;4:fEN14iHgqD3s7ix3vkjMYILxmLNXGUaxelilotHQK4P/PFDYoBl4kOvjuIihaF4mLxYAka6SgnnQ/yWpvtjuvk8mnAzalMZ1uWSyy/vJD85GuAI8/ErrkM+26T/S6AXYBQr48viQ1NTz0JT8hvjSnYTkbNHAenAVCQ0mgJWc8gMQFqwePGvbbYqQj6l/aUNuVRj05q98J997wIU/qvrussWEv/8Xr/0+0JNEXbkzZ5QyMLcrQ/a8Zwp3WbSD1NWHwLeNDYRHqSGkgSSTB8VZvA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(3231022)(10201501046)(6041248)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123562025)(6072148)(201708071742011);SRVR:AM5PR0801MB1330;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM5PR0801MB1330; X-Forefront-PRVS: 0512CC5201 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(366004)(346002)(376002)(189002)(377424004)(199003)(24454002)(4326008)(101416001)(31696002)(229853002)(2906002)(86362001)(15650500001)(25786009)(16526018)(55236003)(83506002)(77096006)(6486002)(65806001)(31686004)(305945005)(53546010)(8936002)(65956001)(66066001)(33646002)(7736002)(316002)(16576012)(58126008)(81156014)(230700001)(105586002)(3846002)(81166006)(6116002)(53936002)(106356001)(8676002)(6666003)(6916009)(2950100002)(65826007)(97736004)(478600001)(47776003)(5660300001)(76176011)(68736007)(2486003)(50466002)(23676004)(36756003)(64126003)(189998001)(52116002)(6246003)(52146003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1330;H:[172.16.25.196];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA4MDFNQjEzMzA7MjM6ZzNkSHNmNVVUdjBFMW5JQ2IzeVBEdWJt?= =?utf-8?B?K2tnT0RYeW5Ca2MxRmFQcDdCb1oxd1dldC9VQkRHNTM2OUUyRVZ1bHRnSnlX?= =?utf-8?B?Z2tqbmRXNG1yTUNBMnZhSTkvbGFmNjVOaTJxRDN1TzZKTVJjMzB2cE5ueDBT?= =?utf-8?B?MjJCVkxha0J1R3FGM3VYbE1DMkczQWpnZ3BWSDl0WnhxOTNtd0tobkdvaFBU?= =?utf-8?B?RkF3c0ZyRXdXRFlwUWdVbTZzSDkzT0haMFpPZWhxNWMrbzhuc2dLbWJxa1dO?= =?utf-8?B?bDlhVFU1Y05NUTBJdVZPRGdIUnB2Qk9KZGRwNXpkRHpxMWI1akozRU9TaWMx?= =?utf-8?B?d05wUlBKNVdrTWk1cmtURE5tSG9GNzNEVkJMTURibTY1WWRzcVRXNTEwdTVP?= =?utf-8?B?dk9oL0hEcWlHcHVBM1kyQjBHUXVNbDVTY1Y4U1l3N09lUjB3UUlFZjNETHlr?= =?utf-8?B?MjB0MnpOS0lpdi9FRVFSWnM1UC9ieXcvNm5pbHZIQ3hrajByMlowbU1zdWQ3?= =?utf-8?B?YjVFOXRlZXhuNklGWkpZVlhrYlE0NFZnclRJMEJwUjJRVDh1VyswTTlFSVN4?= =?utf-8?B?c3lTM1Nld1N1N3RnbGFMVlZFRFAvb2RwZVp3d1RRQVVVdTRSSWU5VWNZem9p?= =?utf-8?B?TG5FQ2VCZWFoQWgxaFIvV254UzlMV0plMTBBVVRDaHFxYXZkUTVxcUIrRkhZ?= =?utf-8?B?QW1HQUkxV0F3T25iQmMveXlHazJ2MmZleEJtZXZFM2RJWnloTmd4SG1lclRw?= =?utf-8?B?WFVxL0ZoZ2Z2VXdwMk4vbGhzMTFrWnc1Mmp2dVJTQ2Q3czJ2N2l5ampJNTBD?= =?utf-8?B?Tml3SXhFeTRJNzNpbTZGazZyRHdEV21xc0RjMHpHejdKanV1dUtwVXNmT3pL?= =?utf-8?B?akpQS2JkQkpQNjY1SXZyZTJMY251NFNJMVFjeld6MTVOR3FsNFdhdlRiTmhN?= =?utf-8?B?dzRnL1kxTTVtUmRjOEphRU9kRGkxREpCdU1rNGJDWWtybW96VnMvVDVnWlRS?= =?utf-8?B?ZUhFT3JNKzkxbVZyeHpYbDV2WEVEOGRWSEpvaTRlQm55Sk9PZjBEbzFDVFI2?= =?utf-8?B?aGZ2R043NUJXSllNTzFsRHg1VndKbWhjZHhyLytkSVQxaWdvcS95UVJJVlg0?= =?utf-8?B?ZDBsWjVlTzhDUy9xdldkQnVzNVNMZkE2THYwalB5Rkt1K2NvcnBSUWZ6bUh1?= =?utf-8?B?OHF0a1BjbncyempreWNaYzJ5eThoMldyNEhMTXZ1SHZ1YThPVjZ3SDFlb1hp?= =?utf-8?B?bGUyVmdVYWV3SGg1VllheFBUSlpCbzhhSFo5c09xQ2pVVkc2S2xsTDZYczVS?= =?utf-8?B?bU9WTXJWVjY4NkN3QzNjbS9lUDEvWGNZKzByQVZHeWo3SjMwQWdNS3NLeXZZ?= =?utf-8?B?RFpKMk0veUNrK2xjeWk4a1NnYWJBamFDeW52ZFhjWlRxK2tCbXBZRVh2aGpy?= =?utf-8?B?R25LZGdWUjNuVE4wS0wwUzFQdEZROWhnVmt3UjU0bC9jZ04xMUFiMWRiUi82?= =?utf-8?B?ckNudDVXSzZzSkhHNko1NUZLVFdZSVV1RjNIQ3F5QU5vd2g4dXRKeC91S05v?= =?utf-8?B?MGYzdlpPMkpnOWhGbFFQU3Npd2ZLL0ZWai83blRqc3daaGhTMDFGUW5VUnZp?= =?utf-8?B?MTlEVHhTTWNmOExwM0VxeGorUVY5dDJya2QyWUw2M3hEeHg5Yy9xRHYzdVdu?= =?utf-8?B?emJUV2twcUlYdDM1bDZWUG80QUo2Z21MUkVhZDM0cTNJaENuM01obWZibmN6?= =?utf-8?B?WFhYZGRva0N6MC9mQy8wOHpsL0RuQTlGUyszcTlMaC9vRkw3OU52eSt0TC9H?= =?utf-8?B?L2lyMmo0UmpsVG9kRXdLSGp6aTZLVGprSXJHVUp2Rm9VNE1Va0E0WVlGemh2?= =?utf-8?B?Nll3azlRaUo2aFRWZjZ1U0x1S2I2MkUwdTZ5SFVWZ2RwUk5CMXRBUTdFS1g4?= =?utf-8?B?WmtNcTVuY0xlRXc9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1330;6:3ejZ8j25aFqkWgZhF1aGraOp6HLKHJzMll6i1Ef+ix+Ei4E/+r3aCphvk6E1Ag5l+iUO/NbAKNFuHrQyZBMsmenlk/BAEqKbOCe7U41hhlN+1u4NBFuH55TUCF8qy4ehLrZ16TD0jQ8y8aScAhuaMQuMERmEPkK564HUF5QeVVpksCtnZ2dO/6S01Tb16jOiWL2L781ekWg5M9cGHxMmwXcMCSISejPk0k73jl/rTGkLHwV943rTA1c2EI5u935s6GQk4ag1R9saeXIq6F4EUmrbq2CDG3k0BELwZck3mMyJWmupLp0j1WpTE2mFxspj6U8sfp7t0/wAtYaoCqZKIbYCWCR5GN3CfTziaGNrIps=;5:rtGaTTnBUnPCK0eDhlOgx9YsV3HQE73xb2LkmEG1Y3fMH/PcTkeoj+fZylgz4PF6xSVP0Fx38ayJQ/EFlxcUs0mh7oz+Njtg81UPoWICB2E+UJAXc3OFUpervhAJSPVaKtWk9Eo7H40XLTERnyg7EIRgLMU7BD/9WOCI148bpqg=;24:ErZh1sdNr++mHQc/XmZiv2daKKOoIlJnI9cda+Cz01C8kyeN+yr97VmVFtSInL5k2M7PwW0/zOhYAJdc4Fr0ktl0ak98ncTShKlOQRPXM5A=;7:r+AOUBxxxKg/rtC2z6fEeyqOsmN2FUQ4Da3LmuEcpdtVwDcdLrX4MaDi8uln90AwNUVnsjE/5sc2rI0e9l8g6TSfzLJ18psIn23K48xa8H6/wrwxCcVv29xNHIbxuuNloWa+qYVml7JZKso5BRMazapGHuQmDj3MpMyh72T5zodwgVbOzF4TyBTbMVJREYAGhiUdVs6ZhOIwH33YQZXFit3FL88QkY3pxrM20wXffgobMkK8Xs4OSM3TVMxm/EoZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1330;20:cVjlft0Q/qi1xD/0Yxl3LjGt3/Pk/NK0yZVJFgBs7r7OqcXBcmn9Og93V6U6EpZ8A7j6xJJ/ROnW4DDV7bRcw6JcDPgRG7BoNev8fSRlf70fe7v77VbXvC5ktIk2mWewjbHnMXYnODzhipZi1S1L5EliowlE/lMwiW90iReV7SY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2017 15:35:03.0620 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c15dc21-76ab-4259-4a89-08d53bf5c133 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1330 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05.12.2017 18:15, Michal Hocko wrote: > On Tue 05-12-17 13:00:54, Kirill Tkhai wrote: >> Currently, number of available aio requests may be >> limited only globally. There are two sysctl variables >> aio_max_nr and aio_nr, which implement the limitation >> and request accounting. They help to avoid >> the situation, when all the memory is eaten in-flight >> requests, which are written by slow block device, >> and which can't be reclaimed by shrinker. >> >> This meets the problem in case of many containers >> are used on the hardware node. Since aio_max_nr is >> a global limit, any container may occupy the whole >> available aio requests, and to deprive others the >> possibility to use aio at all. The situation may >> happen because of evil intentions of the container's >> user or because of the program error, when the user >> makes this occasionally >> >> The patch allows to fix the problem. It adds memcg >> accounting of user used aio data (the biggest is >> the bunch of aio_kiocb; ring buffer is the second >> biggest), so a user of a certain memcg won't be able >> to allocate more aio requests memory, then the cgroup >> allows, and he will bumped into the limit. > > So what happens when we hit the hard limit and oom kill somebody? > Are those charged objects somehow bound to a process context? There is exit_aio() called from __mmput(), which waits till the charged objects complete and decrement reference counter. If there was a problem with oom in memcg, there would be the same problem on global oom, as it can be seen there is no __GFP_NOFAIL flags anywhere in aio code. But it seems everything is safe. Kirill