Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp2577482rwr; Fri, 21 Apr 2023 10:43:41 -0700 (PDT) X-Google-Smtp-Source: AKy350a5ZGyRPHgwA4mCM1O5SwSb2TwT/p3Qk64f316QVjuhu/Al8uQ9VpBhJE6Uv9jle5Hwn1sY X-Received: by 2002:a17:90a:16:b0:247:a17:9258 with SMTP id 22-20020a17090a001600b002470a179258mr5165518pja.2.1682099021668; Fri, 21 Apr 2023 10:43:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682099021; cv=none; d=google.com; s=arc-20160816; b=zm/ldpD4cFOeshFSr920lEq9bj+5IjmOROoV34ut+fKZfAOOsfUBSWCCSmiuOYUijG 2Bu+wpu8FVubmYvaI4F+TLAhwIHAatc95djI/rf08gnMX5vnzzqIDpeKcItAWPtOluGa jb5ik70HqJRRmlD0o23wfs4x4y7jcytk+49A/EsQeuMqKbzemY56TB9KSNiEYUdoyTih a3u20y6/2CNhRhX16xhYUKjOzavfCuIxqLFeOD5RQw1jsdNKqK+iG8M04FtA+9vKSRFZ mabmYGSHzLEpVB2aCwZCklfSaQs+enSjXiM9tIO7QK8+XhRLUjozHOwP2QuiucNdhp0m ZDCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=PreKFJTa4Nhy/d8G1S1pWlqvl89TyRSt3luKcVUPmzw=; b=rp0Wh1QLemF2odePqN5xz1OczAjf3OOAI3RoQeV0LczaLNYQyB0SnEdic4sS/fSFvF T3qGSyKjOl3a2TMdCrtzpY/b3DLr3qyD1/1owdLN89+3eA9/HtQ+pXMw/yJzqJ0THPGh Df2c8MWqhqwiw6kguEx1olfenkCY4NJHjbVXE787F7xa1ordsldW3B7lt4mDJKg/nPkd rKCkjPsSonJJyKe+0idnPGzfux1scE5Gnc6QBanod8tldxz5Lw0CD6emfVFEAUn2TW3P ra8kOPPHvhS7mkFc0NWG3ZNolfX6SbxHaolCKu5ue8BHAiErLOH/q6IsszXPkPvI7HD9 DcRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=RbrkYV0C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o14-20020a17090a4e8e00b002474702c929si7434863pjh.175.2023.04.21.10.43.25; Fri, 21 Apr 2023 10:43:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=RbrkYV0C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233197AbjDURk2 (ORCPT + 99 others); Fri, 21 Apr 2023 13:40:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233160AbjDURkZ (ORCPT ); Fri, 21 Apr 2023 13:40:25 -0400 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7628812588 for ; Fri, 21 Apr 2023 10:40:23 -0700 (PDT) Received: by mail-pl1-x649.google.com with SMTP id d9443c01a7336-1a526818eabso15854355ad.3 for ; Fri, 21 Apr 2023 10:40:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1682098823; x=1684690823; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=PreKFJTa4Nhy/d8G1S1pWlqvl89TyRSt3luKcVUPmzw=; b=RbrkYV0CJdmfBIbmUIvZnVKhJQyLH4CYaft3mk2yfKLvyJZF8dDaaqVVnx3eiK4Ab7 lZDDw30q1ppsBNzI772XXB/FRji5/R8TeuWfOOnXpJHy3+Y7JyutQQ2Gj19sY9tbj8iD l3vp+8XcixoSCatriNQ/fKYwuCkpY6rEOUk7vfFOeJNxNuSbxeoNvs3hSBNc92fiAIj4 a4voAS83/3J7lvlMPpBscMu6mKr9RPsusaetGLt5BbQVCI9eFbxjUyZ5WoZ+y39zt/1d 13legztw2c8S9smKxFGhZzKMk7rQhrAr+Y1NpiTukgQZJEDzm31H36UsudJPK7jznpxJ jqQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682098823; x=1684690823; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PreKFJTa4Nhy/d8G1S1pWlqvl89TyRSt3luKcVUPmzw=; b=fLv5oWzmlaosaGO74Ew/vhgyzNu9aMd4CicCbdnPbQWSytVy7xuoMzHKcKs1YsjNwT rE3x8llMmcdFlKnWl7skVN2D+e4f5fUkVw8eFjGg6rEDLh30MyIWHbQHRdcXwMkkUDZu /XQrw3s/Ll6BDmH4wNo44H7Y+DlT4I0XClDuCCQ8Kb1EgQn1Q7ROcm5QKsBQ+pIHlHqV zoQAV7uGH/enFXYZQ+p3bisjq20srvr4VFgh6bSCX5KlSVDz32GxDlkO6zpElaQE87lG aH/EanfGAb+jvu1JwFxueKtuEr9G1Q2ENKIr7ZrqomIj2EGgCjTOhTJPm3v8bqXomUbq l7xw== X-Gm-Message-State: AAQBX9fkcbsm3fTSRrX0yoSAuroMyvcRTdFylVUHYIoY0HLmCwFvPuY/ aaR67xxGrs+ahBFYiMR9JmBKRKV+yEP3iWFG X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:2327]) (user=yosryahmed job=sendgmr) by 2002:a17:902:f302:b0:1a2:6e4d:782c with SMTP id c2-20020a170902f30200b001a26e4d782cmr1851742ple.13.1682098823035; Fri, 21 Apr 2023 10:40:23 -0700 (PDT) Date: Fri, 21 Apr 2023 17:40:15 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.40.0.634.g4ca3ef3211-goog Message-ID: <20230421174020.2994750-1-yosryahmed@google.com> Subject: [PATCH v5 0/5] cgroup: eliminate atomic rstat flushing From: Yosry Ahmed To: Alexander Viro , Christian Brauner , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Tejun Heo Cc: Jan Kara , Jens Axboe , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, Yosry Ahmed Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A previous patch series ([1] currently in mm-stable) changed most atomic rstat flushing contexts to become non-atomic. This was done to avoid an expensive operation that scales with # cgroups and # cpus to happen with irqs disabled and scheduling not permitted. There were two remaining atomic flushing contexts after that series. This series tries to eliminate them as well, eliminating atomic rstat flushing completely. The two remaining atomic flushing contexts are: (a) wb_over_bg_thresh()->mem_cgroup_wb_stats() (b) mem_cgroup_threshold()->mem_cgroup_usage() For (a), flushing needs to be atomic as wb_writeback() calls wb_over_bg_thresh() with a spinlock held. However, it seems like the call to wb_over_bg_thresh() doesn't need to be protected by that spinlock, so this series proposes a refactoring that moves the call outside the lock criticial section and makes the stats flushing in mem_cgroup_wb_stats() non-atomic. For (b), flushing needs to be atomic as mem_cgroup_threshold() is called with irqs disabled. We only flush the stats when calculating the root usage, as it is approximated as the sum of some memcg stats (file, anon, and optionally swap) instead of the conventional page counter. This series proposes changing this calculation to use the global stats instead, eliminating the need for a memcg stat flush. After these 2 contexts are eliminated, we no longer need mem_cgroup_flush_stats_atomic() or cgroup_rstat_flush_atomic(). We can remove them and simplify the code. [1] https://lore.kernel.org/linux-mm/20230330191801.1967435-1-yosryahmed@google.com/ RFC -> v1: - Collected R-b's and A-b's (Thanks everyone!). - Rebased onto mm-stable. - Cosmetic changes to commit logs. RFC: https://lore.kernel.org/linux-mm/20230403220337.443510-1-yosryahmed@google.com/ Yosry Ahmed (5): writeback: move wb_over_bg_thresh() call outside lock section memcg: flush stats non-atomically in mem_cgroup_wb_stats() memcg: calculate root usage from global state memcg: remove mem_cgroup_flush_stats_atomic() cgroup: remove cgroup_rstat_flush_atomic() fs/fs-writeback.c | 16 +++++++---- include/linux/cgroup.h | 1 - include/linux/memcontrol.h | 5 ---- kernel/cgroup/rstat.c | 26 ++++-------------- mm/memcontrol.c | 54 ++++++++------------------------------ 5 files changed, 27 insertions(+), 75 deletions(-) -- 2.40.0.634.g4ca3ef3211-goog