From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA25EC6FD1F for ; Wed, 20 Mar 2024 17:09:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DAF26B0087; Wed, 20 Mar 2024 13:09:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28B866B0088; Wed, 20 Mar 2024 13:09:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 17A626B0089; Wed, 20 Mar 2024 13:09:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 07BA06B0087 for ; Wed, 20 Mar 2024 13:09:37 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 66188121483 for ; Wed, 20 Mar 2024 17:09:36 +0000 (UTC) X-FDA: 81918053952.06.DE967B0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf11.hostedemail.com (Postfix) with ESMTP id 46BB04001B for ; Wed, 20 Mar 2024 17:09:34 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Mkpveoak; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf11.hostedemail.com: domain of longman@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=longman@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710954574; a=rsa-sha256; cv=none; b=1wp8vAiggUf9PyOkW81tYeD+da6YQfkUBPKSaqJBTHOmYxztSGjdsWIdOf9wpS0d3i1v7/ rO5/tnxpRBqXQjTMH3epXHWH9CW6Rz6dQhuhOiBxLF+I2LpvOrVmNbuZ6hqzmqAcSL5X1x Zf3jsynuLJcLVAQs6KOX7AVVpGz9BEs= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Mkpveoak; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf11.hostedemail.com: domain of longman@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=longman@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710954574; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LEKHjjXptO5fL1AUtCCz3ctgh31ZNxp9gR4ruj5ZuhA=; b=4fHBVcXDNFYtJwT3ro0v/t83tatpZzJwfaAwQc7Q7Z2nGDrmuf3MXJnx7FfyA8ir3hAWpl V08xfZkrdcUS3g3tUzakfYwEIRoKd6h5RtZjpI+XUjwV9LLsg5pNkU7XQT0MhU05HCy6EC TV4HpZAAhlXuP+e/XLs2QhHNVJ1rSGg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1710954573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LEKHjjXptO5fL1AUtCCz3ctgh31ZNxp9gR4ruj5ZuhA=; b=MkpveoakljoBMB7sNd+F18h6TUo8NoR6qvHaDXlLS9hjx1AQoxUIMYFN3KNC9ZjM4wuc5J lCJOVfDQ0woBqPIcjQRR6Ix9sfSt3iY2UE9d18pe5ysQq1GlErrz19Dtybb9VB3naro7Sq cQftSqRphVfTGhF5CdhYBD6F64FQ7Fo= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-Mnr2tHmdOX6gfMGHJxgtaA-1; Wed, 20 Mar 2024 13:09:29 -0400 X-MC-Unique: Mnr2tHmdOX6gfMGHJxgtaA-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 37BFC81CF3C; Wed, 20 Mar 2024 17:09:29 +0000 (UTC) Received: from [10.22.33.243] (unknown [10.22.33.243]) by smtp.corp.redhat.com (Postfix) with ESMTP id 64C0040C6DB7; Wed, 20 Mar 2024 17:09:28 +0000 (UTC) Message-ID: Date: Wed, 20 Mar 2024 13:09:07 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/memcontrol: stop resize loop if limit was changed again Content-Language: en-US To: Pavel Tikhomirov , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton Cc: Vladimir Davydov , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel@openvz.org References: <20240320100556.463266-1-ptikhomirov@virtuozzo.com> From: Waiman Long In-Reply-To: <20240320100556.463266-1-ptikhomirov@virtuozzo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.2 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 46BB04001B X-Stat-Signature: d5c8amfmy8mztfcbyh7i5m6h4xucgu9f X-HE-Tag: 1710954574-429151 X-HE-Meta: U2FsdGVkX19V4LrEPagr6r29s+TUZVupJRAhdOUpZzDIdWT+u9LdmJYVzIgvni072Yloe/LyapBDuRqT6/g66fpxFShKKGC9RUh5JjQBf5dvlAnNM/xc5verYfRcAB7FU8syzHEwaAH7dfkxgV4IeeuuBhbVy8vxIDdQdRPsAt+5xIR4HbmeC1SxYPYqGErm8yDXxHqI5GQiIoqBsOQ/Gz4siLRh18ZxxF/cbz4EjUjAImzKue2Io3v1KJ/Z9hjbs40C4m4I9wI9u00XUPkV+NoHqDct/hLNGS9M2ht1LyoESY6DLg3TX3bCC9ToCvbsHeKuj4dTh997sP+zhL9R80UPQNemWRUHhdoQkw6phCvWr3tUwScVQ/jJFxdkrBRtAJks+vn402wJOXl4rlRbaJM9HOkHFirtb+YpF6xfvQJzZcElxDRDK3aYNL5wuwjDqB/ds/j2RgMs9f4FuEahtKpsWnfz5DgrNO6UH/7O9xhhjdLpibH2FEnq4/IgGVH/GFO7lZzQWSE2yZ4H1BD33YgAgYuCF270LhNAQnKUnm8k7ZbA3APoHn8u1R9grT5G/BfLsXo4cDsDnzxI7yfd1VeElf+SXtZnABmz1/KxiEeQrXD7XFWGeNN5Od6Qs3bSSchKJ9ZbnWu9NLBOGeZR3H21V7kbK1zLIRUsMh/U5UJYNhOI+SIpunTY1IKTuZpQRZkdSm7L01Y6mszfSFLPS1I0i7643VP2zud+kx4W/r0YGcAjAxUeLW0BgGuiAbgorT8lfFOi/EgtIaVoY8fwxDFgW/qE04ElXuRCxNajqQJJyZ8Bh7OXL9vh+NVYHSakl5LoDvnQZGTkttwxnZsQU6u93jvfX2uKsHXflXXU+BeWwsF2FlUuZIkAMiRGpkgwmA8LwKsg8u1BVKBkwxriP9OAs+8QCX6CdAeqswXYe1pIN8YI6JW1TgCTfxC19l/wq95okSVoEtAd/ww25zA d3UC7wRu g7f4Uf+5QvocdD7wsIgJEFlIuJyuF0otWBeuudglQ9fcO6an5WiutaGZtFB9EUdNVWOsfYLwysEkgPe/sSsbqvM8djyvazLm8QE+M8+tB7eGjv8le42GoMKjVy6zI0TstcpNs1mSghZv1DHLcKUGNkn22cTK7jeUljVdMeO3ZISvfZ9s9jIyn3UwlQCXyxog3hYCqrQey14NopOwqnRWIEgAmGlhyLTCeQAnY+8VquxxGmaTw0EYfhdZiFlO1BXYpqg7tMx4vYBoJ83CzKKnv7nVQBB2bq/M2YuKsDLGWphvA922gI+ssIHHd5H8wo7HK4p7hdleC6T7XyS8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 3/20/24 06:03, Pavel Tikhomirov wrote: > In memory_max_write() we first set memcg->memory.max and only then > try to enforce it in loop. What if while we are in loop someone else > have changed memcg->memory.max but we are still trying to enforce > the old value? I believe this can lead to nasty consequence like getting > an oom on perfectly fine cgroup within it's limits or excess reclaim. Concurrent write to the same cgroup control file is not possible as the underlying kernfs_open_file structure has a mutex that serialize access to the file. Concurrent write to different cgroup control files is possible, though. Cheers, Longman > > We also have exactly the same thing in memory_high_write(). > > So let's stop enforcing old limits if we already have a new ones. > > Signed-off-by: Pavel Tikhomirov > --- > mm/memcontrol.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 61932c9215e7..81b303728491 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -6769,6 +6769,9 @@ static ssize_t memory_high_write(struct kernfs_open_file *of, > unsigned long nr_pages = page_counter_read(&memcg->memory); > unsigned long reclaimed; > > + if (memcg->memory.high != high) > + break; > + > if (nr_pages <= high) > break; > > @@ -6817,6 +6820,9 @@ static ssize_t memory_max_write(struct kernfs_open_file *of, > for (;;) { > unsigned long nr_pages = page_counter_read(&memcg->memory); > > + if (memcg->memory.max != max) > + break; > + > if (nr_pages <= max) > break; >