summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuite/systemtap.examples/index.html6
-rw-r--r--testsuite/systemtap.examples/index.txt23
-rw-r--r--testsuite/systemtap.examples/keyword-index.html6
-rw-r--r--testsuite/systemtap.examples/keyword-index.txt23
-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
8 files changed, 144 insertions, 0 deletions
diff --git a/testsuite/systemtap.examples/index.html b/testsuite/systemtap.examples/index.html
index 4ddf82f4..41c9855e 100644
--- a/testsuite/systemtap.examples/index.html
+++ b/testsuite/systemtap.examples/index.html
@@ -121,6 +121,9 @@ keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-inde
<li><a href="network/tcpipstat.stp">network/tcpipstat.stp</a> - Display network statistics for individual TCP sockets.<br>
keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-index.html#STATISTICS">STATISTICS</a> <br>
<p>tcpipstat collects and display network statistics related to individual TCP sockets or groups of sockets. The statistics that are collected are simmer to that of the command netstat -s, only sorted and grouped by individual sockets.</p></li>
+<li><a href="process/chng_cpu.stp">process/chng_cpu.stp</a> - Monitor Changes in Processor Executing a Task<br>
+keywords: <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <br>
+<p>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.</p></li>
<li><a href="process/errsnoop.stp">process/errsnoop.stp</a> - tabulate system call errors<br>
keywords: <a href="keyword-index.html#PROCESS">PROCESS</a> <a href="keyword-index.html#SYSCALL">SYSCALL</a> <br>
<p>The script prints a periodic tabular report about failing system calls, by process and by syscall failure. The first optional argument specifies the reporting interval (in seconds, default 5); the second optional argument gives a screen height (number of lines in the report, default 20).</p></li>
@@ -130,6 +133,9 @@ keywords: <a href="keyword-index.html#PROCESS">PROCESS</a> <a href="keyword-inde
<li><a href="process/futexes.stp">process/futexes.stp</a> - System-Wide Futex Contention<br>
keywords: <a href="keyword-index.html#SYSCALL">SYSCALL</a> <a href="keyword-index.html#LOCKING">LOCKING</a> <a href="keyword-index.html#FUTEX">FUTEX</a> <br>
<p>The script watches the futex syscall on the system. On exit the futexes address, the number of contentions, and the average time for each contention on the futex are printed from lowest pid number to highest.</p></li>
+<li><a href="process/migrate.stp">process/migrate.stp</a> - Track the Migration of Specific Executables<br>
+keywords: <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <br>
+<p>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.</p></li>
<li><a href="process/pf2.stp">process/pf2.stp</a> - Profile kernel functions<br>
keywords: <a href="keyword-index.html#PROFILING">PROFILING</a> <br>
<p>The pf2.stp script sets up time-based sampling. Every five seconds it prints out a sorted list with the top ten kernel functions with samples.</p></li>
diff --git a/testsuite/systemtap.examples/index.txt b/testsuite/systemtap.examples/index.txt
index 49a7e89b..98d96302 100644
--- a/testsuite/systemtap.examples/index.txt
+++ b/testsuite/systemtap.examples/index.txt
@@ -261,6 +261,18 @@ keywords: network statistics
and grouped by individual sockets.
+process/chng_cpu.stp - Monitor Changes in Processor Executing a Task
+keywords: scheduler
+
+ 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.
+
+
process/errsnoop.stp - tabulate system call errors
keywords: process syscall
@@ -288,6 +300,17 @@ keywords: syscall locking futex
highest.
+process/migrate.stp - Track the Migration of Specific Executables
+keywords: scheduler
+
+ 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.
+
+
process/pf2.stp - Profile kernel functions
keywords: profiling
diff --git a/testsuite/systemtap.examples/keyword-index.html b/testsuite/systemtap.examples/keyword-index.html
index 3eeee14b..8fa74d9f 100644
--- a/testsuite/systemtap.examples/keyword-index.html
+++ b/testsuite/systemtap.examples/keyword-index.html
@@ -264,9 +264,15 @@ keywords: <a href="keyword-index.html#SYSCALL">SYSCALL</a> <a href="keyword-inde
</ul>
<h3><a name="SCHEDULER">SCHEDULER</a></h3>
<ul>
+<li><a href="process/chng_cpu.stp">process/chng_cpu.stp</a> - Monitor Changes in Processor Executing a Task<br>
+keywords: <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <br>
+<p>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.</p></li>
<li><a href="process/forktracker.stp">process/forktracker.stp</a> - Trace Creation of Processes<br>
keywords: <a href="keyword-index.html#PROCESS">PROCESS</a> <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <br>
<p>The forktracker.stp script prints out a time-stamped entry showing each fork and exec operation on the machine. This can be useful for determine what process is creating a flurry of short-lived processes.</p></li>
+<li><a href="process/migrate.stp">process/migrate.stp</a> - Track the Migration of Specific Executables<br>
+keywords: <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <br>
+<p>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.</p></li>
<li><a href="process/schedtimes.stp">process/schedtimes.stp</a> - Track Time Processes Spend in Various States using Tracepoints<br>
keywords: <a href="keyword-index.html#PROCESS">PROCESS</a> <a href="keyword-index.html#SCHEDULER">SCHEDULER</a> <a href="keyword-index.html#TIME">TIME</a> <a href="keyword-index.html#TRACEPOINT">TRACEPOINT</a> <br>
<p>The schedtimes.stp script instruments the scheduler to track the amount of time that each process spends running, sleeping, queued, and waiting for io. On exit the script prints out the accumulated time for each state of processes observed. Optionally, this script can be used with the '-c' or '-x' options to focus on a specific PID.</p></li>
diff --git a/testsuite/systemtap.examples/keyword-index.txt b/testsuite/systemtap.examples/keyword-index.txt
index 304f33d7..7f94eaa5 100644
--- a/testsuite/systemtap.examples/keyword-index.txt
+++ b/testsuite/systemtap.examples/keyword-index.txt
@@ -548,6 +548,18 @@ keywords: syscall read write time io
= SCHEDULER =
+process/chng_cpu.stp - Monitor Changes in Processor Executing a Task
+keywords: scheduler
+
+ 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.
+
+
process/forktracker.stp - Trace Creation of Processes
keywords: process scheduler
@@ -556,6 +568,17 @@ keywords: process scheduler
determine what process is creating a flurry of short-lived processes.
+process/migrate.stp - Track the Migration of Specific Executables
+keywords: scheduler
+
+ 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.
+
+
process/schedtimes.stp - Track Time Processes Spend in Various States using Tracepoints
keywords: process scheduler time tracepoint
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);
+ }
+}