From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751220AbdJDTxV (ORCPT ); Wed, 4 Oct 2017 15:53:21 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:39010 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750779AbdJDTxT (ORCPT ); Wed, 4 Oct 2017 15:53:19 -0400 Date: Wed, 4 Oct 2017 20:51:10 +0100 From: Roman Gushchin To: Johannes Weiner CC: , Michal Hocko , Vladimir Davydov , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: Re: [v10 3/6] mm, oom: cgroup-aware OOM killer Message-ID: <20171004195110.GA18900@castle> References: <20171004154638.710-1-guro@fb.com> <20171004154638.710-4-guro@fb.com> <20171004192720.GC1501@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20171004192720.GC1501@cmpxchg.org> User-Agent: Mutt/1.9.0 (2017-09-02) X-Originating-IP: [2620:10d:c092:180::1:34c0] X-ClientProxiedBy: AM4PR07CA0006.eurprd07.prod.outlook.com (2603:10a6:205:1::19) To BL2PR15MB1075.namprd15.prod.outlook.com (2603:10b6:201:17::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 37f48530-4de6-40b8-866d-08d50b614b4e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BL2PR15MB1075; X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1075;3:62HZpF/ui+YNuQWgMaZOTE+Tk0gF1SXOa78qo19MFQYpSV45YXYpmsjDCThkkv2GaNMU5i0FZTvz4anTAXVqLg6hlWfPUwBOaoIBtGZA3GF+b1UQLWzlDV53BKqMIyA+wJYGBo7lsyI/GbAidYnM5bO7d5sbttNCTA7A+kj+AGO/XMYZN3lj2+rpCizi+6hw9lpkE6qePhO3PokbPtCGWzn9iFXeZewhQ70e0/js6mvE7GXdfqVJvr5+otOEYzWM;25:UxWK+Cn3qxniJTnRBOFsa7w81J/uk6eAWgxapL4KGdUKNTp7kHJj2zRDLYzkKC/Rd4hFAL7S32yPFA4CyGBHxS4FCX8e330xsO8kLyQ+4W3Z9L2vHjkwFyN9qFKUp2IeXt5bPcGm0RPMA0w/fiOMRmocA83RSDD/IA8bnft2OLiFn+kAWtIlzktllLGs6glP1WeL9DipvU/LYVroh417aD8hnvtNLBolkVXuQjaTdxBxB/SBYR0SnzNUUMnXTu2zAaTN6b/rIMprc7jsJWLa8yPLpco5F148ucAcESPUnEWVVY6y784wKTAn3pzu2FWrqxfCRw8r4WOLcIPo7RsY/A==;31:ccfuWGUOI2BdpHcZoaTN9pOJT1lOeWWxY6IU8g8rQ2+xIFItpothU0Z1ddkLodnjNW8xfoDzNLEGdXqYM+SZ9O96u3gQyyu1MGmGaxnBH7fRGMMCUk+r/ncFBUfA0uLho+rN0D/LX24YcKGp8FzGP6A1rluOs48sHANFNLpKm1vWST5cRYPfLAV5iyhSRDnnnCbzmBjLmZ0LQ8QhKWNp8tHIj/uQpA2mZxAiG3HB+FE= X-MS-TrafficTypeDiagnostic: BL2PR15MB1075: X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1075;20:ff//DTPqrFY0JhuJd000om7FuffDp+MR3LGFFJkIvwF6aox0kvId3T45FwUFVeFFkDsisPfnUixVFFi8F5ARdDA9bJATkx8mxYZHOVqAQDdRREQfu9qvw1lOkz4SfL/cOX7Wx+bvZjMNoxs5Twz318BU66OASFvkuWGSXHXhyfvo2hbG10NJdCs3aRpy1+IHq0h6TL84UdP6vw5vwA1pdLdcRZLC8n8pMzaU7mY+CWqGRLu/wInQ55xvyUDI9/b4ialixhWkVrxEJWx6WgvBfN0zeNUnOFuFUxgzqQlwiZowRQwhNU4LWaLZOFXwwNg3q+cEMD+sKx5oq2X3CY5bp/S8drAAVDxM9AFcjuKWwKWDOUtNmu+s2xKwqntU+9ImAum7fL/gHD77OxmNtcZfYMPhskB/EE6ASwzslt9yAs4RzLn+XPYMxPF55PH/See+MGCGureX8j7tZYb2DEzuUdylIUrRyz4daPI8vlT+/tW4YvjvA7H3NiXgnMW7Gbrq X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(67672495146484)(211936372134217)(153496737603132)(17755550239193); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(920507026)(6041248)(20161123558100)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BL2PR15MB1075;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BL2PR15MB1075; X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1075;4:pojn+JXqQ03KJxk31mQ/371+avZ9XQna4dHlc/j0ic+auPjoZaFJc1udhPSKt4ylowGJUlqu1XzcNSQ2oyk85laeZNRxmrrsif9zMLcZ6Lm8yGpMn0NsPP3om243Z5i26E6yHfbFtZfoNfBX4c8BekfAm8kp+n86jKbFWCFXC6XfCYpZULLsPBmQRi6tVA4i/IM0+0lKlk4oeYXPUm90bLMVLHXtCTQtkiQlLytL1YqEzEbGr9IPm9ZKxx22Ob9yxcWydCTLcQRwcnIeo4FtjCDhFiGqcX5q8RWGCfql4B6xJ3V9pt1WRjBaw9lna0c89cxhf7gSSIp5FLIk5U3YNKkk1fGZOrRxMFvPT+SRMCNPLny9JG7sc2NBVXP5ZjHj+A8yLkGeaIQ/koFxgrnbAuIybQnxF8rgYgkBqtJNAdLMRiVyIRpUa+znRT4+qR/5 X-Forefront-PRVS: 0450A714CB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(39860400002)(376002)(346002)(189002)(199003)(24454002)(7736002)(305945005)(34040400001)(58126008)(316002)(16586007)(5660300001)(83506001)(2906002)(54906003)(101416001)(23726003)(189998001)(6916009)(8936002)(47776003)(97736004)(6116002)(81156014)(68736007)(25786009)(106356001)(4326008)(105586002)(6246003)(53936002)(55016002)(33656002)(8676002)(33716001)(7416002)(6666003)(76176999)(6496005)(50466002)(478600001)(1076002)(2950100002)(229853002)(50986999)(86362001)(81166006)(54356999)(39060400002)(9686003)(18370500001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR15MB1075;H:castle;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR15MB1075;23:796U9uWKz7ixBeoSSPeAJoFm92EXdcgh7+HJNlQaZ?= =?us-ascii?Q?XefSF8ROIFeX3Qif0gYDcRnYrzWSvC0pKuKWLOoDd+7rsasHgddeKE6vARbm?= =?us-ascii?Q?qOU8TO+HlgtigsgK+VwWCxKx76ZRReAgnbysOGAL73IHwyQE0epEbpjOkxbh?= =?us-ascii?Q?8903Y1c6W4+FmYaTEcqKlQv250Vb/YAdL0gTJe8ut/zQ9uBiDSk3+tOJJEPG?= =?us-ascii?Q?mdJZoVK4BoBJKivto4NgzOqPD+egAprRp9+44C4y2beLRjRoVbiCR+hzjX6j?= =?us-ascii?Q?6Ibw8iJrEqEkWdcgadVfYb3qhRy3IbKtSmaB+CGHN3b4nXqeePBdbKode5gG?= =?us-ascii?Q?uCuNY7Vg03YugffIOjhAUivTThoYq1UYf8uAJ9P+cMcIAPoTh2H7DlsvrIJ8?= =?us-ascii?Q?jn4udI4dNDcD5lB0ufYuLYmeYwYSHauw884bI7Ku9EIFvHDB49hueOgBe/IG?= =?us-ascii?Q?TS+A+YdhUESFJf10sczzZgFKZ/cO9ljL5MKVU8Wxcvvdcd8yqjNxzINvGvMO?= =?us-ascii?Q?RxbBYFPRAkM88LW6CYX/UI6xl/w7EqtVmnYKAeo9/ZtHevmfZcSpv53s2I4m?= =?us-ascii?Q?aroCN2RqJzBieus1JoiA6O3P2JI8cXnmtuZgnQOCOy4rAgOfD9Nw3RZX3l8v?= =?us-ascii?Q?AYkEA8O+TGUtb8JwwjdqpiFM6EbsNkDmEYU2czm//xkTZyk96ypO3bDU200u?= =?us-ascii?Q?f9CxKNn/AQ++er5tsYqip+MyG7QF70xNAy4GDBuOrvuOXQRSezdEzGOUgoKT?= =?us-ascii?Q?MTIPXKDdR6i54jAvb0fmEEBaYMxVMxkdh6QvveWLtiQRrwT+n3uoqg6uMbI0?= =?us-ascii?Q?TltqBtf47JpfVyCsTeGG+jtrSUunA6S7b6oQMuPH5bHVEf+Icd4tobbOqI2a?= =?us-ascii?Q?qDdBJo+xUIUnJEUznUJ9ZWarXniuhgiww9XbaTuDeC1jzblj4pst67wJGkkJ?= =?us-ascii?Q?znehqdq+Fc+9k2+4dztLGJNjurthvcfJVFDDM8s46v9v6j+KNGHEr4TnCaX7?= =?us-ascii?Q?D5VncIdolM4L/qGwOIYofrJbDeIuYAFL429+Mzom/Ojcl88OyrWBqKbn05uh?= =?us-ascii?Q?Nxb4h6o0hXtBQSnhw96qLDpBbQSlb0FAl7VtMBDUO7TcpMGqbfRmZ0mKPuUz?= =?us-ascii?Q?MIIzKWyHmE9rfNA1pNhcZhbb8jrN6EYPP+pRtbwDvuxmnO+suwEDV+cXWrfU?= =?us-ascii?Q?YyirSIxLDVPgue22NJddhjZASd2W8Sr0QncmSlyjw8uUCuKS6dnW1w7xtN1Y?= =?us-ascii?Q?TVYhRCco8fNJ8VzUlWxrzH/3e25S9mgJlabrKRw?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1075;6:MQveompwwwG4qsL0OVl8b4xTi7h34yhQPideQsyKe8vZKz8wCnUPdYu2tsH58rv519QwZiQae2Ti+MfCXZ3E00a/q6PbLwo+195ulScHGOPpDDx+4yu+JyB6BZ0fHjjTQwQX3PFImM71t2plk00Srfn4ED+xkQDBs5ENXsmweliqlzqAJDYN+0ra+zQWGhGB/Z5hVTeuZ2bZ72C/6tLBprqInoifKypXYKlFQ0TV5BO7dR6thtRCe2bjFht7Nfe6Z0gFseL+XyQ0HJvpSJi4H+j56w8CPRKCqC+b6zypv1PDhFnMNrYThJQq1JkHWlHrBmg9jpAly6JNjYDbevDxwQ==;5:AvvtR3GIaO2DxkIICqumAee9j1J+UEHohU/ruRSqAI6cIlb6RCwD7wHboNIrszukI3Y8CrrqiGymFZept/cFHly9yALxUup9STcknj64VMIvxKuSl7+lMQOu6Os7tPtAtdkcvVsr54FOZ9fjGzTj3Q==;24:6W52ubm0/njSu1M0kG9sZM1rgAB1UpckD7cF3Q+7yKrXmNC5xopnjL3ko+oYNqkb66vPU8gt8a6xKLhC+0zxWiWJIim2X0AWFRY+t+eteSE=;7:H8b4QNt/aloLMSmc9QIujMH5LhatxucNebDjFptGZdJ8JsNxxfPpccqDjoq7o9sHRoIJZE+h4aqxLiCntUtgHjJMHI4VR2on9YFNnexPsz5VDD8uE0DH8YCRNaQ6NmJOOi5aCOtv+tzedLYZhM9lEv/YMu+At+V+yICxvSuey9lelf8fKXqe8b6LYGcyCISAk9IOfxaI4+fE2MQyAZkUloVMEey//gARWbli9Vl82HE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1075;20:5ZVJ0CR13tgSMxoUV8cWDutWS2HwATdAZsCy+ezpdT1sG7Ka173PQt+bcmJzJ3BX2/2W9ge4KzVrIY3PPcwIIniidwpJTC8Bp0Baif2GU3oGrqp9vgbS4L2dIrsYlezWmh7OUXrNEVfSEJ+HK9tc0JNRUwKrI/OrHhdsj9NeAG8= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2017 19:51:22.2994 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR15MB1075 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-10-04_09:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 04, 2017 at 03:27:20PM -0400, Johannes Weiner wrote: > On Wed, Oct 04, 2017 at 04:46:35PM +0100, Roman Gushchin wrote: > > Traditionally, the OOM killer is operating on a process level. > > Under oom conditions, it finds a process with the highest oom score > > and kills it. > > > > This behavior doesn't suit well the system with many running > > containers: > > > > 1) There is no fairness between containers. A small container with > > few large processes will be chosen over a large one with huge > > number of small processes. > > > > 2) Containers often do not expect that some random process inside > > will be killed. In many cases much safer behavior is to kill > > all tasks in the container. Traditionally, this was implemented > > in userspace, but doing it in the kernel has some advantages, > > especially in a case of a system-wide OOM. > > > > To address these issues, the cgroup-aware OOM killer is introduced. > > > > Under OOM conditions, it looks for the biggest leaf memory cgroup > > and kills the biggest task belonging to it. The following patches > > will extend this functionality to consider non-leaf memory cgroups > > as well, and also provide an ability to kill all tasks belonging > > to the victim cgroup. > > > > The root cgroup is treated as a leaf memory cgroup, so it's score > > is compared with leaf memory cgroups. > > Due to memcg statistics implementation a special algorithm > > is used for estimating it's oom_score: we define it as maximum > > oom_score of the belonging tasks. > > > > Signed-off-by: Roman Gushchin > > Cc: Michal Hocko > > Cc: Vladimir Davydov > > Cc: Johannes Weiner > > Cc: Tetsuo Handa > > Cc: David Rientjes > > Cc: Andrew Morton > > Cc: Tejun Heo > > Cc: kernel-team@fb.com > > Cc: cgroups@vger.kernel.org > > Cc: linux-doc@vger.kernel.org > > Cc: linux-kernel@vger.kernel.org > > Cc: linux-mm@kvack.org > > This looks good to me. > > Acked-by: Johannes Weiner > > I just have one question: > > > @@ -828,6 +828,12 @@ static void __oom_kill_process(struct task_struct *victim) > > struct mm_struct *mm; > > bool can_oom_reap = true; > > > > + if (is_global_init(victim) || (victim->flags & PF_KTHREAD) || > > + victim->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) { > > + put_task_struct(victim); > > + return; > > + } > > + > > p = find_lock_task_mm(victim); > > if (!p) { > > put_task_struct(victim); > > Is this necessary? The callers of this function use oom_badness() to > find a victim, and that filters init, kthread, OOM_SCORE_ADJ_MIN. It is. __oom_kill_process() is used to kill all processes belonging to the selected memory cgroup, so we should perform these checks to avoid killing unkillable processes. Thanks!