summaryrefslogtreecommitdiffstats
path: root/tapset
diff options
context:
space:
mode:
Diffstat (limited to 'tapset')
-rw-r--r--tapset/ChangeLog20
-rw-r--r--tapset/nfs_proc.stp20
-rw-r--r--tapset/queue_stats.stp6
-rw-r--r--tapset/udp.stp22
4 files changed, 63 insertions, 5 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index 287b0823..72dca971 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,23 @@
+2007-10-11 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ * queue_stats.stp (qsq_utilization): Update queue account datas
+ before calculate.
+ (qsq_blocked): Ditto.
+ (qsq_wait_queue_length): Ditto.
+ (qsq_service_time): Ditto.
+ (qsq_wait_time): Ditto.
+ (qsq_throughput): Ditto.
+
+2007-10-11 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ From Cai Fei <caifei@cn.fujitsu.com>
+ * nfs_proc.stp (__nfs_write_data_info): Add data-access code for
+ count, valid and timestamp.
+
+2007-10-11 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ * udp.stp: Add name argument for all probes.
+
2007-10-10 Martin Hunt <hunt@redhat.com>
* aux_syscalls.stp (_stp_lookup_str): When defaulting
diff --git a/tapset/nfs_proc.stp b/tapset/nfs_proc.stp
index 0b07fb54..bd7baa80 100644
--- a/tapset/nfs_proc.stp
+++ b/tapset/nfs_proc.stp
@@ -101,10 +101,14 @@ function __nfs_read_data_info:long (rdata :long,index :long) %{ /* pure */
/*
0: get ip address
1: get proto
+ 2: get res->count
+ 3: get res->fattr->valid
+ 4: get timestamp
*/
function __nfs_write_data_info:long (wdata :long,index :long) %{ /* pure */
struct nfs_write_data * wdata = (struct nfs_write_data *)(long)THIS->wdata;
struct rpc_task *task = &(wdata->task);
+ struct nfs_writeres *wres = &(wdata->res);
int index = THIS->index;
switch(index) {
@@ -114,9 +118,25 @@ function __nfs_write_data_info:long (wdata :long,index :long) %{ /* pure */
case 1:
THIS->__retvalue = get_prot(task);
break;
+
+ case 2:
+ THIS->__retvalue = kread(&(wres->count));
+ break;
+ case 3: {
+ struct nfs_fattr *fattr = kread(&(wres->fattr));
+ THIS->__retvalue = kread(&(fattr->valid));
+ break;
+ }
+#ifdef CONFIG_NFS_V4
+ case 4:
+ THIS->__retvalue = kread(&(wdata->timestamp));
+ break;
+#endif
default:
+ THIS->__retvalue = 0;
break;
}
+ CATCH_DEREF_FAULT();
%}
function __nfsv4_bitmask :long(dir:long,i:long) %{ /* pure */
diff --git a/tapset/queue_stats.stp b/tapset/queue_stats.stp
index 9d89903c..5cf24c40 100644
--- a/tapset/queue_stats.stp
+++ b/tapset/queue_stats.stp
@@ -70,35 +70,41 @@ function qsq_start (qname) { # reset statistics for new baseline
# fraction of time that any request was being serviced
function qsq_utilization (qname, scale) {
+ _qs_update (qname)
elapsed = qs_time() - qs_stime[qname]
return (scale * qs_rtime[qname]) / elapsed
}
# fraction of time that any request was blocked in the wait queue
function qsq_blocked (qname, scale) {
+ _qs_update (qname)
elapsed = qs_time() - qs_stime[qname]
return (scale * qs_wtime[qname]) / elapsed
}
# length of wait queue
function qsq_wait_queue_length (qname, scale) {
+ _qs_update (qname)
elapsed = qs_time() - qs_stime[qname]
return (scale * qs_wlentime[qname]) / elapsed
}
# service time (amount of time per request service)
function qsq_service_time (qname, scale) {
+ _qs_update (qname)
return (scale * qs_rlentime[qname]) / qs_dcount[qname]
}
# wait time (amount of time in queue + service per request)
function qsq_wait_time (qname, scale) {
+ _qs_update (qname)
return (scale * (qs_rlentime[qname] + qs_wlentime[qname]))
/ qs_dcount[qname]
}
# service rate (number of requests served per unit time)
function qsq_throughput (qname, scale) {
+ _qs_update (qname)
elapsed = qs_time() - qs_stime[qname]
return (scale * qs_dcount[qname]) / elapsed
}
diff --git a/tapset/udp.stp b/tapset/udp.stp
index 9e7051a1..1559058b 100644
--- a/tapset/udp.stp
+++ b/tapset/udp.stp
@@ -21,9 +21,11 @@
// The process which sends a udp message
//
// Arguments:
-// sock - network socket
-// size - number of bytes to send
+// name - name of this probe
+// sock - network socket
+// size - number of bytes to send
probe udp.sendmsg = kernel.function("udp_sendmsg") {
+ name = "udp.sendmsg"
sock = $sk
size = $len
}
@@ -36,9 +38,11 @@ probe udp.sendmsg = kernel.function("udp_sendmsg") {
// The process which sends a udp message
//
// Arguments:
+// name - name of this probe
// size - number of bytes sent
//
probe udp.sendmsg.return = kernel.function("udp_sendmsg").return {
+ name = "udp.sendmsg"
size = $return
}
@@ -50,10 +54,12 @@ probe udp.sendmsg.return = kernel.function("udp_sendmsg").return {
// The process which receives a udp message
//
// Arguments:
+// name - name of this probe
// sock - network socket
// size - number of bytes to be received
//
probe udp.recvmsg = kernel.function("udp_recvmsg") {
+ name = "udp.recvmsg"
sock = $sk
size = $len
}
@@ -66,9 +72,11 @@ probe udp.recvmsg = kernel.function("udp_recvmsg") {
// The process which receives a udp message
//
// Arguments:
+// name - name of this probe
// size - number of bytes received
//
probe udp.recvmsg.return = kernel.function("udp_recvmsg").return {
+ name = "udp.recvmsg"
size = $return
}
@@ -80,10 +88,12 @@ probe udp.recvmsg.return = kernel.function("udp_recvmsg").return {
// The process which disconnects udp
//
// Arguments:
-// sock - network socket
-// flags - flags (e.g. FIN, etc)
+// name - name of this probe
+// sock - network socket
+// flags - flags (e.g. FIN, etc)
//
probe udp.disconnect = kernel.function("udp_disconnect") {
+ name = "udp.disconnect"
sock = $sk
flags = $flags
}
@@ -96,8 +106,10 @@ probe udp.disconnect = kernel.function("udp_disconnect") {
// The process which disconnects udp
//
// Arguments:
-// ret - error code (0: no error)
+// name - name of this probe
+// ret - error code (0: no error)
//
probe udp.disconnect.return = kernel.function("udp_disconnect").return {
+ name = "udp.disconnect"
ret = $return
}