Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932589AbdHWSFd (ORCPT ); Wed, 23 Aug 2017 14:05:33 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:48229 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932111AbdHWSF3 (ORCPT ); Wed, 23 Aug 2017 14:05:29 -0400 Date: Wed, 23 Aug 2017 19:04:50 +0100 From: Roman Gushchin To: Johannes Weiner CC: , Michal Hocko , Vladimir Davydov , Tetsuo Handa , David Rientjes , Tejun Heo , , , , Subject: Re: [v5 2/4] mm, oom: cgroup-aware OOM killer Message-ID: <20170823174603.GA26190@castle.DHCP.thefacebook.com> References: <20170814183213.12319-1-guro@fb.com> <20170814183213.12319-3-guro@fb.com> <20170822170344.GA13547@cmpxchg.org> <20170823162031.GA13578@castle.dhcp.TheFacebook.com> <20170823172441.GA29085@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20170823172441.GA29085@cmpxchg.org> User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [2620:10d:c092:180::1:48ae] X-ClientProxiedBy: VI1PR0701CA0031.eurprd07.prod.outlook.com (2603:10a6:800:90::17) To DM3PR15MB1083.namprd15.prod.outlook.com (2603:10b6:0:12::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca075257-1ab1-40e8-7ae4-08d4ea517b3e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DM3PR15MB1083; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1083;3:KY6vZBXrt7ZE2Z/D6qwH65oFcYdZfh46l+N4VSsXYmKFzmd42U/MkADI0Amrdc21tSl7tMXlfDs/bz/raN6b6kF5VSGC/NU8Os/0dbMm4qYv9hoawdB2QsElWIasRnM9dOh5PU/AypAd4Oa9pY0MRdH4RQ/Bva2U094YrSq7VkVXoPimHXo75nNbUE0cU1AB8ORRPY4XcoaMnApx4eFnA96PgBQz5+jJn5vdTixVztOHNfHXcY008SNtLVwpaKV2;25:nJrTPscmOsldWShU8ssrq3JtG9uzAgM+MlVk1w0fLIszPFJeJoMr9kOAf6/IDZOsCsD/b43GxlbGRbdYaMP/3BGiAEfmznATjJSQN69rrvgk8FzJayn4+VDX6YoqrGjXZEwq4WT4KdfuH5hH7/eMEl3oQlxI8StiCeFBVvwIgTvZ7hpGuZFtqBt4DM9ZXv/ogIv7DVdOus/twltamSwxsYinAzBO1Tg+kb3OvBslaOQmuAWjvTvV51laX7F76cMM0D9X8ifS5j1VYCy6f2q2Xl6JZouzo8oPJT69fGIPBJ7H1L4WX85J4CKplDahFGbJlIFZcRqf7i/ZwCpWVFv1rg==;31:Y2fvjymd6PKSBM6GMC11A2kKtueDJgkUdFVna5dfdg0DycQAT0clfYfuwYWAkPCAQadIxUcHkek5jLQ6BGnEB0hKOeWNSYcXHDgaTUT80MlWZF9vIcZtnFlWxGnFgva1UHz9zq4qPIn0HfdDEh9bL0sTi5UjMqNV+t+wHv2J+ku369hcadFVicDqCe9BprsOAyZHhCudSQC2QAgy7oljhLzhu45EJznMkPkeVe9msQs= X-MS-TrafficTypeDiagnostic: DM3PR15MB1083: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1083;20:At+KUImaSflvWojs0OVoqor5ixFIdXqEe1HEt7u2uEy9KF3WBD+lbAVwMpVidLIPx5g5NQJsbPHeL0vA6IldVwoGyj7sQ6aE4mn/SHZheHRWtnoJtcrWVH4mNfAQ/u5Qc96TZw017OhSxKn72Mr5Uri4idWC3baRSg6ObjuPs9usQHYzffhOX8yF5Ei9zCHFtXsvHTNB1GVoQ1XgE9mqNl/djxH4S0VOQePNQxwgRrk3J3ayqiZNx6s0sIXkd7XQmJbtBbBHuqLwy2+iNT5yJdPJN0s77/xp46uIZ51A37qa75BSJszSjUmqmKQVZ4wMlnl4mBxiWZbMNUNZKEhpZ/auUTMloSTjHwS62flOt1q3JzG7dEWcjyKfINGxlqB5wXFhfYI81aJ11CsWmck2e9wuma+0MRMU5VcXHg5T2stWs7eL1MrcOsJO+R7aLqDs4uratBzxlSpDA1wQLeVTHFTaMcuzvrfVH8TuCu7L0p/wZzlqcF27oScj/uQ6GAy9;4:IJ02a4ipn/63+IS2o9rXL/yPA5Dc7zPVGOXf8s571HV+RWrTHey6YvehGR0Gka7I/1W3Ce+3MsXQR7sScOYHYNsc9mfvQkSiIok5Um78Pi4yJ+91aUmsalD94VvACxjK2O6rmsk/6N74SbJn5gRiIgZtV+rtauMQlLGtM4thTryWsY0gq3PfmGFTSEl/S75zZp0UQF6EIP6gp1E1rtL04FDwGE6MwSrkTiHEtGWxVCI8pPAsUTSxzX96yiUgZjyO X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM3PR15MB1083;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM3PR15MB1083; X-Forefront-PRVS: 040866B734 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6009001)(52314003)(199003)(189002)(24454002)(25786009)(8676002)(305945005)(229853002)(83506001)(4326008)(6246003)(6916009)(7736002)(2950100002)(93886005)(9686003)(81156014)(86362001)(6506006)(189998001)(54906002)(110136004)(97736004)(53936002)(6666003)(55016002)(50986999)(76176999)(478600001)(7350300001)(6116002)(4001350100001)(23726003)(101416001)(1076002)(81166006)(33656002)(105586002)(54356999)(2906002)(106356001)(50466002)(68736007)(7416002)(47776003)(5660300001)(42186005)(18370500001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1083;H:castle.DHCP.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1083;23:wt4fFb5vpNqDiALmvckbz4d9Imr5FC2ry+FPyQyok?= =?us-ascii?Q?d9+AbcF0cTsH53avCXNYnE+LrDiKkwC9855wfJAXgFeRdLFKMJpb38z3iHl+?= =?us-ascii?Q?6RGjp92Ovj61E1Ilh5X9lZ6LtdTXun0GtrX1DQiUswBg7zQ9gCFA4j9EoH5v?= =?us-ascii?Q?+cUcCuh5T6BJrkaFEI+QZOE1PMWIDGY3bHYNzdO18Igr99q44VwqkGTuPYSc?= =?us-ascii?Q?JqR90lrgrl01hkzca8dbJCLCTWDv5O+Lo++ghTEVMmplJizvy33ivP1NAB1s?= =?us-ascii?Q?ZvjIyEsFwrEtaufutGlWzNmU1RQwsxAfSMcdfa7nzbdINBSscZfGOwJOCusG?= =?us-ascii?Q?vcLKuhS+BsrROqbR6CkOr9bx7pEQ6pBvYiFFzMtXWowTYEEXPRP8qkHdigIM?= =?us-ascii?Q?zs20ADckD1uGp+yiAfdLQiFmkZoBYf3t4t8yAx1Kwyt3Y88VJjgFbys0HXI7?= =?us-ascii?Q?nbXvmnzaq9LB9DfWkvpndeFIvQ289ZYJlBKWKg9lTFKr2N8CQD71tjzUXW1U?= =?us-ascii?Q?CY+7O357YF0PmNLI1YRpsWshAayIy9FW+IOO7dfJybJAHWY8T8jzLjeLvC9K?= =?us-ascii?Q?YNxW9cxCVXEEUv/HyZywdXILgYnc1SgNRuEaFRU7Os3QGnEtcAnKXmB7qLp4?= =?us-ascii?Q?6WrX8WHV+TAsbaKv7uPwgmtsFQququrr4K8ZbPct7c0xrcWxjMxShDk8HznZ?= =?us-ascii?Q?jS/Xes5msKvrr0j5/1Ic9Tt0hukkk9I9GucHHIxYLEphvf4eu8ujPGmgaRmE?= =?us-ascii?Q?Gxh6aGBLL9vaZfIskhVnCmXo4XTA4OpluRvSi0Tpa7BJ59ZD9kpr9gLEGQAw?= =?us-ascii?Q?cKLIBVAhPJ9/6pwySqpWV34/49+S4+eZdW0/99c8eGz8ZkRlwleAqBa57ZVt?= =?us-ascii?Q?WGJS5G1AACA1Za9hPGSgMMNf72B7eZSQn/gnVfb3FuyY3Q97tvZZSLxuNLv4?= =?us-ascii?Q?wh5j2i9oFmhXTVJJjuqWG7ArSoR9UWHtD6ZW4aXyGVOmCEjcOeXi1xLRoqOT?= =?us-ascii?Q?OV+tafzr1GhF0WHQm6ADnXp8wh+M+LNIfz9zQa7ugnzmL90QAcyGPEhlFMQf?= =?us-ascii?Q?H9WYN/aaeeeGIUiOI0Q0m0A2GrEh/n0C3pLVAJcTWf5jMxeq9Vyfg/veTtLY?= =?us-ascii?Q?qDcOLAWCuOjcjl9jtdgm9u/duR34ZJTBk44RtqdfERvWbYAJtYY8fjCqfQvB?= =?us-ascii?Q?JB8grmBhk32jucn2a2CIyc90/ECtQoHXnvKzyUWYInGL4f+3+g+jqbN76UlG?= =?us-ascii?Q?RC89J2NdyqeWnj85LQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1083;6:do8CiEnC3/fK6Ihr8FkpAUg6ymb3PuUzZEphZmKRx53xxsJB6OvjhrvbCeKfcSX0GJwS2fCmRTNEvee4Q1bqzRG66MAKMJ+CWAXP4cgkPIS6Bla/8JoNC+1tsMjvgDP70CD3bcNm8Rw/PWc7EJNu+xmd2HQdilYjs0s6+YIGTjS+nzU4c7qbzEOXOA681wqvyWcyECVtQg4844uXL10O14nQEhUpIq+j7XbXuzBhgfJyKeotOc9z1XnCnYAAX1taDzXGllaXe6NSFwo00WCVWNu8q4WKO99NuInR8HgC525WK91qjWEmpQpyXsXW1cetfei953gvVYIfKfwQf5T3xg==;5:mlyQ14klIhLWe0aE8RXcRZedfFZ0b6rHUV/M8DJrkWk7ZCXk/v8BJezewTV4pXc6yiaSWswL5IjJaGBOJ9VeLT1XboJFLT7ogtnsCvO8vvUZdOT64fjX7YjuHCDQ564ulHvxX3NduPKF2Bd34elz8Q==;24:x6dBIJF1PPEW3PdZp4wjN7fp+BVCv1FA/2F7gi9T3WMG/Pdn/knvNTXOZVRZ3kdoQF3Qc1B5OHGc6tEKZB3jEHzFUVeg3xA3sIbKTt9+hXc=;7:8REUk5yxFcsBMEitLt8zMrimJ98epqhAMB7Hu8bmZEM7y7vT3YciUL//a+KnAldeLR1Fr2soWZ/wR7/NS3nOeCpcnoNIV+90S2Kno9kPMRTtL/nFUO999jFUp0efHQLRHbeXRmxEb0Fo24QG1bXBgO9cCBbNN2PHgOF5M8VWRlnCHZG5usyXGOcd4uB7eJ0Wodtam7BA5g94jMCy/P9ZamzQ/eYvXDlpKI44PrXzyb8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1083;20:ZMarkl2aRn431zhRydZIqs9XRkshBkLUUBZ4agakkFX29uOC5N+tS0JDzeQDp3+hayEADVdCuS12QUN0qDpHPIdzIUe1x2ttQgyUNVeKNYdLSNL5vlESCRKViLzPlICsnS4YAgiM/uglPwfwjZur1mIZGSMSkEeSBVV/rxr7u6E= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2017 18:05:02.3274 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR15MB1083 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-08-23_07:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3592 Lines: 95 On Wed, Aug 23, 2017 at 01:24:41PM -0400, Johannes Weiner wrote: > Hi, > > On Wed, Aug 23, 2017 at 05:20:31PM +0100, Roman Gushchin wrote: > > On Tue, Aug 22, 2017 at 01:03:44PM -0400, Johannes Weiner wrote: > > > > + css_task_iter_start(&memcg->css, 0, &it); > > > > + while ((task = css_task_iter_next(&it))) { > > > > + /* > > > > + * If there are no tasks, or all tasks have oom_score_adj set > > > > + * to OOM_SCORE_ADJ_MIN and oom_kill_all_tasks is not set, > > > > + * don't select this memory cgroup. > > > > + */ > > > > + if (!elegible && > > > > + (memcg->oom_kill_all_tasks || > > > > + task->signal->oom_score_adj != OOM_SCORE_ADJ_MIN)) > > > > + elegible = 1; > > > > > > This is a little awkward to read. How about something like this: > > > > > > /* > > > * When killing individual tasks, we respect OOM score adjustments: > > > * at least one task in the group needs to be killable for the group > > > * to be oomable. > > > * > > > * Also check that previous OOM kills have finished, and abort if > > > * there are any pending OOM victims. > > > */ > > > oomable = memcg->oom_kill_all_tasks; > > > while ((task = css_task_iter_next(&it))) { > > > if (!oomable && task->signal_oom_score_adj != OOM_SCORE_ADJ_MIN) > > > oomable = 1; > > > > > > > + if (tsk_is_oom_victim(task) && > > > > + !test_bit(MMF_OOM_SKIP, &task->signal->oom_mm->flags)) { > > > > + elegible = -1; > > > > + break; > > > > + } > > > > + } > > > > + css_task_iter_end(&it); > > > > We ignore oom_score_adj if oom_kill_all_tasks is set, it's > > not reflected in your version. Anyway, I've moved the comments block > > outside and rephrased it to make more clear. > > Yes it is...? We only respect the score if !oomable, which is set to > oom_kill_all_tasks. Sorry, haven't noticed this. > > > > static int memory_events_show(struct seq_file *m, void *v) > > > > { > > > > struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m)); > > > > @@ -5310,6 +5512,12 @@ static struct cftype memory_files[] = { > > > > .write = memory_max_write, > > > > }, > > > > { > > > > + .name = "oom_kill_all_tasks", > > > > + .flags = CFTYPE_NOT_ON_ROOT, > > > > + .seq_show = memory_oom_kill_all_tasks_show, > > > > + .write = memory_oom_kill_all_tasks_write, > > > > + }, > > > > > > This name is quite a mouthful and reminiscent of the awkward v1 > > > interface names. It doesn't really go well with the v2 names. > > > > > > How about memory.oom_group? > > > > I'd prefer to have something more obvious. I've renamed > > memory.oom_kill_all_tasks to memory.oom_kill_all, which was earlier suggested > > by Vladimir. Are you ok with it? > > No, we should be striving for short and sweet mnemonics that express a > concept (oom applies to group, not member tasks) instead of underscore > sentences that describe an implementation (upon oom, kill all tasks in > the group). Why do you call it implementation, it's definitely an user's intention "if a cgroup is under OOM, all belonging processes should be killed". How it can be implemented differently? > > It's better to have newbies consult the documentation once than making > everybody deal with long and cumbersome names for the rest of time. > > Like 'ls' being better than 'read_and_print_directory_contents'. I don't think it's a good argument here: realistically, nobody will type the knob's name often. Your option is shorter only by 3 characters :) Anyway, I'm ok with memory.oom_group too, if everybody else prefer it. Michal, David? What's your opinion? Thanks!