diff options
Diffstat (limited to 'tapset')
-rw-r--r-- | tapset/ChangeLog | 20 | ||||
-rw-r--r-- | tapset/nfs_proc.stp | 20 | ||||
-rw-r--r-- | tapset/queue_stats.stp | 6 | ||||
-rw-r--r-- | tapset/udp.stp | 22 |
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 } |