From patchwork Thu May 20 07:56:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12269335 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 457B7C433ED for ; Thu, 20 May 2021 07:57:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D32E3611AE for ; Thu, 20 May 2021 07:57:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D32E3611AE 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 89D576B0075; Thu, 20 May 2021 03:57:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 850476B0078; Thu, 20 May 2021 03:57:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 652416B007B; Thu, 20 May 2021 03:57:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0181.hostedemail.com [216.40.44.181]) by kanga.kvack.org (Postfix) with ESMTP id 32E036B0075 for ; Thu, 20 May 2021 03:57:04 -0400 (EDT) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 8D74412F9 for ; Thu, 20 May 2021 07:57:03 +0000 (UTC) X-FDA: 78160853526.14.0F61852 Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by imf06.hostedemail.com (Postfix) with ESMTP id C7387C0042C4 for ; Thu, 20 May 2021 07:57:01 +0000 (UTC) Received: by mail-qk1-f182.google.com with SMTP id 76so15246634qkn.13 for ; Thu, 20 May 2021 00:57:03 -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=eYTdxL2E49yq4b0Ub99eMeKNygqCtQlWSQ8UNjQ6vgA=; b=c9FVE5uwYIM3lXv+C3JpSBaly9KVd8wPMpzBIplRSw/HW329GASetd1p+9g0bO+5xY CynrJ0Yz0EpQvIKkuGI/tiweDmkLJL8+CCf7QuFITRsAzE9ee+E234Fpq/w81rGm7Cc7 tay/NVe4d81fi9/3JXrH2XmjRFPXGxO4BhbrGIHaeUp1/Uw8RDNQ76w6EJPUBybImOwU 01FwgIiDxlf2wkB0nhrrEFovmZ17UTDPBGR05jGl6dz+e5K5Y4UA/bIYa56c5sZ+hvSD czcLoKZIz/TqJzkTOmUvYKIfAb71jKyXHoEKkWC1+xhMrRs9ZHqT2OBB9MCbhkhw3RRx iq5Q== 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=eYTdxL2E49yq4b0Ub99eMeKNygqCtQlWSQ8UNjQ6vgA=; b=P32lR+Q3QiSRxg6f48/hJcVKl5oukWfG3Topl8SjIszbrY9NbA6e/bNS4kvOG4Slqi /Uz31INYX2I//25ahGxbKkAXGiTB4hdK8KE0nR8IL53puwFXEGI28hbenrJGwZm/paSr +rtYpHod4rG8KvEB3xsjjvgWO1iNlEuMc74fGhjzVVWqtsIyUQ7jyk6HFB0tNmwXob31 gSCNdFfpVTWXg+93ftZBpGh3/F1Pm9sj/Z9/qpzbQw5NI7qVKPr5n+dcGOrvjd1Ri1Yb QRd9ZJMwv2KEsx7VZFd1dnJEgTKyUyzFvIKBaGYM+KB8W42A+zFG1eTlxK2ch7cOoTkw PMKg== X-Gm-Message-State: AOAM530BhYbw9iUNYPZSnQ4m4ZK/2ouLSb92reDcCUlhswmypn35sI3a 3n2tf+/PS0oLzxZypBK3IAA= X-Google-Smtp-Source: ABdhPJzpa41hVSwqynBA/vWcMdswyjw5aWK6S73xsrvkJYfnHfkiyS+tdMGNQVFSU0rk51h7lsgAXg== X-Received: by 2002:a05:620a:21c5:: with SMTP id h5mr3410195qka.395.1621497422822; Thu, 20 May 2021 00:57:02 -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 g9sm1478254qka.38.2021.05.20.00.57.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 May 2021 00:57:02 -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, 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 v29 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Thu, 20 May 2021 07:56:24 +0000 Message-Id: <20210520075629.4332-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210520075629.4332-1-sj38.park@gmail.com> References: <20210520075629.4332-1-sj38.park@gmail.com> X-Rspamd-Queue-Id: C7387C0042C4 Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=c9FVE5uw; spf=pass (imf06.hostedemail.com: domain of sj38park@gmail.com designates 209.85.222.182 as permitted sender) smtp.mailfrom=sj38park@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam04 X-Stat-Signature: 9cnucbnu698cefw8h6w8s594ixpsp6uo X-HE-Tag: 1621497421-76585 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 | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c index 17c7878cfcb8..67b273472c0b 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 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++)