aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib/dtracetoolkit/Net/tcpwdist.d
diff options
context:
space:
mode:
Diffstat (limited to 'cddl/contrib/dtracetoolkit/Net/tcpwdist.d')
-rwxr-xr-xcddl/contrib/dtracetoolkit/Net/tcpwdist.d82
1 files changed, 82 insertions, 0 deletions
diff --git a/cddl/contrib/dtracetoolkit/Net/tcpwdist.d b/cddl/contrib/dtracetoolkit/Net/tcpwdist.d
new file mode 100755
index 000000000000..20753c182f60
--- /dev/null
+++ b/cddl/contrib/dtracetoolkit/Net/tcpwdist.d
@@ -0,0 +1,82 @@
+#!/usr/sbin/dtrace -s
+/*
+ * tcpwdist.d - simple TCP write distribution by process.
+ * Written in DTrace (Solaris 10 3/05).
+ *
+ * This measures the size of writes from applications to the TCP level, which
+ * may well be much larger than the MTU size (this is application writes not
+ * packet writes). It can help identify which process is creating network
+ * traffic, and the size of the writes by that application. It uses a simple
+ * probe that produces meaningful output for most protocols.
+ *
+ * Tracking TCP activity by process is complex for a number of reasons,
+ * the greatest is that inbound TCP traffic is asynchronous to the process.
+ * The easiest TCP traffic to match is writes, which this script demonstrates.
+ * However there are still issues - for an inbound telnet connection the
+ * writes are associated with the command, for example "ls -l", not something
+ * meaningful such as "in.telnetd".
+ *
+ * Scripts that match TCP traffic properly include tcpsnoop and tcptop.
+ *
+ * $Id: tcpwdist.d 3 2007-08-01 10:50:08Z brendan $
+ *
+ * USAGE: tcpwdist.d # wait several seconds, then hit Ctrl-C
+ *
+ * FIELDS:
+ * PID process ID
+ * CMD command and argument list
+ * value TCP write payload size in bytes
+ * count number of writes
+ *
+ * SEE ALSO: tcpsnoop, tcptop
+ *
+ * COPYRIGHT: Copyright (c) 2005, 2006 Brendan Gregg.
+ *
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at Docs/cddl1.txt
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * CDDL HEADER END
+ *
+ * 09-Jul-2004 Brendan Gregg Created this.
+ * 14-Jun-2005 " " Rewrote this as tcpwdist.d.
+ * 20-Apr-2006 " " Last update.
+ */
+
+#pragma D option quiet
+
+/*
+ * Print header
+ */
+dtrace:::BEGIN
+{
+ printf("Tracing... Hit Ctrl-C to end.\n");
+}
+
+/*
+ * Process TCP Write
+ */
+fbt:ip:tcp_output:entry
+{
+ /* fetch details */
+ this->size = msgdsize(args[1]);
+
+ /* store details */
+ @Size[pid, curpsinfo->pr_psargs] = quantize(this->size);
+}
+
+/*
+ * Print final report
+ */
+dtrace:::END
+{
+ printa(" PID: %-6d CMD: %S\n%@d\n", @Size);
+}