From: Vlad S. <ser...@us...> - 2005-06-21 17:47:56
|
Update of /cvsroot/naviserver/modules/nsdns In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30972 Modified Files: nsdns.c Log Message: statistics update Index: nsdns.c =================================================================== RCS file: /cvsroot/naviserver/modules/nsdns/nsdns.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** nsdns.c 21 Jun 2005 14:05:16 -0000 1.9 --- nsdns.c 21 Jun 2005 17:47:16 -0000 1.10 *************** *** 47,50 **** --- 47,52 ---- unsigned short proxy_count; unsigned long proxy_time; + struct timeval recv_time; + struct timeval start_time; char buffer[DNS_BUF_SIZE]; int size; *************** *** 58,62 **** unsigned long maxsize; unsigned long requests; ! unsigned long time; struct _dnsRequest *head; struct _dnsRequest *tail; --- 60,65 ---- unsigned long maxsize; unsigned long requests; ! unsigned long rtime; ! unsigned long wtime; struct _dnsRequest *head; struct _dnsRequest *tail; *************** *** 438,443 **** n += dnsQueues[i].size; r += dnsQueues[i].requests; ! sprintf(tmp,"size%d %lu maxsize%d %lu time%d %lu requests%d %lu ", ! i,dnsQueues[i].size,i,dnsQueues[i].maxsize,i,dnsQueues[i].time,i,dnsQueues[i].requests); Tcl_AppendResult(interp, tmp, 0); } --- 441,448 ---- n += dnsQueues[i].size; r += dnsQueues[i].requests; ! sprintf(tmp,"size%d %lu maxsize%d %lu rtime%d %lu wtime%d %lu requests%d %lu ", ! i,dnsQueues[i].size,i,dnsQueues[i].maxsize, ! i,dnsQueues[i].rtime,i,dnsQueues[i].wtime, ! i,dnsQueues[i].requests); Tcl_AppendResult(interp, tmp, 0); } *************** *** 611,614 **** --- 616,620 ---- int len = sizeof(struct sockaddr_in); dnsRequest *req, buf; + struct timeval recv_time; int id = 0; *************** *** 621,624 **** --- 627,631 ---- } buf.buffer[buf.size] = 0; + gettimeofday(&recv_time,0); if(dnsDebug > 0) { Ns_Log(Debug,"nsdns: received %d bytes from %s",buf.size,ns_inet_ntoa(buf.addr.sin_addr)); *************** *** 631,634 **** --- 638,642 ---- if(!req) req = ns_calloc(1,sizeof(dnsRequest)); memcpy(req,&buf,sizeof(buf)); + req->recv_time = recv_time; if(dnsQueues[id].tail) dnsQueues[id].tail->next = req; dnsQueues[id].tail = req; *************** *** 649,653 **** dnsRequest *req; unsigned long t0; ! struct timeval t1,t2; queue = (dnsQueue*)arg; --- 657,661 ---- dnsRequest *req; unsigned long t0; ! struct timeval end_time; queue = (dnsQueue*)arg; *************** *** 663,667 **** Ns_CondWait(&queue->cond, &queue->lock); } - gettimeofday(&t1,0); /* * Unlink first job from the queue --- 671,674 ---- *************** *** 673,676 **** --- 680,684 ---- queue->size--; Ns_MutexUnlock(&queue->lock); + gettimeofday(&req->start_time,0); req->sock = dnsUdpSock; // Allocate request structure *************** *** 691,694 **** --- 699,703 ---- } } + Ns_MutexLock(&queue->lock); // Put request structure back if not handled by proxy if(req) { *************** *** 696,704 **** queue->freelist = req; } - Ns_MutexLock(&queue->lock); Ns_CondBroadcast(&queue->cond); ! gettimeofday(&t2,0); ! t0 = ((t2.tv_sec - t1.tv_sec)*1000000 + (t2.tv_usec - t1.tv_usec))/1000; ! if(t0 > queue->time) queue->time = t0; } } --- 705,715 ---- queue->freelist = req; } Ns_CondBroadcast(&queue->cond); ! gettimeofday(&end_time,0); ! // Update statistics, in milliseconds ! t0 = ((end_time.tv_sec - req->start_time.tv_sec)*1000 + (end_time.tv_usec - req->start_time.tv_usec))/1000; ! if(t0 > queue->rtime) queue->rtime = t0; ! t0 = ((req->start_time.tv_sec - req->recv_time.tv_sec)*1000 + (req->start_time.tv_usec - req->recv_time.tv_usec))/1000; ! if(t0 > queue->wtime) queue->wtime = t0; } } |