From patchwork Thu Apr 8 13:48:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12191161 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.7 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 E4BCDC43460 for ; Thu, 8 Apr 2021 13:49:35 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 783E7610E5 for ; Thu, 8 Apr 2021 13:49:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 783E7610E5 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 8DDF26B0089; Thu, 8 Apr 2021 09:49:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8919A6B008A; Thu, 8 Apr 2021 09:49:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6BAD26B008C; Thu, 8 Apr 2021 09:49:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0204.hostedemail.com [216.40.44.204]) by kanga.kvack.org (Postfix) with ESMTP id 4AD746B0089 for ; Thu, 8 Apr 2021 09:49:26 -0400 (EDT) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 0573F181AC544 for ; Thu, 8 Apr 2021 13:49:26 +0000 (UTC) X-FDA: 78009331932.01.DC2CD79 Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by imf02.hostedemail.com (Postfix) with ESMTP id EDA7340002F2 for ; Thu, 8 Apr 2021 13:49:15 +0000 (UTC) Received: by mail-qt1-f181.google.com with SMTP id s2so1392459qtx.10 for ; Thu, 08 Apr 2021 06:49:25 -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=dsfUiNEtUfgASDGDNGVkgQgo9ssjMF6aUvvvoPabB6I=; b=pNwd5y5lu37bj5Be+5mulhAmZ1VSddSiMq2ZmCZbcb+XCLkSLM+h4FOQERy8Bl8auU uRF7V+W4wFtM5T8Pg7ciCa9MTW8kdgJubnoDofIEqJ2k2gF90VPgOXN8c5PvkH7rwHRc T7v/XT4Zi1zWcOL1R5w5/K3e+iwd7IY/1S3E/W4CuNuwfSFS1p1rLRHAdynBGIy6/nV6 YtvfZlHKUWlSAYLYNVZMDcZQ+xkrBOfVdWtwJMaBHkMK8PtangkrTSYABkj1Cd8cykDL sIH1R62/257PVGtSbx809oR7KCnrPq2WLnD0X9ZmDTaq66fGkbd66vMl+yQsqWmNqh/M jjSQ== 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=dsfUiNEtUfgASDGDNGVkgQgo9ssjMF6aUvvvoPabB6I=; b=h47Mk9//TQq0SUcB0rnEXCfgVnvDwgKtSKWsUf0Iga2zDTKpVlNz/ThFyD/t6dhTMZ OvnSRgIsZg4B/HWXw0g8VGXzzvTIykBDqwFx8dIZ31azE6w+YEz2TAwoteuvhNtzVdgC MbLxbSUQ8yjlwd2GcnW18Vp3BCgrFphnCh6v3zlsDCuAvtFV3paQCuJuRSyiOkHhkPTW w6Yg0DlSr5qiVcu3Z5o8w3Yk42MwZ5kUlLGBLde8Z4aJi69UkF9x9N23efeYZGofRkKV EDey9koXGNF2kNF7m0e+9dILh96cD1OouTD56tsEuM2GptB+735g0hvjVdKP8NgR0fNO Z6YA== X-Gm-Message-State: AOAM531XbUg3B9kkqkbt3hnGUSTbZSFOHKJ5guuDoh5Hbk2TD4YXv4Ed BEVm3fStCFjELWUGrn4fYgs= X-Google-Smtp-Source: ABdhPJzA1A5Bl8ERELYqgtsMPy9JZI3enWfd58esumlsiguBmQn88nnNz32jVrczXIBL/jgNjwMgJA== X-Received: by 2002:ac8:6f0b:: with SMTP id g11mr7540132qtv.12.1617889764938; Thu, 08 Apr 2021 06:49:24 -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 h16sm506094qkh.18.2021.04.08.06.49.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Apr 2021 06:49:24 -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 v27 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Thu, 8 Apr 2021 13:48:49 +0000 Message-Id: <20210408134854.31625-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210408134854.31625-1-sj38.park@gmail.com> References: <20210408134854.31625-1-sj38.park@gmail.com> X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: EDA7340002F2 X-Stat-Signature: i7z1p5duf8kqicejusib9f68ymb3mz8w Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf02; identity=mailfrom; envelope-from=""; helo=mail-qt1-f181.google.com; client-ip=209.85.160.181 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1617889755-471377 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 9af844faffd4..b20c1e7742ce 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++)