summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2009-07-17 15:20:48 -0400
committerFrank Ch. Eigler <fche@elastic.org>2009-07-17 15:20:48 -0400
commit3c28b88ea87b91ce317a939376ae932e78259803 (patch)
tree815b5ea89339d769ffb07ecbf8a5e4874644abdd
parent003ea323310bd597c7263344cefd232377d8d89e (diff)
parentdeb635455c042a10cc74a45c9ef02458d890946f (diff)
downloadsystemtap-steved-3c28b88ea87b91ce317a939376ae932e78259803.tar.gz
systemtap-steved-3c28b88ea87b91ce317a939376ae932e78259803.tar.xz
systemtap-steved-3c28b88ea87b91ce317a939376ae932e78259803.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
* 'master' of ssh://sources.redhat.com/git/systemtap: Add chng_cpu.stp and migrate.stp examples. Add network/tcpipstat.stp descriptions.
-rw-r--r--testsuite/systemtap.examples/index.html9
-rw-r--r--testsuite/systemtap.examples/index.txt32
-rw-r--r--testsuite/systemtap.examples/keyword-index.html17
-rw-r--r--testsuite/systemtap.examples/keyword-index.txt43
-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, 186 insertions, 1 deletions
diff --git a/testsuite/systemtap.examples/index.html b/testsuite/systemtap.examples/index.html
index e186b615..41c9855e 100644
--- a/testsuite/systemtap.examples/index.html
+++ b/testsuite/systemtap.examples/index.html
@@ -118,6 +118,12 @@ keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-inde
<li><a href="network/tcpdumplike.stp">network/tcpdumplike.stp</a> - Dump of Received TCP Packets<br>
keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-index.html#TRAFFIC">TRAFFIC</a> <br>
<p>The tcpdumplike.stp prints out a line for each TCP packet received. Each line includes the source and destination IP addresses, the source and destination ports, and flags.</p></li>
+<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>
@@ -127,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 35decb82..98d96302 100644
--- a/testsuite/systemtap.examples/index.txt
+++ b/testsuite/systemtap.examples/index.txt
@@ -252,6 +252,27 @@ keywords: network traffic
source and destination ports, and flags.
+network/tcpipstat.stp - Display network statistics for individual TCP sockets.
+keywords: network statistics
+
+ 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.
+
+
+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
@@ -279,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 4de28426..8fa74d9f 100644
--- a/testsuite/systemtap.examples/keyword-index.html
+++ b/testsuite/systemtap.examples/keyword-index.html
@@ -39,7 +39,7 @@
</ul>
<h2>Examples by Keyword</h2>
-<p><tt><a href="#BACKTRACE">BACKTRACE</a> <a href="#BUFFER">BUFFER</a> <a href="#CALLGRAPH">CALLGRAPH</a> <a href="#CPU">CPU</a> <a href="#DISK">DISK</a> <a href="#FORMAT">FORMAT</a> <a href="#FREE">FREE</a> <a href="#FUNCTIONS">FUNCTIONS</a> <a href="#FUTEX">FUTEX</a> <a href="#GRAPH">GRAPH</a> <a href="#INTERRUPT">INTERRUPT</a> <a href="#IO">IO</a> <a href="#LOCKING">LOCKING</a> <a href="#MEMORY">MEMORY</a> <a href="#MONITOR">MONITOR</a> <a href="#NETWORK">NETWORK</a> <a href="#NUMA">NUMA</a> <a href="#PER-PROCESS">PER-PROCESS</a> <a href="#PROCESS">PROCESS</a> <a href="#PROFILING">PROFILING</a> <a href="#READ">READ</a> <a href="#SCHEDULER">SCHEDULER</a> <a href="#SIGNALS">SIGNALS</a> <a href="#SIMPLE">SIMPLE</a> <a href="#SLEEP">SLEEP</a> <a href="#SOCKET">SOCKET</a> <a href="#SYSCALL">SYSCALL</a> <a href="#TCP">TCP</a> <a href="#TIME">TIME</a> <a href="#TRACE">TRACE</a> <a href="#TRACEPOINT">TRACEPOINT</a> <a href="#TRAFFIC">TRAFFIC</a> <a href="#TTY">TTY</a> <a href="#USE">USE</a> <a href="#WAIT4">WAIT4</a> <a href="#WRITE">WRITE</a> </tt></p>
+<p><tt><a href="#BACKTRACE">BACKTRACE</a> <a href="#BUFFER">BUFFER</a> <a href="#CALLGRAPH">CALLGRAPH</a> <a href="#CPU">CPU</a> <a href="#DISK">DISK</a> <a href="#FORMAT">FORMAT</a> <a href="#FREE">FREE</a> <a href="#FUNCTIONS">FUNCTIONS</a> <a href="#FUTEX">FUTEX</a> <a href="#GRAPH">GRAPH</a> <a href="#INTERRUPT">INTERRUPT</a> <a href="#IO">IO</a> <a href="#LOCKING">LOCKING</a> <a href="#MEMORY">MEMORY</a> <a href="#MONITOR">MONITOR</a> <a href="#NETWORK">NETWORK</a> <a href="#NUMA">NUMA</a> <a href="#PER-PROCESS">PER-PROCESS</a> <a href="#PROCESS">PROCESS</a> <a href="#PROFILING">PROFILING</a> <a href="#READ">READ</a> <a href="#SCHEDULER">SCHEDULER</a> <a href="#SIGNALS">SIGNALS</a> <a href="#SIMPLE">SIMPLE</a> <a href="#SLEEP">SLEEP</a> <a href="#SOCKET">SOCKET</a> <a href="#STATISTICS">STATISTICS</a> <a href="#SYSCALL">SYSCALL</a> <a href="#TCP">TCP</a> <a href="#TIME">TIME</a> <a href="#TRACE">TRACE</a> <a href="#TRACEPOINT">TRACEPOINT</a> <a href="#TRAFFIC">TRAFFIC</a> <a href="#TTY">TTY</a> <a href="#USE">USE</a> <a href="#WAIT4">WAIT4</a> <a href="#WRITE">WRITE</a> </tt></p>
<h3><a name="BACKTRACE">BACKTRACE</a></h3>
<ul>
<li><a href="interrupt/scf.stp">interrupt/scf.stp</a> - Tally Backtraces for Inter-Processor Interrupt (IPI)<br>
@@ -204,6 +204,9 @@ keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-inde
<li><a href="network/tcpdumplike.stp">network/tcpdumplike.stp</a> - Dump of Received TCP Packets<br>
keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-index.html#TRAFFIC">TRAFFIC</a> <br>
<p>The tcpdumplike.stp prints out a line for each TCP packet received. Each line includes the source and destination IP addresses, the source and destination ports, and flags.</p></li>
+<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>
</ul>
<h3><a name="NUMA">NUMA</a></h3>
<ul>
@@ -261,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>
@@ -307,6 +316,12 @@ keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-inde
keywords: <a href="keyword-index.html#NETWORK">NETWORK</a> <a href="keyword-index.html#TCP">TCP</a> <a href="keyword-index.html#SOCKET">SOCKET</a> <br>
<p>The tcp_connections.stp script prints information for each new incoming TCP connection accepted by the computer. The information includes the UID, the command accepting the connection, the PID of the command, the port the connection is on, and the IP address of the originator of the request.</p></li>
</ul>
+<h3><a name="STATISTICS">STATISTICS</a></h3>
+<ul>
+<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>
+</ul>
<h3><a name="SYSCALL">SYSCALL</a></h3>
<ul>
<li><a href="io/iotime.stp">io/iotime.stp</a> - Trace Time Spent in Read and Write for Files <br>
diff --git a/testsuite/systemtap.examples/keyword-index.txt b/testsuite/systemtap.examples/keyword-index.txt
index bbee341f..7f94eaa5 100644
--- a/testsuite/systemtap.examples/keyword-index.txt
+++ b/testsuite/systemtap.examples/keyword-index.txt
@@ -397,6 +397,15 @@ keywords: network traffic
source and destination ports, and flags.
+network/tcpipstat.stp - Display network statistics for individual TCP sockets.
+keywords: network statistics
+
+ 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.
+
+
= NUMA =
memory/numa_faults.stp - Summarize Process Misses across NUMA Nodes
@@ -539,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
@@ -547,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
@@ -643,6 +675,17 @@ keywords: network tcp socket
originator of the request.
+= STATISTICS =
+
+network/tcpipstat.stp - Display network statistics for individual TCP sockets.
+keywords: network statistics
+
+ 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.
+
+
= SYSCALL =
io/iotime.stp - Trace Time Spent in Read and Write for Files
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);
+ }
+}