summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.examples/process
diff options
context:
space:
mode:
authorWilliam Cohen <wcohen@redhat.com>2009-07-17 15:18:51 -0400
committerWilliam Cohen <wcohen@redhat.com>2009-07-17 15:18:51 -0400
commitdeb635455c042a10cc74a45c9ef02458d890946f (patch)
tree576daa83bb6c72a98e1130965b156d4f6cc4d2a8 /testsuite/systemtap.examples/process
parent4bb6522cf62ade81ebdf578d187c93e5880e18be (diff)
downloadsystemtap-steved-deb635455c042a10cc74a45c9ef02458d890946f.tar.gz
systemtap-steved-deb635455c042a10cc74a45c9ef02458d890946f.tar.xz
systemtap-steved-deb635455c042a10cc74a45c9ef02458d890946f.zip
Add chng_cpu.stp and migrate.stp examples.
Diffstat (limited to 'testsuite/systemtap.examples/process')
-rw-r--r--testsuite/systemtap.examples/process/chng_cpu.meta14
-rwxr-xr-xtestsuite/systemtap.examples/process/chng_cpu.stp31
-rw-r--r--testsuite/systemtap.examples/process/migrate.meta14
-rwxr-xr-xtestsuite/systemtap.examples/process/migrate.stp27
4 files changed, 86 insertions, 0 deletions
diff --git a/testsuite/systemtap.examples/process/chng_cpu.meta b/testsuite/systemtap.examples/process/chng_cpu.meta
new file mode 100644
index 00000000..944f417a
--- /dev/null
+++ b/testsuite/systemtap.examples/process/chng_cpu.meta
@@ -0,0 +1,14 @@
+title: Monitor Changes in Processor Executing a Task
+name: chng_cpu.stp
+version: 1.0
+author: Ankita Garg at IBM
+keywords: scheduler
+subsystem: scheduler
+status: production
+exit: user-controlled
+output: trace
+scope: pid
+description: The chng_cpu.stp script takes an argument which is the executable name of the task it should monitor. Each time a task with that executable name is found running on a different processor, the script prints out the thread id (tid), the executable name, the processor now running the task, the thread state, and a backtrace showing the kernel functions that triggered the running of the task on the processor.
+arg_1: The name of the executable to monitor
+test_check: stap -p4 chng_cpu.stp bash
+test_installcheck: stap chng_cpu.stp -c "sleep 1" bash
diff --git a/testsuite/systemtap.examples/process/chng_cpu.stp b/testsuite/systemtap.examples/process/chng_cpu.stp
new file mode 100755
index 00000000..5617ec03
--- /dev/null
+++ b/testsuite/systemtap.examples/process/chng_cpu.stp
@@ -0,0 +1,31 @@
+#! /usr/bin/env stap
+/* Filename: chng_cpu.stp
+ * Author: Ankita Garg <ankita@in.ibm.com>
+ * Description: Captures information on the number of times an executable
+ * switches cpu
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Copyright (C) IBM Corp. 2009. All Rights Reserved.
+ *
+ */
+
+global threads
+
+probe scheduler.cpu_on
+{
+ if ((threads[tid()] != cpu() && (execname() == @1))) {
+ printf("\nthread %d (%s) context switched on cpu%d state: %d\n",
+ tid(), execname(), cpu(), task_state(task_current()));
+ print_stack(backtrace());
+ threads[tid()] = cpu();
+ }
+}
diff --git a/testsuite/systemtap.examples/process/migrate.meta b/testsuite/systemtap.examples/process/migrate.meta
new file mode 100644
index 00000000..09a25de0
--- /dev/null
+++ b/testsuite/systemtap.examples/process/migrate.meta
@@ -0,0 +1,14 @@
+title: Track the Migration of Specific Executables
+name: migrate.stp
+version: 1.0
+author: Ankita Garg at IBM
+keywords: scheduler
+subsystem: scheduler
+status: production
+exit: user-controlled
+output: trace
+scope: pid
+description: The migrate.stp script takes an argument which is the executable name of the task it should monitor. Each time a task with that executable name migrates between processors an entry is printed with the process id (pid), the executable name, the processor off loading the task, and the process taking the task. Note that the task may or may not be executing at the time of the migration.
+arg_1: The name of the executable to watch
+test_check: stap -p4 migrate.stp bash
+test_installcheck: stap migrate.stp -c "sleep 1" bash
diff --git a/testsuite/systemtap.examples/process/migrate.stp b/testsuite/systemtap.examples/process/migrate.stp
new file mode 100755
index 00000000..601938f8
--- /dev/null
+++ b/testsuite/systemtap.examples/process/migrate.stp
@@ -0,0 +1,27 @@
+#! /usr/bin/env stap
+/* Filename: migrate.stp
+ * Author: Ankita Garg <ankita@in.ibm.com>
+ * Description: Captures information on the migration of a thread
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Copyright (C) IBM Corp. 2009. All Rights Reserved.
+ *
+*/
+
+probe kernel.function("__migrate_task")
+{
+ comm = kernel_string($p->comm);
+ if (comm == @1) {
+ printf ("thread %d (%s) is migrating from %d to %d \n",
+ $p->pid, comm, $src_cpu, $dest_cpu);
+ }
+}