Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6137695ybf; Thu, 5 Mar 2020 14:00:21 -0800 (PST) X-Google-Smtp-Source: ADFU+vu7AmZOC8XhfPPorlV3ac2hLVl11DHtdZInUrs5neG4U+j2aAUzBleIz8CbFThAy1+alg0t X-Received: by 2002:a05:6808:997:: with SMTP id a23mr418238oic.176.1583445621654; Thu, 05 Mar 2020 14:00:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583445621; cv=none; d=google.com; s=arc-20160816; b=T5Cy0QvicoB+is4KT/OtjA1ipuxeSdF/KlLXDdkH1QOotpgsToj0fcPM95yrNxq0Pb oF22CUAppQB4ui9Aqo88oOAUEtzbUZeRymhio9ohZecfHK0qUkDbqusCHU/oBBbY50so l/OrxqBKGk6q2FT61ozZXElPbttk5wVfgIXwAluIFT6+X+QTrbGBilxFX8c87Q970r6U 36tt6zX4BVfx2PsqqJPYQAmAuP8uLnr9Cwxij8J0KJtw1rsXblekUpxQNpRvbyBUgo+y +fBJ84r1pv+yEsBDSSQlejgF6RajDMWjBDko5vkc4EJ64vJT4spdQ3ej59pnNx2GbeVK 5jlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=GZ9X7pBOQ32PghBEC4+dP85I/S+wu1As9RhQFRnXXto=; b=JuXhBu3tP0NNS5boJtFRrGGqBjUBXmJ/+AiJ4GKoxSnmPpl82vN2kAPNXID+CLered b5LZRBbg2SBUT6KVOON5JdyYec7P3M2+2BM5O/Yw+ukV6+CD8Jn/VST/LuNR5kWpyrVI uHPB68iVqJ++tfeFsVJpW9UOrUYULfYr0tbythrx1hE4trlDlIuQbrvmHeKa3tQj3VgV TBF34LyNYUvgYanrJrqAOBUwT9oOdmEXR0fDnlmohrmoZQKzJs9tQXaa0FAjsAhmMxVy x2eZKQWClUZtw8hodx02Xs78KE3jSyIS37tq5YVWa9gx0/U4suJkixQGqcv5xLRLq2cX ts5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=lSsXtoDI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h136si164707oib.141.2020.03.05.14.00.08; Thu, 05 Mar 2020 14:00:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=lSsXtoDI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726251AbgCEV7u (ORCPT + 99 others); Thu, 5 Mar 2020 16:59:50 -0500 Received: from mail-oi1-f195.google.com ([209.85.167.195]:46128 "EHLO mail-oi1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726181AbgCEV7t (ORCPT ); Thu, 5 Mar 2020 16:59:49 -0500 Received: by mail-oi1-f195.google.com with SMTP id a22so415322oid.13 for ; Thu, 05 Mar 2020 13:59:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GZ9X7pBOQ32PghBEC4+dP85I/S+wu1As9RhQFRnXXto=; b=lSsXtoDIO0iLHjqPicvvXtqjyT7OR/kBmY+VLmgBRevQBgKkkDTBQRGLxzsgcELH6t gqiGETJBzstXBAnv9oYvbcIBIz89GpuahxVSYeZiGIBZ4JvWLqjwVYKVD1bfwB074NTL 9MZik/rr8kw3M1VyRiiRn60Ts6yKRUKNcOSsYWGch+SBvf7epfYp8rNztCtiP/kPuX9K 10Bcd7ggd2vSizpgzvw3rq7TbbT5qAgso27hxp1LZMY9bXozbQWsZzRKL1BXWCK66cCq FzIrI80C7cvzbZRPcHeBZj4Pxdrxrivy0+6UjMRhYPpEW17iy/T0kUB0lmxycqhI6IJV wl0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GZ9X7pBOQ32PghBEC4+dP85I/S+wu1As9RhQFRnXXto=; b=Yqd34y93OA5trummg9NSghIvl7qVTKiYD3a4X6ImRjGGZYaERQIAr4NDeD6JVJWpJ7 9aj+ilOAfjNOmYA5s2sCbFrElya0QOX7KdNkXIV0UU5eonkxN4tZbnItKCgjBQAqQh/h GKxeWcp6GeJIS3xD6UiISIK3T3AfovPtOWZ28n2x5yj2zsRgNugHgRknZ+w9koxGLOIr R9qGNYd5/j3DGp5hRvWOe/4P5V7MFMq92leVp033He0oMtMLfc7qzgL95XgC3lOapIho Aq5RG/oUmLnqqpZ5C2gjSMijPKKey94s10m/h5l2tgRP+nQAl4X43WENTL0KQjzn9JyY E1Zw== X-Gm-Message-State: ANhLgQ1AZO/5l/b8w5GR0eUGvhF8xbuuxI6c9Jjpa5Uzrg4Uq9nAF7JY PY+eq6EhfmsbB0ORg/p3lEGzOQ7RSNRBMxjDbQxhhQ== X-Received: by 2002:a05:6808:64e:: with SMTP id z14mr383631oih.79.1583445588674; Thu, 05 Mar 2020 13:59:48 -0800 (PST) MIME-Version: 1.0 References: <20200305205525.245058-1-shakeelb@google.com> <9505d35b-f9fc-149b-6df5-e65ad95acabb@gmail.com> In-Reply-To: <9505d35b-f9fc-149b-6df5-e65ad95acabb@gmail.com> From: Shakeel Butt Date: Thu, 5 Mar 2020 13:59:37 -0800 Message-ID: Subject: Re: [PATCH v3] net: memcg: late association of sock to memcg To: Eric Dumazet Cc: Eric Dumazet , Roman Gushchin , Johannes Weiner , Michal Hocko , Andrew Morton , "David S . Miller" , Alexey Kuznetsov , Hideaki YOSHIFUJI , netdev , Linux MM , Cgroups , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 5, 2020 at 1:17 PM Eric Dumazet wrote: > > > > On 3/5/20 12:55 PM, Shakeel Butt wrote: > > If a TCP socket is allocated in IRQ context or cloned from unassociated > > (i.e. not associated to a memcg) in IRQ context then it will remain > > unassociated for its whole life. Almost half of the TCPs created on the > > system are created in IRQ context, so, memory used by such sockets will > > not be accounted by the memcg. > > > > This issue is more widespread in cgroup v1 where network memory > > accounting is opt-in but it can happen in cgroup v2 if the source socket > > for the cloning was created in root memcg. > > > > To fix the issue, just do the late association of the unassociated > > sockets at accept() time in the process context and then force charge > > the memory buffer already reserved by the socket. > > > > Signed-off-by: Shakeel Butt > > --- > > Changes since v2: > > - Additional check for charging. > > - Release the sock after charging. > > > > Changes since v1: > > - added sk->sk_rmem_alloc to initial charging. > > - added synchronization to get memory usage and set sk_memcg race-free. > > > > net/ipv4/inet_connection_sock.c | 20 ++++++++++++++++++++ > > 1 file changed, 20 insertions(+) > > > > diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c > > index a4db79b1b643..5face55cf818 100644 > > --- a/net/ipv4/inet_connection_sock.c > > +++ b/net/ipv4/inet_connection_sock.c > > @@ -482,6 +482,26 @@ struct sock *inet_csk_accept(struct sock *sk, int flags, int *err, bool kern) > > } > > spin_unlock_bh(&queue->fastopenq.lock); > > } > > + > > + if (mem_cgroup_sockets_enabled && !newsk->sk_memcg) { > > + int amt; > > + > > + /* atomically get the memory usage, set and charge the > > + * sk->sk_memcg. > > + */ > > + lock_sock(newsk); > > + > > + /* The sk has not been accepted yet, no need to look at > > + * sk->sk_wmem_queued. > > + */ > > + amt = sk_mem_pages(newsk->sk_forward_alloc + > > + atomic_read(&sk->sk_rmem_alloc)); > > + mem_cgroup_sk_alloc(newsk); > > + if (newsk->sk_memcg && amt) > > + mem_cgroup_charge_skmem(newsk->sk_memcg, amt); > > + > > + release_sock(newsk); > > + } > > out: > > release_sock(sk); > > if (req) > > > > This patch looks fine, but why keeping the mem_cgroup_sk_alloc(newsk); > in sk_clone_lock() ? > > Note that all TCP sk_clone_lock() calls happen in softirq context. So, basically re-doing something like 9f1c2674b328 ("net: memcontrol: defer call to mem_cgroup_sk_alloc()") in this patch. I am fine with that. Roman, any concerns?