From patchwork Mon May 8 06:44:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haifeng Xu X-Patchwork-Id: 90960 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1958371vqo; Sun, 7 May 2023 23:56:23 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5vqQUHAoxI896FldmhAL7HlPXp572VhoU48I3IPsNNHnqswhz7oihgsA+oa33/QQWgK+T9 X-Received: by 2002:a17:903:11cd:b0:1ab:94:1ee4 with SMTP id q13-20020a17090311cd00b001ab00941ee4mr11190767plh.2.1683528983249; Sun, 07 May 2023 23:56:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683528983; cv=none; d=google.com; s=arc-20160816; b=V6x1tdlRk8kPlHiSF3g2z9c1ym+WEwZd6Uuhx0mg8nq787lNGGvJX8xFy1PQ9voxIS aM+Hlk+Kv1LDG3LkffoZM/P8oQEuDHa1zOGEYXMI11MTziLPLidDU8MjDxP3gFvfrDvZ baQbnlnzueVidvHYqSLhbVH8wYlWMHd7J3dBDBir1SmoYtP3Ik8HMZ3Jjy9iYZ/+Afgh rscWZxI+cgGnHA6yXEMWN2NR4JNOwoxysq6QGMzDxX4LViqA6T3g2CyQE1U1ba6l6i37 JWNC8ZbK3477MtoDcgumlBiZ7bKes9ZElfhlDYj1AKIoYq4BoRJ/XdZF6R8Mw0WB+hun gvZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=rB0preXJQDdZyaNevNbkz7vJIIhOUzVqaFbE1aywo6c=; b=gU9nHXw3h5sWWTB0vhSQiXuk1HWWa11Yq7gVwMSty6W6VQ0Aej40jjB4++7DfwmtQf P6ZiuXxdE1taG2l04/bJbO5/jsALLF/UHO1RWQAnN42SNkVXeBOkrQH6/mzuhrTJWClD au7Eb8K/lr6s5KzIbVDMfHhjFK1uRuGHIYPM86EdTYNC/65whX8freQGfVaVlQfWcTL6 qZj0qOzlmleOLzEP/uglYNmSwt0p3VClZKHuRfnHZCqmcxFS5+QUxMoeuJ8DIe1PtfOj IodEI340Ex9B5ciocHoY4XQNv+dUkTf4rSvhkhIS98mpyPzmyIPsF9b0Kr8BDvbu03xH xDYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@shopee.com header.s=shopee.com header.b=YlkEosC1; 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=shopee.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s17-20020a17090302d100b001ab089f7329si7230604plk.73.2023.05.07.23.56.10; Sun, 07 May 2023 23:56:23 -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=@shopee.com header.s=shopee.com header.b=YlkEosC1; 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=shopee.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231814AbjEHGpr (ORCPT + 99 others); Mon, 8 May 2023 02:45:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60790 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229448AbjEHGpo (ORCPT ); Mon, 8 May 2023 02:45:44 -0400 Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79E6C659C for ; Sun, 7 May 2023 23:45:42 -0700 (PDT) Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-6439e6f5a33so1980796b3a.2 for ; Sun, 07 May 2023 23:45:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1683528342; x=1686120342; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=rB0preXJQDdZyaNevNbkz7vJIIhOUzVqaFbE1aywo6c=; b=YlkEosC18ruD28Z7PwwXU5IhElCJkF8AZttgQOMzDUKALtZDp0VVXxrQrxVjo6IX8Z K8tJj9SWOcMFT2ZCNsaXAMC8Si3EcmJJ8n5m872ECpp6U5Jc/6w3QHH8bnTEQ/m3Bqfb R8NgSiQ9hmV/YdmU31menkJYE1BGsgBxXwEkrkANnj3MW0xLIQ/ipr4mGPu3j33Azc5s 44dgLkNv0LDcyWlflGek6NnxIgFpSMrBxQ46kFUBZOO3KAG4pEAYqI0DeN1yalp5czVy L/SHYa3OkMIh0jw3ZmU503LHvUV1nr0SuQd1o65O3QL3RVjBAA0XS79GaUYriFX/REhr TVCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683528342; x=1686120342; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rB0preXJQDdZyaNevNbkz7vJIIhOUzVqaFbE1aywo6c=; b=GhGk9iodKGaeVjyEV48bVm29O69aWIJlmoLbHmmFpbIPoy/0UHLT6u93e9EX/mc6yt 5HsjewqQAKC4vD6LO+7N+u3zcxxCiueL/jDmUOCe4rgxtv2PZhjQiLfunH4qcy2QtdJ3 osHFRahfJJQVLDkTOYYE4L1FCiTKQ4ZKIa1ZvtDJ4f/qZHcXF0xmU4sqMr/9uMmb8wbX iXqBq+foArg1XEnyFxMjV+prlpalPJv8feKF6rZS0DNhLxomfUXbGmM7MvUIItmZTvwA wDxi6OzDMPaufILvaR4BALRd2SA834dZBtg9BjVZ9m00++8FX74tMCxcrNcMaS9Hl516 KjHQ== X-Gm-Message-State: AC+VfDwZKYiK+zdESzqFf4gxnm5qLjCs82A+po5w1T1IT0VednEpvEBT TgOsQI6i1wEH6CSTOm+2wd/ssskHxKpm5S2uIQgCjA== X-Received: by 2002:a05:6a20:42a9:b0:100:a2ca:7ca8 with SMTP id o41-20020a056a2042a900b00100a2ca7ca8mr1809424pzj.54.1683528341786; Sun, 07 May 2023 23:45:41 -0700 (PDT) Received: from ubuntu-hf2.default.svc.cluster.local ([101.127.248.173]) by smtp.gmail.com with ESMTPSA id h33-20020a635321000000b0052c3f0ae381sm5501867pgb.78.2023.05.07.23.45.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 May 2023 23:45:41 -0700 (PDT) From: Haifeng Xu To: luto@kernel.org Cc: bigeasy@linutronix.de, tglx@linutronix.de, akpm@linux-foundation.org, bristot@kernel.org, linux-kernel@vger.kernel.org, Haifeng Xu Subject: [PATCH] fork: optimize memcg_charge_kernel_stack() a bit Date: Mon, 8 May 2023 06:44:58 +0000 Message-Id: <20230508064458.32855-1-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765308087133359537?= X-GMAIL-MSGID: =?utf-8?q?1765308087133359537?= Since commit f1c1a9ee00e4 ("fork: Move memcg_charge_kernel_stack() into CONFIG_VMAP_STACK"), memcg_charge_kernel_stack() has been moved into CONFIG_VMAP_STACK block, so the CONFIG_VMAP_STACK check can be removed. Furthermore, memcg_charge_kernel_stack() is only invoked by alloc_thread_stack_node() instead of dup_task_struct(). If memcg_kmem_charge_page() fails, the uncharge process is handled in memcg_charge_kernel_stack() itself instead of free_thread_stack(), so remove the incorrect comments. If memcg_charge_kernel_stack() fails to charge pages used by kernel stack, only charged pages need to be uncharged. It's unnecessary to uncharge those pages which memory cgroup pointer is NULL. Signed-off-by: Haifeng Xu --- kernel/fork.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index ea332319dffe..50762a41aa4e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -250,23 +250,20 @@ static int memcg_charge_kernel_stack(struct vm_struct *vm) { int i; int ret; + int nr_charged = 0; - BUILD_BUG_ON(IS_ENABLED(CONFIG_VMAP_STACK) && PAGE_SIZE % 1024 != 0); + BUILD_BUG_ON(PAGE_SIZE % 1024 != 0); BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE); for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) { ret = memcg_kmem_charge_page(vm->pages[i], GFP_KERNEL, 0); if (ret) goto err; + nr_charged++; } return 0; err: - /* - * If memcg_kmem_charge_page() fails, page's memory cgroup pointer is - * NULL, and memcg_kmem_uncharge_page() in free_thread_stack() will - * ignore this page. - */ - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) + for (i = 0; i < nr_charged; i++) memcg_kmem_uncharge_page(vm->pages[i], 0); return ret; }