From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 491FFCDB482 for ; Fri, 13 Oct 2023 19:05:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA9C780063; Fri, 13 Oct 2023 15:04:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D59D48D0015; Fri, 13 Oct 2023 15:04:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C225080063; Fri, 13 Oct 2023 15:04:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B29438D0015 for ; Fri, 13 Oct 2023 15:04:59 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 85970160486 for ; Fri, 13 Oct 2023 19:04:59 +0000 (UTC) X-FDA: 81341365518.29.AB7921B Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf22.hostedemail.com (Postfix) with ESMTP id B8987C0140 for ; Fri, 13 Oct 2023 19:04:32 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=QEJ7308y; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf22.hostedemail.com: domain of audra@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=audra@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697223872; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mbcGDdPDyjQuCaqCE5MIIL6VIXi6uhOqjz8GCAoYgAs=; b=eb9A1qBS1coWgHTxnXDfO1Re7QSTrH/RYtbVAjJ2tacwQcU59i2kn6BijvFr/cBsF0YX43 6OdcV96oV2tluuARuo0yM3jAWEl1SPhbvowad1PiImzCRUJFxZHKGq03VjF5Xzbm8RwfLA 9JDMMHmML2pI5p7eiYuYzswLPcaYh/g= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=QEJ7308y; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf22.hostedemail.com: domain of audra@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=audra@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697223872; a=rsa-sha256; cv=none; b=HRCrzauPBHZyTROT2EiV714gpewfY7B7ULjwp9srmnn0BOdzLtu//nAhjjeXhaFDzXvumn cySkWoRo4eUWFUfs8u9QQkdJNTOAYEtGu8xKBxwtZd+RLQqo5A7rZvucGc8ukZ/sby74bT 4LRedzxzCvjPenbuyESdCoAUi4eE1B0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697223871; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mbcGDdPDyjQuCaqCE5MIIL6VIXi6uhOqjz8GCAoYgAs=; b=QEJ7308yCLN7gdXapeovVij1isOyneLaHBywaDGmaGzM/QiG7Qsudtsb2XZx3KM48Hee7h B1D9ASSM+Gcxpw0YOUoz1lx+zMC1M9uqyOdaJqOdwGxMcM/C+eHk/7a+z0D35rCXWWmgvy 3fF1fXzTmg6Gy7njbh4xMxEBO+0WzQw= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-283-jTkVSu38NWqJ-9Hlh8G7xw-1; Fri, 13 Oct 2023 15:04:07 -0400 X-MC-Unique: jTkVSu38NWqJ-9Hlh8G7xw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C9D661029F40; Fri, 13 Oct 2023 19:04:06 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.22.33.110]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8F2432157F5A; Fri, 13 Oct 2023 19:04:06 +0000 (UTC) From: Audra Mitchell To: linux-mm@kvack.org Cc: raquini@redhat.com, akpm@linux-foundation.org, djakov@kernel.org, vbabka@suse.cz, linux-kernel@vger.kernel.org Subject: [PATCH 4/5] tools/mm: Fix the default case for page_owner_sort Date: Fri, 13 Oct 2023 15:03:48 -0400 Message-ID: <20231013190350.579407-5-audra@redhat.com> In-Reply-To: <20231013190350.579407-1-audra@redhat.com> References: <20231013190350.579407-1-audra@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B8987C0140 X-Stat-Signature: 6bd9pm6jy55kfbbreni5wczwwj94wsfp X-HE-Tag: 1697223872-435481 X-HE-Meta: U2FsdGVkX1/TqcidKQl77hJh1lPeYjBZmdO0h7AQx54ZG7ASmFWjxbIU3tkGMSIAzVH51ZHYagWYTrcKoYsSyEH76NDbYJMgJgGlBOYuzhc0e8mC/2sdHxgrX/oD0/tRo0u1hiAQfCyt4O0oJS4s4TOn2OmIp2STJYI8VgOAxLT2jbgP2lSn+8UT9fNGwJ3Yag753TH8BN8QQyUl9ugwK+BrcMpTE7g9o1J/+4cqnxX4fyvEoUqz1Q+MbaTfc0VQQtdVk6IYQPi65lRtR5xHAdfxyfV0LAQWtak6ilbCd0CkVjzxGimtc+UKJZlGL99io7GrWC2QEW3nLapQaWaXi4r+5qrWna420ONN5EEB/tCDVsfOSAJUxSPBEZbEpAPrqC/90Wg7nofYBk3jbpMhfRNuIb4zMN9h4IUuMfjqJo1SOs7txwl3slkYQJ8TcVI3M34EqN0o1UIHc57LPQWauULgDzi/G2C7dQKLs9BmOQida8/Qr6t0/vsP1iWYHsVuzY1KcTT4QP6wCxbpMXoS812+KZ7P66IcZXAFf5kgD50b5jLFI2FmvxFIl3HoPYdaEJIZLT/L9N87ciU1fxQoHcrmLCuMozyIyCAMA6RN0Do86sXy25cXxGTbdD0M4tIaNUK+rJTMNfkF966uPdljve/eXZAEOqsNN9zZQsnKCG6SyJ6f5D8M8dxsN/FropdAi8WRK5LWxMhWaXsOz+PHH/sJBrqb1+oH69OFrmUOUJ210jowH9IQZ7vYrTzKI5r+dPs4GF8n0dhwvtXNoU1Eaiu3+j94VQ0GzEJjdSkGjgIXLbpLv164PnVQ2k1TwGEvPX+0mWoUXpj7brGAQswuaJ/jeKEEf7bkmuVQ1PP9TF33uRvgueYWu+AYL/UgUtIGANaI8sH5Sz5hBdJJ/lKnS6Mhzv9fHCKzoPOikhM43zsEpzY8HmOXFl/BmeTt/HQdfJewuc5BmIlv6drcHLg f0n1KwlF XKnKocb5Cqy129kY12ReGAhlrx1zyqvx87R5tN/yLrWKLVn+AKPfaNG2FvCPh3k3JQ+zH35BQpzux83k9sXt0ZK/GTM7rlklWOuQD9sjSAS8wjNfAsvQbiRv1GOTbbLepDS4fcp/jwD6Re4VciPdShOOsNIgY3O2s1FlMWQDP4HEtVrLO1WiuZV6f/3SHJ2ND3rxKMd9EZmu/YWQgM+Z1CG1JVA== 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: With the additional commands and timestamps added to the tool, the default case (-t) has been broken. Now that the allocation timestamps are saved outside of the txt field, allow us to properly sort the data by number of times the record has been seen. Furthermore prevent the misuse of the commandline arguments so only one compare option can be used. Signed-off-by: Audra Mitchell --- tools/mm/page_owner_sort.c | 61 +++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/tools/mm/page_owner_sort.c b/tools/mm/page_owner_sort.c index 7ddabcb3a073..5a260096ebaa 100644 --- a/tools/mm/page_owner_sort.c +++ b/tools/mm/page_owner_sort.c @@ -66,6 +66,16 @@ enum SORT_ORDER { SORT_ASC = 1, SORT_DESC = -1, }; +enum COMP_FLAG { + COMP_NO_FLAG = 0, + COMP_ALLOC = 1<<0, + COMP_PAGE_NUM = 1<<1, + COMP_PID = 1<<2, + COMP_STACK = 1<<3, + COMP_NUM = 1<<4, + COMP_TGID = 1<<5, + COMP_COMM = 1<<6 +}; struct filter_condition { pid_t *pids; pid_t *tgids; @@ -644,7 +654,7 @@ int main(int argc, char **argv) { FILE *fin, *fout; char *buf, *ext_buf; - int i, count; + int i, count, compare_flag; struct stat st; int opt; struct option longopts[] = { @@ -656,31 +666,33 @@ int main(int argc, char **argv) { 0, 0, 0, 0}, }; + compare_flag = COMP_NO_FLAG; + while ((opt = getopt_long(argc, argv, "admnpstP", longopts, NULL)) != -1) switch (opt) { case 'a': - set_single_cmp(compare_ts, SORT_ASC); + compare_flag |= COMP_ALLOC; break; case 'd': debug_on = true; break; case 'm': - set_single_cmp(compare_page_num, SORT_DESC); + compare_flag |= COMP_PAGE_NUM; break; case 'p': - set_single_cmp(compare_pid, SORT_ASC); + compare_flag |= COMP_PID; break; case 's': - set_single_cmp(compare_stacktrace, SORT_ASC); + compare_flag |= COMP_STACK; break; case 't': - set_single_cmp(compare_num, SORT_DESC); + compare_flag |= COMP_NUM; break; case 'P': - set_single_cmp(compare_tgid, SORT_ASC); + compare_flag |= COMP_TGID; break; case 'n': - set_single_cmp(compare_comm, SORT_ASC); + compare_flag |= COMP_COMM; break; case 1: filter = filter | FILTER_PID; @@ -728,6 +740,39 @@ int main(int argc, char **argv) exit(1); } + /* Only one compare option is allowed, yet we also want handle the + * default case were no option is provided, but we still want to + * match the behavior of the -t option (compare by number of times + * a record is seen + */ + switch (compare_flag) { + case COMP_ALLOC: + set_single_cmp(compare_ts, SORT_ASC); + break; + case COMP_PAGE_NUM: + set_single_cmp(compare_page_num, SORT_DESC); + break; + case COMP_PID: + set_single_cmp(compare_pid, SORT_ASC); + break; + case COMP_STACK: + set_single_cmp(compare_stacktrace, SORT_ASC); + break; + case COMP_NO_FLAG: + case COMP_NUM: + set_single_cmp(compare_num, SORT_DESC); + break; + case COMP_TGID: + set_single_cmp(compare_tgid, SORT_ASC); + break; + case COMP_COMM: + set_single_cmp(compare_comm, SORT_ASC); + break; + default: + usage(); + exit(1); + } + fin = fopen(argv[optind], "r"); fout = fopen(argv[optind + 1], "w"); if (!fin || !fout) { -- 2.41.0