From patchwork Mon Jun 28 13:33:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12348043 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 4E815C49EA3 for ; Mon, 28 Jun 2021 13:34:26 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 04D6761C3D for ; Mon, 28 Jun 2021 13:34:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 04D6761C3D 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 E68218D004D; Mon, 28 Jun 2021 09:34:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E42E98D0016; Mon, 28 Jun 2021 09:34:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB8FE8D004D; Mon, 28 Jun 2021 09:34:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0223.hostedemail.com [216.40.44.223]) by kanga.kvack.org (Postfix) with ESMTP id 9D1C18D0016 for ; Mon, 28 Jun 2021 09:34:24 -0400 (EDT) Received: from smtpin33.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 8EFA01DAE7 for ; Mon, 28 Jun 2021 13:34:24 +0000 (UTC) X-FDA: 78303226848.33.9BB1825 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) by imf23.hostedemail.com (Postfix) with ESMTP id 4FABEA0010C3 for ; Mon, 28 Jun 2021 13:34:24 +0000 (UTC) Received: by mail-qv1-f47.google.com with SMTP id 11so2555066qvh.3 for ; Mon, 28 Jun 2021 06:34:24 -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=CAWyn55jAy6QBa0v4wXy3wf41ZbR52B5jAw9LOUZo/A=; b=kIcRh7x9aQX1Emh5uZOc0m78Vl92vPe4ntdpd3HoWIvSyPxJbZV3BAOKerbKtDXbof T+hYR1crjkcm/BYbVegDOGPbQm9smcnXKHeVQVUw9B4Ic4fmQkAk3ZM5RMl8HwcZSRw0 +KUX2Zch+ZHl4irFXh2ZeZ9YdYVpCy59KyL0Hmu9I2cJNSkTzSGDGsmHgj+iMFODpggB qc/WShrHochc7tpYIDDcA7QB/JzHHoDiE0mA2i4TXrRjOOwqUfVsjMP8b83zxfgVOBA1 7P9yJ4CC1BjOcoYEphBczX2Y2+NqyHMpqqTh2migXmQ+oXUtM2UYaTajAjN4/Bqmi/AP PLug== 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=CAWyn55jAy6QBa0v4wXy3wf41ZbR52B5jAw9LOUZo/A=; b=I5S3nYzgbKLcbZH4GrCw3Mipa2nl9JFkHD7OMMyiJHjYox61zN7e9Sr03smAv1fMSm ZFVAOrFjDi4OCNlN+7VuFxAhkwuG48UqNTgNp3Pn9n5G/RBl+1JSYDU3AeEcLPTpFG67 bhBupUI3oz/tB3gTUFGna2VnwV02fv0f27uVOwAKiKeLI7vqlEnohXzIZxCG5GlstoC6 NeJKBrOCfVvHCzFzDS8o0iYf6AarUTIORHoWrxlZAOpqBTWFdkltgU27FQeV/ScLb+GC Chf7w3Y6BPMf7Y7Da2W8KC6Uh/LNJGp0ZFP9JImb2ZZmGk4CqGrH9FNPl8oFH6YXSuBO CHzw== X-Gm-Message-State: AOAM530fEfHboeInc/Py2vz2r3JykFjygymgSkE1QQxu34OSONqTUOEM k+I1dTMpvD4XU543NxWzVuU= X-Google-Smtp-Source: ABdhPJyWcAF0TkYN6LTTjchRpk8imKRALAQ8aH2/6bWxG28H9o66AoS1w6lB82ZYpDGtTiDKg2XwhQ== X-Received: by 2002:ad4:5004:: with SMTP id s4mr25926293qvo.8.1624887263752; Mon, 28 Jun 2021 06:34:23 -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 h1sm2276030qkm.50.2021.06.28.06.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Jun 2021 06:34:23 -0700 (PDT) From: SeongJae Park 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, greg@kroah.com, gthelen@google.com, guoju.fgj@alibaba-inc.com, jgowans@amazon.com, mgorman@suse.de, mheyne@amazon.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, sieberf@amazon.com, sj38.park@gmail.com, snu@zelle79.org, 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 v32 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Mon, 28 Jun 2021 13:33:50 +0000 Message-Id: <20210628133355.18576-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210628133355.18576-1-sj38.park@gmail.com> References: <20210628133355.18576-1-sj38.park@gmail.com> Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=kIcRh7x9; spf=pass (imf23.hostedemail.com: domain of sj38park@gmail.com designates 209.85.219.47 as permitted sender) smtp.mailfrom=sj38park@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: dywfgroiwtt9y6rp4tos7bmkb96qzqx8 X-Rspamd-Queue-Id: 4FABEA0010C3 X-Rspamd-Server: rspam06 X-HE-Tag: 1624887264-442261 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 Reviewed-by: Fernand Sieber --- mm/damon/dbgfs.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c index 322f624710d7..bd9bc6ede40e 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; @@ -256,10 +282,17 @@ static const struct file_operations target_ids_fops = { .write = dbgfs_target_ids_write, }; +static const struct file_operations kdamond_pid_fops = { + .open = damon_dbgfs_open, + .read = dbgfs_kdamond_pid_read, +}; + static void 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++)