This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 3/6] SNMP tapset


This tapset provides probes used to count the extended Linux SNMP
management events. The operation of the probe points is simmer to the
tcpipmib.stp tapset except the callback function has a different name.
Otherwise the operation is the same.

Signed-off-by: David Wilder <dwilder@us.ibm.com>

------------------------------------------------------
 tapset/linuxmib.stp |  102 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 102 insertions(+), 0 deletions(-)

diff --git a/tapset/linuxmib.stp b/tapset/linuxmib.stp
new file mode 100644
index 0000000..e19755a
--- /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;
+}



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]