summaryrefslogtreecommitdiffstats
path: root/tapset/linuxmib.stp
diff options
context:
space:
mode:
Diffstat (limited to 'tapset/linuxmib.stp')
-rw-r--r--tapset/linuxmib.stp102
1 files changed, 102 insertions, 0 deletions
diff --git a/tapset/linuxmib.stp b/tapset/linuxmib.stp
new file mode 100644
index 00000000..e19755a9
--- /dev/null
+++ b/tapset/linuxmib.stp
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2009 IBM Corp.
+ * This file is part of systemtap, and is free software. You can
+ * redistribute it and/or modify it under the terms of the GNU General
+ * Public License (GPL); either version 2, or (at your option) any
+ * later version.
+ *
+ * Version 1.0 wilder@us.ibm.com 2009-07-06
+ */
+
+global DelayedACKs /* LINUX_MIB_DELAYEDACKS */
+global ListenOverflows /* LINUX_MIB_LISTENOVERFLOWS */
+global ListenDrops /* LINUX_MIB_LISTENDROPS */
+global TCPMemoryPressures /* LINUX_MIB_TCPMEMORYPRESSURES */
+
+/**
+ * probe tcpmib.DelayedACKs - Count of delayed acks.
+ * @sk: Pointer to the struct sock being acted on.
+ * @op: Value to be added to the counter (Operation).
+ *
+ * Counter Name: DelayedACKs
+ * MIB: LINUX_MIB_DELAYEDACKS
+ *
+ */
+global indelack_timer
+probe linuxmib.DelayedACKs = _linuxmib.DelayedACKs.* {}
+
+probe _linuxmib.DelayedACKs.A = kernel.function("tcp_send_ack")
+{
+ sk=$sk
+ if ( !indelack_timer[sk] ) next
+ op=1
+ key = linuxmib_filter_key(sk,op);
+ if ( key ) DelayedACKs[key] += op;
+}
+
+probe _linuxmib.DelayedACKs.B = kernel.function("tcp_delack_timer")
+{
+ sk=$data
+ indelack_timer[sk]=1
+}
+
+probe _linuxmib.DelayedACKs.C = kernel.function("tcp_delack_timer").return
+{
+ sk=$data
+ indelack_timer[sk]=0;
+}
+
+/**
+ * probe tcpmib.ListenOverflows - Count of times a listen queue overflowed
+ * @sk: Pointer to the struct sock being acted on.
+ * @op: Value to be added to the counter (Operation).
+ *
+ * Counter Name: ListenOverflows
+ * MIB: LINUX_MIB_LISTENOVERFLOWS
+ *
+ */
+probe linuxmib.ListenOverflows=kernel.function("tcp_v4_syn_recv_sock").return
+{
+ sk = $sk
+ if ( $return ) next
+ if ( $sk->sk_ack_backlog <= $sk->sk_max_ack_backlog ) next
+ op = 1;
+ key = linuxmib_filter_key(sk,op);
+ if ( key ) ListenOverflows[key] += op;
+}
+
+/**
+ * probe tcpmib.ListenDrops - Count of times conn request that were dropped.
+ * @sk: Pointer to the struct sock being acted on.
+ * @op: Value to be added to the counter (Operation).
+ *
+ * Counter Name: ListenDrops
+ * MIB: LINUX_MIB_LISTENDROPS
+ *
+ */
+probe linuxmib.ListenDrops=kernel.function("tcp_v4_syn_recv_sock").return
+{
+ sk = $sk
+ if ( $return ) next
+ op = 1;
+ key = linuxmib_filter_key(sk,op);
+ if ( key ) ListenDrops[key] += op;
+}
+
+/**
+ * probe tcpmib.TCPMemoryPressures - Count of times memory pressure was used.
+ * @sk: Pointer to the struct sock being acted on.
+ * @op: Value to be added to the counter (Operation).
+ *
+ * Counter Name: TCPMemoryPressures
+ * MIB: LINUX_MIB_TCPMEMORYPRESSURES
+ *
+ */
+probe linuxmib.TCPMemoryPressures=kernel.function("tcp_enter_memory_pressure")
+{
+ sk = $sk
+ op = 1;
+ if ( $tcp_memory_pressure ) next
+ key = linuxmib_filter_key(sk,op);
+ if ( key ) TCPMemoryPressures[key] += op;
+}