From patchwork Wed Jun 16 07:31:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12324409 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 74538C49EA2 for ; Wed, 16 Jun 2021 07:31:51 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2721B60C41 for ; Wed, 16 Jun 2021 07:31:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2721B60C41 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 599366B0078; Wed, 16 Jun 2021 03:31:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 570376B007B; Wed, 16 Jun 2021 03:31:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 437FA6B007D; Wed, 16 Jun 2021 03:31:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 15FF16B0078 for ; Wed, 16 Jun 2021 03:31:50 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id B330D8249980 for ; Wed, 16 Jun 2021 07:31:49 +0000 (UTC) X-FDA: 78258767538.04.40F8E8C Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by imf18.hostedemail.com (Postfix) with ESMTP id 471EC200107C for ; Wed, 16 Jun 2021 07:31:40 +0000 (UTC) Received: by mail-qk1-f182.google.com with SMTP id c18so1605595qkc.11 for ; Wed, 16 Jun 2021 00:31:49 -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=27fs4ayWfwDx66gepojtp7zAr2zH3uKkjECbTbsrrQM=; b=jyer3sBmKMRf2V2n7cpG2hLatrNS1r/8fSSKAeIbpQ+GMJY9L4YL45268EVFSmtDX4 bQevQyR8lCW3uwiA2Uy2zBaOc22DqRMgUYUhsXw6Ck36sEFbKk0JYIJccxPWkqS/vl7T 9ssPje6pABpHHo9QempP2D7obPC9MXel3nFIrHOfnK5IpvP+qEeLVl6HExxjZHPQVnrG PUrTrzefBI7AB30pxX+Kp/5cLn/XXTN7sU2XhkK2VEdq+2kV3gRrgVrKb9hLleamLw3g zsg8mAgjfzmPDhIMonBHoFmR2ZrTX5TSA6ClQtoMwUtWcfDtdy3889KjmQ+r0iEfRDJB Rmsg== 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=27fs4ayWfwDx66gepojtp7zAr2zH3uKkjECbTbsrrQM=; b=XYZ+uvnONa7MBR3NutWTKhHZqQWAZgGhe6IGHUBDWFg2RSCqYMSozDwJXkh//UvCBf Gh+KCzI8O/peRqTCuMFR4RgZiphIXajGW2QZkDAfKkT50kN1v09qH2h0zRZpXVtAwbQP rgqHGcMfQZnUYtKhOlgH0uCx0VBzrPeWNPs2on4bqG4PDX6Julzy1jN5G6ZueZP2YGnH Lr+qIdKAfrVZoBf1E51CuqUaAo1Wq0w+kZmxkBl3zp24aZVfLitACHeIH5KqF7OQ5deD kwBR3htz1P8+LAN9tGyf6MOvo4o9xZtOqEOQnP0gAk2Jmi1qByABEnccOssweflV1g8E XtSw== X-Gm-Message-State: AOAM533kvyBex3FAiuuE0ZQ+vjXhRuAykVuOsHo+9DcmQvNskaDQFdVQ bE5Of1ko8yXfijLEkxaniY0= X-Google-Smtp-Source: ABdhPJxkPgaqbDsIKxTzfPCdvreeKQNdMzWFxQNE3BD2Bj7Ckj0tHvBCzEatZRfm4+/cqtJJBWCraw== X-Received: by 2002:a37:be44:: with SMTP id o65mr3772815qkf.29.1623828708880; Wed, 16 Jun 2021 00:31:48 -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 h5sm1080697qkg.122.2021.06.16.00.31.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 00:31:48 -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 v30 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Wed, 16 Jun 2021 07:31:14 +0000 Message-Id: <20210616073119.16758-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210616073119.16758-1-sj38.park@gmail.com> References: <20210616073119.16758-1-sj38.park@gmail.com> Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=jyer3sBm; spf=pass (imf18.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-Stat-Signature: 9t33mjwfq48paixncfskwn7rzaznon58 X-Rspamd-Queue-Id: 471EC200107C X-Rspamd-Server: rspam06 X-HE-Tag: 1623828700-388730 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 c4a4a6f1dc79..524362f8c628 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++)