git: 77153a491e3b - main - Split counting from sampling.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 06 Jan 2026 08:55:47 UTC
The branch main has been updated by gnn:
URL: https://cgit.FreeBSD.org/src/commit/?id=77153a491e3b31475f5faddb21271a0a8e0d4a9b
commit 77153a491e3b31475f5faddb21271a0a8e0d4a9b
Author: George V. Neville-Neil <gnn@FreeBSD.org>
AuthorDate: 2026-01-06 08:55:14 +0000
Commit: George V. Neville-Neil <gnn@FreeBSD.org>
CommitDate: 2026-01-06 08:55:42 +0000
Split counting from sampling.
---
tools/test/hwpmc/pmctest.py | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/tools/test/hwpmc/pmctest.py b/tools/test/hwpmc/pmctest.py
index 8accdf09e69a..588fe6d79e83 100755
--- a/tools/test/hwpmc/pmctest.py
+++ b/tools/test/hwpmc/pmctest.py
@@ -42,7 +42,8 @@ def main():
parser = argparse.ArgumentParser(description='Exercise a program under hwpmc')
parser.add_argument('--program', type=str, required=True, help='target program')
parser.add_argument('--wait', action='store_true', help='Wait after each counter.')
- parser.add_argument('--exercise', action='store_true', help='Exercise the program being studied using sampling counters.')
+ parser.add_argument('--count', action='store_true', help='Exercise the program being studied using counting mode pmcs.')
+ parser.add_argument('--sample', action='store_true', help='Exercise the program being studied using sampling mode pmcs.')
args = parser.parse_args()
@@ -52,22 +53,38 @@ def main():
print("no counters found")
sys.exit()
+ if args.count == True and args.sample == True:
+ print("Choose one of --count OR --sample.")
+ sys.exit()
+
program = Path(args.program).name
- if args.exercise == True:
- tmpdir = tempfile.mkdtemp(prefix=program + "-", suffix="-pmc")
+ if args.count == True:
+ tmpdir = tempfile.mkdtemp(prefix=program + "-", suffix="-counting-pmc")
+ print("Exercising program ", args.program, " storing results data in ", tmpdir)
+
+ if args.sample == True:
+ tmpdir = tempfile.mkdtemp(prefix=program + "-", suffix="-sampling-pmc")
print("Exercising program ", args.program, " storing results data in ", tmpdir)
for counter in counters:
if counter in notcounter:
continue
- if args.exercise == True:
+ if args.count == True:
+ with open(tmpdir + "/" + program + "-" + counter + ".txt", 'w') as file:
+ p = subprocess.Popen(["pmcstat",
+ "-p", counter, args.program],
+ text=True, stderr=file, stdout=file)
+ result = p.communicate()[1]
+ print(result)
+ elif args.sample == True:
p = subprocess.Popen(["pmcstat",
"-O", tmpdir + "/" + program + "-" + counter + ".pmc",
"-P", counter, args.program],
text=True, stderr=PIPE)
result = p.communicate()[1]
print(result)
+
else:
p = subprocess.Popen(["pmcstat", "-p", counter, args.program],
text=True, stderr=PIPE)