Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp378667pxb; Tue, 19 Oct 2021 04:56:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzBZiJ2Y63JpChT1ZQIJGGoPgwCxu7JNLTUT7sIMtpSy+pLC9PHPn/f65Kfg5M2ownMXgxB X-Received: by 2002:a17:90b:3ecc:: with SMTP id rm12mr6167116pjb.48.1634644568339; Tue, 19 Oct 2021 04:56:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634644568; cv=none; d=google.com; s=arc-20160816; b=COI9AIvughmitJP4XoP3oy0r0kbT7OR3DjvgaHwQtnZN23toaZOWqzllUwWS69987T rFiuG3OY9J0AGt/GKMWeJI57/HRF4DQz1q5kqfdyd0DNAnOM31N5OFCoJEcdLbXeS2c4 zwHgcVxkCqhccLOAdMPhvfbw7+K+bX1/lML8EXeOpZfVzxMxJiLvxwaLwBsjRAKutZfD 43xVIjVM9v7K127heqsNdYMzoSqBffDYHau+LYAONUwt386Y2RYTJ0oOxKy/OoEBxIYj eCdlo/NmoGyIOC3RrDiNn9lQMbGgGipO9Jk+IJzIikptbyYgUHGguE8OBVY3KVG7OVMF yQ6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=kjUTORhMXSDVDvRms+kcqq6S1tclrHNa5RDL4eI+HuY=; b=fNQmrmxELS/fllqs/V3exHPg++eD8BrDuagT94CLbSv84bsTkhuNTw2Zk2Vj0MuyBv 5eueMVBvhBuZ7tsTr5Nk25AFDbA9lNmQ+lPf/7TXijBslswkpa+hTdzEzVm3i0+182F9 xSPMPL4LV85Xj6amRXZHwr1ZfwbWkXfdWIabxBNRSAIT7vQEb6MgEchyigiTaL1sIJ6t 1BJDycjzYfKXfkAk6OG+ltZ07SzsDqmp87jRTdsvHwVQLO6Z2EKdh74pQx+ilONGfDIJ xtikfLcOYpmdIwEU5ccwtPP09lEIVaNp4DlWGDjspKSD+1sU4c9l7KfgTfsZalKJgrk8 NFnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=ZmH1pqyD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a3si6451938pls.163.2021.10.19.04.55.54; Tue, 19 Oct 2021 04:56:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=ZmH1pqyD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235443AbhJSL45 (ORCPT + 99 others); Tue, 19 Oct 2021 07:56:57 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:57058 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235206AbhJSL4z (ORCPT ); Tue, 19 Oct 2021 07:56:55 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 5A89821960; Tue, 19 Oct 2021 11:54:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1634644482; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=kjUTORhMXSDVDvRms+kcqq6S1tclrHNa5RDL4eI+HuY=; b=ZmH1pqyD7BkKSJl7yYLpQEnGlTjj70gOVzsOJHYIdgNSd2zzONjFac9hDbtdtUw389EkQc jeUbkHgPM5fwPIJBNvug1/6S07uPjuxtovZ0Rij5pUXDx1fijf2SNc3pN86ca6utdTFaSe Rv/kFcZoGCSZaHr78PXkwDnoIj+W8Ec= Received: from suse.cz (unknown [10.100.201.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 07825A3B84; Tue, 19 Oct 2021 11:54:41 +0000 (UTC) Date: Tue, 19 Oct 2021 13:54:41 +0200 From: Michal Hocko To: Vasily Averin Cc: Johannes Weiner , Vladimir Davydov , Andrew Morton , Roman Gushchin , Uladzislau Rezki , Vlastimil Babka , Shakeel Butt , Mel Gorman , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel@openvz.org Subject: Re: [PATCH memcg 0/1] false global OOM triggered by memcg-limited task Message-ID: References: <9d10df01-0127-fb40-81c3-cc53c9733c3e@virtuozzo.com> <6b751abe-aa52-d1d8-2631-ec471975cc3a@virtuozzo.com> <339ae4b5-6efd-8fc2-33f1-2eb3aee71cb2@virtuozzo.com> <687bf489-f7a7-5604-25c5-0c1a09e0905b@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <687bf489-f7a7-5604-25c5-0c1a09e0905b@virtuozzo.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue 19-10-21 13:30:06, Vasily Averin wrote: > On 19.10.2021 11:49, Michal Hocko wrote: > > On Tue 19-10-21 09:30:18, Vasily Averin wrote: > > [...] > >> With my patch ("memcg: prohibit unconditional exceeding the limit of dying tasks") try_charge_memcg() can fail: > >> a) due to fatal signal > >> b) when mem_cgroup_oom -> mem_cgroup_out_of_memory -> out_of_memory() returns false (when select_bad_process() found nothing) > >> > >> To handle a) we can follow to your suggestion and skip excution of out_of_memory() in pagefault_out_of memory() > >> To handle b) we can go to retry: if mem_cgroup_oom() return OOM_FAILED. > > > How is b) possible without current being killed? Do we allow remote > > charging? > > out_of_memory for memcg_oom > select_bad_process > mem_cgroup_scan_tasks > oom_evaluate_task > oom_badness > > /* > * Do not even consider tasks which are explicitly marked oom > * unkillable or have been already oom reaped or the are in > * the middle of vfork > */ > adj = (long)p->signal->oom_score_adj; > if (adj == OOM_SCORE_ADJ_MIN || > test_bit(MMF_OOM_SKIP, &p->mm->flags) || > in_vfork(p)) { > task_unlock(p); > return LONG_MIN; > } > > This time we handle userspace page fault, so we cannot be kenrel thread, > and cannot be in_vfork(). > However task can be marked as oom unkillable, > i.e. have p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN You are right. I am not sure there is a way out of this though. The task can only retry for ever in this case. There is nothing actionable here. We cannot kill the task and there is no other way to release the memory. -- Michal Hocko SUSE Labs