diff options
Diffstat (limited to 'tapset/linuxmib.stp')
-rw-r--r-- | 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 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; +} |