From patchwork Tue Apr 13 14:28:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 12200703 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=unavailable 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 21F4DC43461 for ; Tue, 13 Apr 2021 14:29:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C12AB613B2 for ; Tue, 13 Apr 2021 14:29:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C12AB613B2 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 6F3A76B0078; Tue, 13 Apr 2021 10:29:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A4146B007B; Tue, 13 Apr 2021 10:29:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F9E26B007D; Tue, 13 Apr 2021 10:29:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0229.hostedemail.com [216.40.44.229]) by kanga.kvack.org (Postfix) with ESMTP id 359396B0078 for ; Tue, 13 Apr 2021 10:29:36 -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 DB0AD12D9AE for ; Tue, 13 Apr 2021 14:29:35 +0000 (UTC) X-FDA: 78027577110.14.AD813B4 Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) by imf21.hostedemail.com (Postfix) with ESMTP id 9D2E7E000105 for ; Tue, 13 Apr 2021 14:29:33 +0000 (UTC) Received: by mail-qk1-f178.google.com with SMTP id i9so18002690qka.2 for ; Tue, 13 Apr 2021 07:29:35 -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=Wz8kRlNr4zj9Wxg3LJJXUtaqyTxuCR5hEZ//Hpw6L2z+VO641agxv0ky6VroYNJXM3 hFEn3rtK8m8eMGPclor2d8elOgrV9O+kZfn6XAR8SHqDrvcaDBU/YpnvAQYBbEOCdH3J x4nsQyZegO/jBr4MTsVt/6Sz2Py+qIQhOmiQsHLwFBWW2kGpaVSpOKO5AHJ78ihX0KG2 NrsUySVuck0nlJN25eInOl3+RbV2YsQ21dF/e7atfNcWiOZK64jaKFeHeE0L8yi8ZZ9V qgYtxadBmATKZOHJXAEXPMmo2YFi11D/nuiAnUafPoyUGTIzjRoUcQK3Aid7+icpMcme G9Zw== 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=LvJ9AXZjpd1QqUWx4aPQDevY9o5QQEANQQN3uOp4C9MCENrbMIx6BYRGBnsu2qtj9+ XCsBNmetKIjRwbdz5/8OXZfbC5yK5hnhsjPXFIgQOF1OHk3M20Y6lFaAa4jekayzIKfm MnXiAN/CCYFHXZHpxjjJo7biogFMggDDhhxqBkuTy0GTUtjrylIa37rL2o1EzYLQy1Im mC3SbsKFXlYfJ2rFIGkGxesCmzA3GvDnl61P4mC9xseLCVK1OJvi8XDRqFqgvqq2tCxp f9il1ULv3LGfiU2FJGzl4MZtAmyCLsQ3W/VZsPKdQlSsSYOUyyoDJZI53Qc2iFAHNGxe DWRA== X-Gm-Message-State: AOAM532zLwegm21aXNgGEi9bfWZ3/Qyb7xO7suo3B24nGzhu3+9/W5Fk QqrMQk0uYvMZ77RWzbznMYs= X-Google-Smtp-Source: ABdhPJxQnXlkyAbIHRo5s7SK/my4hQVkz/C02pOx0AYmMEkXxRiK2i7wI9iMKMnx8/oC068AtCo1AA== X-Received: by 2002:a37:64c3:: with SMTP id y186mr25700000qkb.244.1618324174723; Tue, 13 Apr 2021 07:29:34 -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 2sm6160911qko.134.2021.04.13.07.29.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 07:29:34 -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 v28 08/13] mm/damon/dbgfs: Export kdamond pid to the user space Date: Tue, 13 Apr 2021 14:28:59 +0000 Message-Id: <20210413142904.556-9-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210413142904.556-1-sj38.park@gmail.com> References: <20210413142904.556-1-sj38.park@gmail.com> X-Rspamd-Queue-Id: 9D2E7E000105 X-Stat-Signature: mcz3y5aaow33mwi5mhmgs1xqbaydz3q4 X-Rspamd-Server: rspam02 Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf21; identity=mailfrom; envelope-from=""; helo=mail-qk1-f178.google.com; client-ip=209.85.222.178 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1618324173-842966 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 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++)