Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp1687671pxb; Thu, 7 Oct 2021 12:56:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxQXC/BAv7rvPvnx4hQ0ZF1OjOmfUeLpwMepnPtQo0PMp0iT3Z/Xbg3SoYR+0tKKZbLh01a X-Received: by 2002:a17:90b:1b42:: with SMTP id nv2mr6957591pjb.91.1633636561958; Thu, 07 Oct 2021 12:56:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633636561; cv=none; d=google.com; s=arc-20160816; b=PHGrsGQNgHsEQPHKDUV4eSbf6kW7q0l58J0LObVponPZuqHyCEEx5U3gIHod449N0P FIITqzc+LwuEZVNrsy4RlqxFUJOoPoDtWB3AM7fqcskXQpF4H0u0CmG3/n+HWix3NazE AQCLAcu+VOom2u2slpqCv9l7fKGdllMYzsZt1A9vL4fDSnSO71CMPiD1lGPeILD+trTQ 6L7pIuA19VoV3U8EWRRdai8krsGnlrnvuIomudzTtKbNQcEKG3Kjwf+ftBPgoTf9dCIX Zw0FfKl8ErqZXxgNs7arQNr0JXQl1CSs2CE4Web6ZI4vvCWEjv/RY5MJALV9WWnJJ2/L 9d+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:references:cc :to:from:subject:dkim-signature; bh=iLAgLMIgIu6s+lIkoBmy5XcX4KfLYvL6O9nfNN3jV64=; b=zsbtnrnx38TSXCSUsZ+YXcco5hx1PU0IdRT+ktoVoTM6XQqUfOTAKj8zLXG62p8L5Y wEKwXnuCka8+q9ctg4BJnW+HFy+1PHBfo2WMeNhsbYoxVe53m0qQjS9dpBo8jA+IML0C sORnB6O42exW+uyfpQDaQfEkEJdNtbNlrnLanZHTvFMIiShDDBNNHZnmshfGT1ny4cf6 kKab2nXt9wPl808iYsr27RX6PZ5M6cP86eKZwqUAIctrsEDGLbQIBH+NSu7qx9MWgoEM id7rRcNsouv4D5QtDTZy93a2PzFRv5GCNWc7g6z6FspApuzQeMwkzlDidseu/wLUNo5I /Nxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=aMkBwiES; 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=QUARANTINE dis=NONE) header.from=virtuozzo.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c2si357170plg.157.2021.10.07.12.55.48; Thu, 07 Oct 2021 12:56:01 -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=@virtuozzo.com header.s=relay header.b=aMkBwiES; 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=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240938AbhJGTfN (ORCPT + 99 others); Thu, 7 Oct 2021 15:35:13 -0400 Received: from relay.sw.ru ([185.231.240.75]:60484 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240837AbhJGTfN (ORCPT ); Thu, 7 Oct 2021 15:35:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Content-Type:MIME-Version:Date:Message-ID:From: Subject; bh=iLAgLMIgIu6s+lIkoBmy5XcX4KfLYvL6O9nfNN3jV64=; b=aMkBwiES/T2hlPt0t Hwki2r6+LXmyvssXQnK4+v4GEIseke75eVEpYisHkaVzo+ZSbY0LR/lRmqEC2ti1rysQ1BwRFX7Of SfBZoTcxZZCqaHjEM0UKYQy1mR9CW0XWiVCp2sInnxKRBMypWx1YzXWW4Yhq+WaE2apHhmDDXYOdE =; Received: from [10.93.0.56] by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1mYZ8j-005NGV-7s; Thu, 07 Oct 2021 22:33:13 +0300 Subject: Re: memcg memory accounting in vmalloc is broken From: Vasily Averin To: Michal Hocko Cc: Johannes Weiner , Vladimir Davydov , Andrew Morton , Cgroups , Linux MM , "linux-kernel@vger.kernel.org" , kernel@openvz.org, Mel Gorman , Uladzislau Rezki References: <953ef8e2-1221-a12c-8f71-e34e477a52e8@virtuozzo.com> Message-ID: <6411d3f7-b3a4-23a8-14fc-fcf6b9c5b73a@virtuozzo.com> Date: Thu, 7 Oct 2021 22:33:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <953ef8e2-1221-a12c-8f71-e34e477a52e8@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/7/21 11:50 AM, Vasily Averin wrote: > On 10/7/21 11:16 AM, Michal Hocko wrote: >> Cc Mel and Uladzislau >> >> On Thu 07-10-21 10:13:23, Michal Hocko wrote: >>> On Thu 07-10-21 11:04:40, Vasily Averin wrote: >>>> vmalloc was switched to __alloc_pages_bulk but it does not account the memory to memcg. >>>> >>>> Is it known issue perhaps? >>> >>> No, I think this was just overlooked. Definitely doesn't look >>> intentional to me. > > I use following patch as a quick fix, > it helps though it is far from ideal and can be optimized. Dear all, thanks a lot for your comments and suggestions! Unfortunately current patch version does not work properly. We cannot charge each page in this cycle, with taken pagesets spinlock, lockdep reports about possible deadlock. Trying to use pre-charge, as suggested by Mel Gorman. > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index b37435c274cf..e6abe2cac159 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -5290,6 +5290,12 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid, > > page = __rmqueue_pcplist(zone, 0, ac.migratetype, alloc_flags, > pcp, pcp_list); > + > + if (memcg_kmem_enabled() && (gfp & __GFP_ACCOUNT) && page && > + unlikely(__memcg_kmem_charge_page(page, gfp, 0) != 0)) { > + __free_pages(page, 0); > + page = NULL; > + } > if (unlikely(!page)) { > /* Try and get at least one page */ > if (!nr_populated) >