jim 96/07/12 18:47:41
Modified: src http_main.c mod_status.c scoreboard.h Log: add process-time and prevent rollover Revision Changes Path 1.47 +14 -9 apache/src/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.46 retrieving revision 1.47 diff -C3 -r1.46 -r1.47 *** http_main.c 1996/07/10 13:50:42 1.46 --- http_main.c 1996/07/13 01:47:36 1.47 *************** *** 97,102 **** --- 97,103 ---- extern int shmctl(int, int, struct shmid_ds *); extern int shmget(key_t, int, int); extern char *sbrk(int); + #include <sys/time.h> #endif #endif #ifdef SecureWare *************** *** 749,754 **** --- 750,756 ---- new_score_rec.my_bytes_served = 0L; new_score_rec.conn_count = (unsigned short)0; new_score_rec.conn_bytes = (unsigned long)0; + new_score_rec.how_long = (unsigned short)0; } if (r) { int slot_size; *************** *** 806,811 **** --- 808,814 ---- void increment_counts (int child_num, request_rec *r, int flag) { long int bs=0; + time_t now; short_score new_score_rec=scoreboard_image[child_num]; if (r->sent_bodyct) *************** *** 824,829 **** --- 827,835 ---- times(&new_score_rec.times); + now=time(NULL); + new_score_rec.how_long = now - new_score_rec.last_used; + #if defined(HAVE_MMAP) || defined(HAVE_SHMGET) memcpy(&scoreboard_image[child_num], &new_score_rec, sizeof(short_score)); #else *************** *** 1298,1317 **** r = read_request (current_conn); (void)update_child_status (child_num, SERVER_BUSY_WRITE, r); if (r) process_request (r); /* else premature EOF --- ignore */ - #if defined(STATUS) if (r) increment_counts(child_num,r,1); #endif while (r && current_conn->keepalive) { ! bflush(conn_io); ! destroy_pool(r->pool); ! (void)update_child_status (child_num, SERVER_BUSY_KEEPALIVE, (request_rec*)NULL); ! r = read_request (current_conn); ! (void)update_child_status (child_num, SERVER_BUSY_WRITE, r); ! if (r) process_request (r); ! #if defined(STATUS) ! if (r) increment_counts(child_num,r,0); #endif } #if 0 --- 1304,1322 ---- r = read_request (current_conn); (void)update_child_status (child_num, SERVER_BUSY_WRITE, r); if (r) process_request (r); /* else premature EOF --- ignore */ #if defined(STATUS) if (r) increment_counts(child_num,r,1); #endif while (r && current_conn->keepalive) { ! bflush(conn_io); ! destroy_pool(r->pool); ! (void)update_child_status (child_num, SERVER_BUSY_KEEPALIVE, ! (request_rec*)NULL); ! r = read_request (current_conn); ! (void)update_child_status (child_num, SERVER_BUSY_WRITE, r); ! if (r) process_request (r); #if defined(STATUS) ! if (r) increment_counts(child_num,r,0); #endif } #if 0 1.26 +29 -11 apache/src/mod_status.c Index: mod_status.c =================================================================== RCS file: /export/home/cvs/apache/src/mod_status.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C3 -r1.25 -r1.26 *** mod_status.c 1996/06/29 22:23:25 1.25 --- mod_status.c 1996/07/13 01:47:38 1.26 *************** *** 116,121 **** --- 116,131 ---- rprintf(r,"%.1f GB",(float)bytes/GBYTE); } + void format_kbyte_out(request_rec *r,unsigned long kbytes) + { + if (kbytes < KBYTE) + rprintf(r,"%d kB",(int)kbytes); + else if (kbytes < MBYTE) + rprintf(r,"%.1f MB",(float)kbytes/KBYTE); + else + rprintf(r,"%.1f GB",(float)kbytes/MBYTE); + } + void show_time(request_rec *r,time_t tsecs) { long days,hrs,mins,secs; *************** *** 186,191 **** --- 196,202 ---- unsigned long my_lres,my_bytes,conn_bytes; unsigned short conn_lres; unsigned long bcount=0; + unsigned long kbcount=0; #ifdef NEXT float tick=HZ; #else *************** *** 277,282 **** --- 288,297 ---- tcs+=score_record.times.tms_cstime; count+=lres; bcount+=bytes; + if (bcount>=KBYTE) { + kbcount += (bcount >> 10); + bcount = bcount & 0x3ff; + } } #endif /* STATUS */ } *************** *** 299,305 **** #if defined(STATUS) if (short_report) { ! rprintf(r,"Total Accesses: %lu\nTotal Bytes: %lu\n",count,bcount); if(ts || tu || tcu || tcs) rprintf(r,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.); --- 314,320 ---- #if defined(STATUS) if (short_report) { ! rprintf(r,"Total Accesses: %lu\nTotal kBytes: %lu\n",count,kbcount); if(ts || tu || tcu || tcs) rprintf(r,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.); *************** *** 309,322 **** rprintf(r,"ReqPerSec: %g\n",(float)count/(float)up_time); if (up_time>0) ! rprintf(r,"BytesPerSec: %g\n",(float)bcount/(float)up_time); if (count>0) ! rprintf(r,"BytesPerReq: %g\n",(float)bcount/(float)count); } else /* !short_report */ { rprintf(r,"Total accesses: %lu - Total Traffic: ", count); ! format_byte_out(r,bcount); rputs("<br>\n",r); rprintf(r,"CPU Usage: u%g s%g cu%g cs%g", tu/tick,ts/tick,tcu/tick,tcs/tick); --- 324,337 ---- rprintf(r,"ReqPerSec: %g\n",(float)count/(float)up_time); if (up_time>0) ! rprintf(r,"BytesPerSec: %g\n",KBYTE*(float)kbcount/(float)up_time); if (count>0) ! rprintf(r,"BytesPerReq: %g\n",KBYTE*(float)kbcount/(float)count); } else /* !short_report */ { rprintf(r,"Total accesses: %lu - Total Traffic: ", count); ! format_kbyte_out(r,kbcount); rputs("<br>\n",r); rprintf(r,"CPU Usage: u%g s%g cu%g cs%g", tu/tick,ts/tick,tcu/tick,tcs/tick); *************** *** 332,344 **** if (up_time>0) { ! format_byte_out(r,(float)bcount/(float)up_time); rputs("/second - ",r); } if (count>0) { ! format_byte_out(r,(float)bcount/(float)count); rputs("/request",r); } --- 347,359 ---- if (up_time>0) { ! format_byte_out(r,KBYTE*(float)kbcount/(float)up_time); rputs("/second - ",r); } if (count>0) { ! format_byte_out(r,KBYTE*(float)kbcount/(float)count); rputs("/request",r); } *************** *** 386,392 **** if(no_table_report) rputs("<p><hr><h2>Server Details</h2>\n\n",r); else ! rputs("<p>\n\n<table border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>Conn<th>Child<th>Slot<th>Host<th>Request</tr>\n\n",r); for (i = 0; i<HARD_SERVER_LIMIT; ++i) --- 401,407 ---- if(no_table_report) rputs("<p><hr><h2>Server Details</h2>\n\n",r); else ! rputs("<p>\n\n<table border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>Ptime<th>Conn<th>Child<th>Slot<th>Host<th>Request</tr>\n\n",r); for (i = 0; i<HARD_SERVER_LIMIT; ++i) *************** *** 435,446 **** rputs("Dead",r); break; } ! rprintf(r,"] u%g s%g cu%g cs%g\n %s (", score_record.times.tms_utime/tick, score_record.times.tms_stime/tick, score_record.times.tms_cutime/tick, score_record.times.tms_cstime/tick, ! asctime(localtime(&score_record.last_used))); format_byte_out(r,conn_bytes); rputs("|",r); format_byte_out(r,my_bytes); --- 450,462 ---- rputs("Dead",r); break; } ! rprintf(r,"] u%g s%g cu%g cs%g\n %s (%d", score_record.times.tms_utime/tick, score_record.times.tms_stime/tick, score_record.times.tms_cutime/tick, score_record.times.tms_cstime/tick, ! asctime(localtime(&score_record.last_used)), ! (int)score_record.how_long); format_byte_out(r,conn_bytes); rputs("|",r); format_byte_out(r,my_bytes); *************** *** 482,493 **** rputs("<td>.",r); break; } ! rprintf(r,"\n<td>%.2f<td>%.0f", (score_record.times.tms_utime + score_record.times.tms_stime + score_record.times.tms_cutime + score_record.times.tms_cstime)/tick, ! difftime(nowtime, score_record.last_used)); rprintf(r,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n", (float)conn_bytes/KBYTE, (float)my_bytes/MBYTE, (float)bytes/MBYTE); --- 498,510 ---- rputs("<td>.",r); break; } ! rprintf(r,"\n<td>%.2f<td>%.0f<td>%d", (score_record.times.tms_utime + score_record.times.tms_stime + score_record.times.tms_cutime + score_record.times.tms_cstime)/tick, ! difftime(nowtime, score_record.last_used), ! (int)score_record.how_long); rprintf(r,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n", (float)conn_bytes/KBYTE, (float)my_bytes/MBYTE, (float)bytes/MBYTE); *************** *** 509,514 **** --- 526,532 ---- <tr><th>M<td>Mode of operation\n \ <tr><th>CPU<td>CPU usage, number of seconds\n \ <tr><th>SS<td>Seconds since beginning of most recent request\n \ + <tr><th>Ptime<td>Seconds to process the recent request\n \ <tr><th>Conn<td>Kilobytes transferred this connection\n \ <tr><th>Child<td>Megabytes transferred this child\n \ <tr><th>Slot<td>Total megabytes transferred this slot\n \ 1.13 +1 -0 apache/src/scoreboard.h Index: scoreboard.h =================================================================== RCS file: /export/home/cvs/apache/src/scoreboard.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C3 -r1.12 -r1.13 *** scoreboard.h 1996/06/07 17:39:26 1.12 --- scoreboard.h 1996/07/13 01:47:38 1.13 *************** *** 83,88 **** --- 83,89 ---- unsigned long my_bytes_served; unsigned long conn_bytes; unsigned short conn_count; + unsigned short how_long; struct tms times; time_t last_used; char client[32]; /* Keep 'em small... */