diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2009-07-17 15:20:48 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2009-07-17 15:20:48 -0400 |
commit | 3c28b88ea87b91ce317a939376ae932e78259803 (patch) | |
tree | 815b5ea89339d769ffb07ecbf8a5e4874644abdd /testsuite | |
parent | 003ea323310bd597c7263344cefd232377d8d89e (diff) | |
parent | deb635455c042a10cc74a45c9ef02458d890946f (diff) | |
download | systemtap-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.
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/systemtap.examples/index.html | 9 | ||||
-rw-r--r-- | testsuite/systemtap.examples/index.txt | 32 | ||||
-rw-r--r-- | testsuite/systemtap.examples/keyword-index.html | 17 | ||||
-rw-r--r-- | testsuite/systemtap.examples/keyword-index.txt | 43 | ||||
-rw-r--r-- | testsuite/systemtap.examples/process/chng_cpu.meta | 14 | ||||
-rwxr-xr-x | testsuite/systemtap.examples/process/chng_cpu.stp | 31 | ||||
-rw-r--r-- | testsuite/systemtap.examples/process/migrate.meta | 14 | ||||
-rwxr-xr-x | testsuite/systemtap.examples/process/migrate.stp | 27 |
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); + } +} |