From patchwork Thu Mar 18 10:08:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12147803 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E20C7C433DB for ; Thu, 18 Mar 2021 10:10:22 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7793564E86 for ; Thu, 18 Mar 2021 10:10:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7793564E86 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2061F8D0002; Thu, 18 Mar 2021 06:10:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1B7578D0001; Thu, 18 Mar 2021 06:10:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAF328D0002; Thu, 18 Mar 2021 06:10:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0150.hostedemail.com [216.40.44.150]) by kanga.kvack.org (Postfix) with ESMTP id CA45E8D0001 for ; Thu, 18 Mar 2021 06:10:18 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 82C88781C for ; Thu, 18 Mar 2021 10:10:18 +0000 (UTC) X-FDA: 77932574916.16.5CF9CB3 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf24.hostedemail.com (Postfix) with ESMTP id 0F818A0009FE for ; Thu, 18 Mar 2021 10:10:17 +0000 (UTC) Received: by mail-qk1-f179.google.com with SMTP id l4so1417953qkl.0 for ; Thu, 18 Mar 2021 03:10:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=W8+A/g3U4DodIE6llQ+hDjB/HFXop9Ja1bxfrVH/yAg=; b=kT1pBhR3JRIX8rnvf+m/6UkT8V+sxoRM6EP4NLs6YuBOiFd1REtu+fiP9/rVZIT/iR kAqBc+1iKTBqAkqcPRLAaijgDp9PcL+0+KecKQbUQbbMupn7DlgrSM6yDZdDd5E8S7fi OnGeY6vy2K1eyPKbK7XdRhXKLIq0HvkInXI2QoSboDnYGMIyBt1D07nkocIyJL9l96ND yhfO6wbHxXKxxThPSYVVQBv6hCHiigw9TW6J5F8T9LT+j4VhG7fUvhTfEzoe/aVrV+uh VQcO/UUAYWhdYnjAnErE9bUv2O7QBl+2/nHOhRj57QV65RUChXIcVsyjg7jjSgdoBtLr nHug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=W8+A/g3U4DodIE6llQ+hDjB/HFXop9Ja1bxfrVH/yAg=; b=po7fPWLqzj9QnywqJvqOjZJDX4pmq8G7Y9wvqFzguCaGO+swMcqHdp3uVajm4SD4Rl 6HH2878iBVVlMRMQ1TM56rOT49Pc+AklZ33OLaZct8gkAZ/RhTnzs4MNWItj+Qmd03+V CJHTkh8iHLAH0Q1Dyes3+RLAMHorxjaaCDjeT1MhO3kVwUQHdYm4XXV3q53LrXssc73j CIY2AK9hF4TI5O78Lv58yIgx8vGMDZVhNV9wMNhxSXBUnPWS+y0mhXo1tWALYgoQwW5h DIK/Cd72cjJ5/oE+3C31+AJ13liDq1wN/1X7T6vhPTlNAogLPrbQiDB6y+DmxEAKp7y0 3kZA== X-Gm-Message-State: AOAM531m0QLvAZy3dVUQdKurGVaMVJZmnkQ5MKesbWBoefFO+nkP0vkW eYQql2yXl90Hixlb0wHnQJs= X-Google-Smtp-Source: ABdhPJx9r52cWcfoEbyqWv9MA5ztg2rt1UpinGbFCS45+PeKAjitAAjlvY+RVJdVuNlf5TFvPYHD6Q== X-Received: by 2002:a37:a715:: with SMTP id q21mr3363655qke.309.1616062217486; Thu, 18 Mar 2021 03:10:17 -0700 (PDT) Received: from localhost.localdomain (ec2-35-169-212-159.compute-1.amazonaws.com. [35.169.212.159]) by smtp.gmail.com with ESMTPSA id d16sm1358101qka.43.2021.03.18.03.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Mar 2021 03:10:17 -0700 (PDT) From: sj38.park@gmail.com To: akpm@linux-foundation.org Cc: SeongJae Park , Jonathan.Cameron@Huawei.com, acme@kernel.org, alexander.shishkin@linux.intel.com, amit@kernel.org, benh@kernel.crashing.org, brendanhiggins@google.com, corbet@lwn.net, david@redhat.com, dwmw@amazon.com, elver@google.com, fan.du@intel.com, foersleo@amazon.de, gthelen@google.com, mgorman@suse.de, minchan@kernel.org, mingo@redhat.com, namhyung@kernel.org, peterz@infradead.org, riel@surriel.com, rientjes@google.com, rostedt@goodmis.org, rppt@kernel.org, shakeelb@google.com, shuah@kernel.org, sj38.park@gmail.com, snu@amazon.de, vbabka@suse.cz, vdavydov.dev@gmail.com, zgf574564920@gmail.com, linux-damon@amazon.com, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v25 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Thu, 18 Mar 2021 10:08:51 +0000 Message-Id: <20210318100856.34715-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210318100856.34715-1-sj38.park@gmail.com> References: <20210318100856.34715-1-sj38.park@gmail.com> X-Stat-Signature: yemn6xqb8mn3kwp5yr6mej7aefdzzuhr X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 0F818A0009FE Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf24; identity=mailfrom; envelope-from=""; helo=mail-qk1-f179.google.com; client-ip=209.85.222.179 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616062217-334117 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: From: SeongJae Park For CPU usage accounting, knowing pid of the monitoring thread could be helpful. For example, users could use cpuaccount cgroups with the pid. This commit therefore exports the pid of currently running monitoring thread to the user space via 'kdamond_pid' file in the debugfs directory. Signed-off-by: SeongJae Park --- mm/damon/dbgfs.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c index 02b27be9187a..aec2b7d81809 100644 --- a/mm/damon/dbgfs.c +++ b/mm/damon/dbgfs.c @@ -237,6 +237,32 @@ static ssize_t dbgfs_target_ids_write(struct file *file, return ret; } +static ssize_t dbgfs_kdamond_pid_read(struct file *file, + char __user *buf, size_t count, loff_t *ppos) +{ + struct damon_ctx *ctx = file->private_data; + char *kbuf; + ssize_t len; + + kbuf = kmalloc(count, GFP_KERNEL); + if (!kbuf) + return -ENOMEM; + + mutex_lock(&ctx->kdamond_lock); + if (ctx->kdamond) + len = scnprintf(kbuf, count, "%d\n", ctx->kdamond->pid); + else + len = scnprintf(kbuf, count, "none\n"); + mutex_unlock(&ctx->kdamond_lock); + if (!len) + goto out; + len = simple_read_from_buffer(buf, count, ppos, kbuf, len); + +out: + kfree(kbuf); + return len; +} + static int damon_dbgfs_open(struct inode *inode, struct file *file) { file->private_data = inode->i_private; @@ -258,10 +284,18 @@ static const struct file_operations target_ids_fops = { .write = dbgfs_target_ids_write, }; +static const struct file_operations kdamond_pid_fops = { + .owner = THIS_MODULE, + .open = damon_dbgfs_open, + .read = dbgfs_kdamond_pid_read, +}; + static int dbgfs_fill_ctx_dir(struct dentry *dir, struct damon_ctx *ctx) { - const char * const file_names[] = {"attrs", "target_ids"}; - const struct file_operations *fops[] = {&attrs_fops, &target_ids_fops}; + const char * const file_names[] = {"attrs", "target_ids", + "kdamond_pid"}; + const struct file_operations *fops[] = {&attrs_fops, &target_ids_fops, + &kdamond_pid_fops}; int i; for (i = 0; i < ARRAY_SIZE(file_names); i++)