diff options
author | lkoeller <lkoeller@FreeBSD.org> | 2001-04-10 20:43:11 +0000 |
---|---|---|
committer | lkoeller <lkoeller@FreeBSD.org> | 2001-04-10 20:43:11 +0000 |
commit | 13f46a426e4f27d76333092456f890b0c8a5a881 (patch) | |
tree | f4b94348a8b35208862973fa8c620179dfa227cd /sysutils/xperfmon3 | |
parent | 890e5e71dc489aa8629cf25af00202086b7cbf65 (diff) | |
download | FreeBSD-ports-13f46a426e4f27d76333092456f890b0c8a5a881.zip FreeBSD-ports-13f46a426e4f27d76333092456f890b0c8a5a881.tar.gz |
Update to Version 3.1 this includes several bugfixes:
o Fix compiler -Wall warnings
o Calc etime correct for multi CPU machines
o Show disk stats for "ad" disk devices, too
o Count number of network in/out packets correctly
o Get free swapspace only every 10 time intervals to
limit CPU usage.
Diffstat (limited to 'sysutils/xperfmon3')
-rw-r--r-- | sysutils/xperfmon3/Makefile | 2 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/fbsd_vers.h | 6 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/freebsd_system.c | 94 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-aa | 97 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-ab | 20 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-ac | 109 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-ad | 78 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-bb | 3 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-bc | 21 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-ca | 7 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-cb | 17 | ||||
-rw-r--r-- | sysutils/xperfmon3/files/patch-cd | 13 |
12 files changed, 320 insertions, 147 deletions
diff --git a/sysutils/xperfmon3/Makefile b/sysutils/xperfmon3/Makefile index b3f9aa2..c243458 100644 --- a/sysutils/xperfmon3/Makefile +++ b/sysutils/xperfmon3/Makefile @@ -6,7 +6,7 @@ # PORTNAME= xperfmon++ -PORTVERSION= 3.0 +PORTVERSION= 3.1 CATEGORIES= sysutils MASTER_SITES= ftp://ftp.uni-bielefeld.de/pub/systems/FreeBSD/lkoeller/ \ ftp://ftp.u-aizu.ac.jp/pub/misc/tools/xperfmon/ \ diff --git a/sysutils/xperfmon3/files/fbsd_vers.h b/sysutils/xperfmon3/files/fbsd_vers.h index 9f1fa82..a6012c3 100644 --- a/sysutils/xperfmon3/files/fbsd_vers.h +++ b/sysutils/xperfmon3/files/fbsd_vers.h @@ -4,7 +4,7 @@ * * Handel the FreeBSD Versions in a central file! * - * $FreeBSD$ + * $Id: fbsd_vers.h,v 3.2 2001/04/10 20:02:26 lkoeller Exp lkoeller $ */ #ifdef HAVE_SYS_PARAM_H @@ -14,9 +14,9 @@ #if (defined(BSD) && (BSD >= 199506)) # include <osreldate.h> #else -# error You can compile this xperfmon++ V3.0 only on FreeBSD-3.X systems. xperfmon++ V1.31 up to V2.0 runs on FreeBSD 2.[12].X system! +# error You can compile this xperfmon++ V3.1 only on FreeBSD-3.X/4.X systems. xperfmon++ V1.31 up to V2.0 runs on FreeBSD 2.[12].X system! #endif #if __FreeBSD_version < 300000 -# error You can compile this xperfmon++ V3.0 only on FreeBSD-3.X systems. xperfmon++ V1.31 up to V2.0 runs on FreeBSD 2.[12].X system! +# error You can compile this xperfmon++ V3.1 only on FreeBSD-3.X/4.X systems. xperfmon++ V1.31 up to V2.0 runs on FreeBSD 2.[12].X system! #endif diff --git a/sysutils/xperfmon3/files/freebsd_system.c b/sysutils/xperfmon3/files/freebsd_system.c index f4a0dd4..68b66f5 100644 --- a/sysutils/xperfmon3/files/freebsd_system.c +++ b/sysutils/xperfmon3/files/freebsd_system.c @@ -5,7 +5,7 @@ * * Work has started on 7th Sep 1998 on Northsea island Föhr. * - * $FreeBSD$ + * $Id: freebsd_system.c,v 3.8 2001/04/10 19:39:44 lkoeller Exp lkoeller $ */ /* @@ -105,7 +105,7 @@ */ #ifndef LINT -static char rcsid[] = "$FreeBSD$"; +static char rcsid[] = "$Id: freebsd_system.c,v 3.8 2001/04/10 19:39:44 lkoeller Exp lkoeller $"; #endif #include "fbsd_vers.h" @@ -121,7 +121,6 @@ static char rcsid[] = "$FreeBSD$"; #include <sys/socket.h> #include <sys/sysctl.h> #include <sys/dkstat.h> -#include <sys/buf.h> #include <sys/time.h> #include <vm/vm.h> #include <net/if.h> @@ -139,6 +138,7 @@ static char rcsid[] = "$FreeBSD$"; #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <strings.h> #include <unistd.h> #include <ctype.h> @@ -223,8 +223,7 @@ static int interrupts, old_interrupts; static struct statinfo cur, last; static struct devstat_match *matches = NULL; static struct device_selection *dev_select = NULL; -static devstat_select_mode select_mode; -static int num_matches = 0, num_devices = 0; +static int num_matches = 0, num_devices = 0, ncpu; static int num_selected = 0, num_selections = 0; static int num_devices_specified = 0, maxshowdevs; static long generation, select_generation; @@ -254,23 +253,29 @@ static void get_nfsstat(void); void sys_setup(void) { + int size; + get_namelist(getbootfile(), _PATH_MEM); + /* To make calc of etime independent of number of CPUs */ + size = sizeof(ncpu); + if (sysctlbyname("hw.ncpu", &ncpu, &size, NULL, 0) < 0) + ncpu = 1; + + /* Initialize all stats, i.e. global variables */ get_cpustat(); get_load(); get_ttystat(); + interrupts=0; get_interrupts(); init_diskio(); get_diskio(); - + get_netstat(); /* - * To force first scale of 'free swapspace' to 100%, we need this hack! - * Wee use a value < 0 cause it's not a valid value! + * To force first scale of 'free swapspace' to 100%, we need + * set it the first time by hand! */ - current_values[FREE_MEM] = -0.4 * SCALE_HACK; - - get_netstat(); - + current_values[FREE_MEM] = 100 * SCALE_HACK; /* * Check if we have NFS in the kernel */ @@ -287,7 +292,7 @@ sys_setup(void) void update_stats(void) { - static int firsttime = 1; + static int firsttime = 1, i = FREE_MEM_INT; /* * For any stat we need etime, so get it! */ @@ -312,15 +317,18 @@ update_stats(void) current_values[INTERRUPTS] = (interrupts - old_interrupts)/etime * SCALE_HACK; } - /* - * The first time called, we want to get 100% - * for the full scale of the graph! - */ - if (perfmon[FREE_MEM] && !firsttime) - current_values[FREE_MEM] = - (current_values[FREE_MEM] < 0 ? 100.0 * SCALE_HACK : get_swapspace() * SCALE_HACK); - else - --firsttime; + if (perfmon[FREE_MEM] && !firsttime) { + /* Calc swapspace only every FREE_MEM_INT intervals */ + if ( i == FREE_MEM_INT ) { + i = 1; + current_values[FREE_MEM] = get_swapspace() * SCALE_HACK; + } else + i++; + } else { + /* First time called we set freeswap to 100% to have full scale!*/ + firsttime--; + current_values[FREE_MEM] = 100 * SCALE_HACK; + } if (perfmon[DISK_TRANSFERS] || perfmon[DISK_MB] || perfmon[TAPE_TRANSFERS] || perfmon[TAPE_MB] || @@ -341,6 +349,9 @@ update_stats(void) (packets.input - old_packets.input)/etime * SCALE_HACK; current_values[ OUTPUT_PACKETS] = (packets.output - old_packets.output)/etime * SCALE_HACK; + /* LK!!! DEBUG + printf("input: %f output: %f\n",current_values[INPUT_PACKETS]/SCALE_HACK, + current_values[ OUTPUT_PACKETS]/SCALE_HACK); */ current_values[COLLISION_PACKETS] = (packets.collisions - old_packets.collisions)/etime * SCALE_HACK; } @@ -402,7 +413,7 @@ get_namelist(kernel_name, memory_name) time(&now); nintv = now - boottime; if (nintv <= 0 || nintv > 60*60*24*365*10) - errx(1, "Time makes no sense ... namelist must be wrong", NULL); + errx(1, "Time makes no sense ... namelist must be wrong"); } @@ -442,6 +453,7 @@ get_cpustat(void) etime = 1.0; etime /= (float)hz; + etime /= ncpu; /* * scale to percent @@ -461,7 +473,7 @@ get_load(void) loadavg[0] = 0.0; if (getloadavg(loadavg, sizeof(loadavg)/sizeof(loadavg[0])) == -1) { fprintf(stderr, "xperfmon++: getloadavg() returned no values\n"); - return; + return(0.0); } return(loadavg[0]); } @@ -490,12 +502,13 @@ get_interrupts(void) unsigned long *intrcnt; int nintr; + old_interrupts = interrupts; + nintr = namelist[X_EINTRCNT].n_value - namelist[X_INTRCNT].n_value; if ((intrcnt = (unsigned long *)malloc((size_t) nintr)) == NULL) err(1, "xperfmon++: malloc failed in get_interrupts()"); nintr /= sizeof(long); kread(X_INTRCNT, intrcnt, (size_t)nintr*sizeof(long)); - old_interrupts = interrupts; for (i = 0, interrupts = 0; i < nintr; i++) interrupts += *(intrcnt + i); free(intrcnt); @@ -521,7 +534,7 @@ get_nfsstat(void) size_t size = sizeof(nfsstats); if (sysctlbyname("vfs.nfs.nfsstats", &nfsstats, &size, (void *)0, (size_t)0) < 0) { #endif - fprintf(stderr, "xperfmon++: get_nfsstat(): Can?%t get NFS statistics with sysctl()\n"); + fprintf(stderr, "xperfmon++: get_nfsstat(): Can't get NFS statistics with sysctl()\n"); return; } @@ -619,7 +632,7 @@ get_swapspace(void) struct kvm_swap swapary[1]; n = kvm_getswapinfo(kd, swapary, 1, 0); - if (n < 0) + if (n < 0 || swapary[0].ksw_total == 0) return(0); percentfree = ((((double)swapary[0].ksw_total - @@ -729,6 +742,7 @@ static void get_netstat(void) { off_t ifnetaddr; + char name[32], tname[16], *interface = '\0'; if ((ifnetaddr = namelist[N_IFNET].n_value) != 0) { struct ifnet ifnet; @@ -748,9 +762,15 @@ get_netstat(void) while (ifnetaddr || ifaddraddr) { if (ifaddraddr == 0) { ifnetfound = ifnetaddr; - if(kvm_read(kd, ifnetaddr, (char *)&ifnet, sizeof ifnet) == -1) + /* Get stats and interface name to select a specific one (TODO) */ + if(kvm_read(kd, ifnetaddr, (char *)&ifnet, sizeof ifnet) == -1 || + kvm_read(kd, (u_long)ifnet.if_name, (char *)tname, 16) == -1) return; + tname[15] = '\0'; ifnetaddr = (u_long)ifnet.if_link.tqe_next; + snprintf(name, 32, "%s%d", tname, ifnet.if_unit); + if (interface != 0 && (strcmp(name, interface) != 0)) + continue; ifaddraddr = (u_long)ifnet.if_addrhead.tqh_first; } if (kvm_read(kd, ifaddraddr, (char *)&ifa, sizeof ifa) == -1) { @@ -758,9 +778,9 @@ get_netstat(void) continue; } ifaddraddr = (u_long)ifa.ifa_link.tqe_next; - - packets.input += ifnet.if_ipackets; - packets.output += ifnet.if_opackets; + /* Normalize number of packets, we count interface four timess */ + packets.input += (ifnet.if_ipackets >> 2); + packets.output += (ifnet.if_opackets >> 2); packets.collisions += ifnet.if_collisions; } } @@ -773,7 +793,7 @@ get_netstat(void) static void init_diskio(void) { - int retval, i; + int retval; cur.dinfo = (struct devinfo *) malloc(sizeof(struct devinfo)); last.dinfo = (struct devinfo *) malloc(sizeof(struct devinfo)); @@ -823,11 +843,10 @@ init_diskio(void) static void get_diskio(void) { - register int i, dn; + register int dn; long double busy_seconds; long double transfers_per_second, mb_per_second; struct devinfo *tmp_dinfo; - int retval; tmp_dinfo = last.dinfo; last.dinfo = cur.dinfo; @@ -890,7 +909,8 @@ get_diskio(void) errx(1, "xperfmon++: %s", devstat_errbuf); if (strcmp(cur.dinfo->devices[di].device_name, "da") == 0 || - strcmp(cur.dinfo->devices[di].device_name, "wd") == 0) { + strcmp(cur.dinfo->devices[di].device_name, "ad") == 0 || + strcmp(cur.dinfo->devices[di].device_name, "wd") == 0) { #ifdef DEBUG printf( "da%d: %Lf %Lf\n", cur.dinfo->devices[di].unit_number, transfers_per_second, mb_per_second); #endif @@ -904,8 +924,8 @@ get_diskio(void) diskstat.sa_trsf += transfers_per_second; diskstat.sa_mb += mb_per_second; } - if (strcmp(cur.dinfo->devices[di].device_name, "cd") == 0 || - strcmp(cur.dinfo->devices[di].device_name, "acd") == 0) { + if (strcmp(cur.dinfo->devices[di].device_name, "cd") == 0 || + strcmp(cur.dinfo->devices[di].device_name, "acd") == 0) { #ifdef DEBUG printf( "cd%d: %Lf %Lf\n", cur.dinfo->devices[di].unit_number, transfers_per_second, mb_per_second); #endif diff --git a/sysutils/xperfmon3/files/patch-aa b/sysutils/xperfmon3/files/patch-aa index d397915..0f4bf62 100644 --- a/sysutils/xperfmon3/files/patch-aa +++ b/sysutils/xperfmon3/files/patch-aa @@ -1,5 +1,5 @@ *** ../xperfmon++/StripChart.c Wed Jul 27 22:29:30 1994 ---- ./StripChart.c Sun Jan 10 21:14:40 1999 +--- ./StripChart.c Tue Apr 10 21:49:59 2001 *************** *** 1,4 **** ! /* $XConsortium: StripChart.c,v 1.20 91/05/24 17:20:42 converse Exp $ */ @@ -11,7 +11,7 @@ ! * Enhancement and error correction for FreeBSD-3.X ! * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de> ! * -! * $Id: StripChart.c,v 3.8 1999/01/10 20:14:30 lkoeller Exp lkoeller $ +! * $Id: StripChart.c,v 3.9 2001/04/10 19:49:34 lkoeller Exp lkoeller $ ! */ /*********************************************************** @@ -86,7 +86,7 @@ ******************************************************************/ + #ifndef LINT -+ static char rcsid[] = "$Id: StripChart.c,v 3.8 1999/01/10 20:14:30 lkoeller Exp lkoeller $"; ++ static char rcsid[] = "$Id: StripChart.c,v 3.9 2001/04/10 19:49:34 lkoeller Exp lkoeller $"; + #endif + + #include "fbsd_vers.h" @@ -203,7 +203,11 @@ * going to hold off until then. */ *************** -*** 295,301 **** +*** 291,301 **** + XtIntervalId *id; /* unused */ + { + PerfChartWidget w = (PerfChartWidget)client_data; +- XGCValues myXGCV; double value, checkValue; Display *dpy = XtDisplay(w); Window win = XtWindow(w); @@ -211,7 +215,10 @@ /* if (w->strip_chart.update > 0) w->strip_chart.interval_id = XtAppAddTimeOut(XtWidgetToApplicationContext( (Widget) w), ---- 324,330 ---- +--- 320,329 ---- + XtIntervalId *id; /* unused */ + { + PerfChartWidget w = (PerfChartWidget)client_data; double value, checkValue; Display *dpy = XtDisplay(w); Window win = XtWindow(w); @@ -232,7 +239,7 @@ if (value > w->strip_chart.max_value) { w->strip_chart.max_value = value; if (w->strip_chart.max_value > w->strip_chart.scale) { ---- 340,350 ---- +--- 339,349 ---- XtCallCallbacks( (Widget)w, XtNgetValue, (XtPointer)&value ); @@ -254,7 +261,7 @@ w->strip_chart.valuedata[w->strip_chart.interval] = value; if (XtIsRealized((Widget)w)) { ---- 352,359 ---- +--- 351,358 ---- w->strip_chart.interval = repaint_window(w, 0, (int) w->core.width); } } @@ -325,7 +332,7 @@ w->strip_chart.currentBG = w->strip_chart.okColor; } } ---- 361,420 ---- +--- 360,419 ---- (int)(w->core.height * value) / w->strip_chart.scale); /* Check for high warnings and alarms */ @@ -409,7 +416,7 @@ if (w->strip_chart.points != NULL) { w->strip_chart.points[0].x = w->strip_chart.interval; ---- 422,442 ---- +--- 421,441 ---- if ( !w->strip_chart.fillRect ) { /* draw line graph */ int y = (int) (w->core.height - @@ -432,7 +439,7 @@ if (w->strip_chart.points != NULL) { w->strip_chart.points[0].x = w->strip_chart.interval; *************** -*** 434,440 **** +*** 434,455 **** #define XDS(s) XDrawString(XtDisplay(w), XtWindow(w), \ w->strip_chart.hiGC, x, y, s, strlen(s)) @@ -440,16 +447,13 @@ repaint_window(w, left, width) PerfChartWidget w; int left, width; ---- 463,469 ---- - #define XDS(s) XDrawString(XtDisplay(w), XtWindow(w), \ - w->strip_chart.hiGC, x, y, s, strlen(s)) - -! static int - repaint_window(w, left, width) - PerfChartWidget w; - int left, width; -*************** -*** 448,455 **** + { +! register int i, j; + register int next = w->strip_chart.interval; + int scale = w->strip_chart.scale; + int scalewidth = 0; +! int x, x1, x2, y, y1, y2; + char numstring[24]; /* Compute the minimum scale required to graph the data, but don't go lower than min_scale. */ @@ -458,7 +462,21 @@ if (scale < w->strip_chart.min_scale) scale = w->strip_chart.min_scale; ---- 477,486 ---- +--- 462,485 ---- + #define XDS(s) XDrawString(XtDisplay(w), XtWindow(w), \ + w->strip_chart.hiGC, x, y, s, strlen(s)) + +! static int + repaint_window(w, left, width) + PerfChartWidget w; + int left, width; + { +! register int i; + register int next = w->strip_chart.interval; + int scale = w->strip_chart.scale; + int scalewidth = 0; +! int x, y, y1; + char numstring[24]; /* Compute the minimum scale required to graph the data, but don't go lower than min_scale. */ @@ -478,7 +496,7 @@ XClearWindow (XtDisplay (w), XtWindow (w)); } ---- 492,498 ---- +--- 491,497 ---- SetPoints(w); @@ -512,7 +530,7 @@ x = LABEL_ROOM - XTW(numstring); y = w->strip_chart.font_height - 4; XDS(numstring); /* draw max value */ ---- 510,540 ---- +--- 509,539 ---- /* draw titles */ if ( w->strip_chart.topLabel ) { @@ -561,7 +579,7 @@ else { /* If this is not the left most point, then draw a line * connecting this point with the one to its left. ---- 549,562 ---- +--- 548,561 ---- if ( i == left && left + 1 == width && width != next ) { y1 = (int) (w->core.height - @@ -585,7 +603,7 @@ i, /* x */ y, /* y */ (unsigned int) 1, /* width */ ---- 573,579 ---- +--- 572,578 ---- int y = (int) (w->core.height - (int)(w->core.height * w->strip_chart.valuedata[i]) / w->strip_chart.scale); @@ -602,7 +620,7 @@ for (i = 1; i < w->strip_chart.scale; i++) { j = i * ((int)w->core.height / w->strip_chart.scale); XDrawLine(dpy, win, w->strip_chart.hiGC, left , j, scalewidth, j); ---- 582,588 ---- +--- 581,587 ---- } @@ -611,6 +629,25 @@ j = i * ((int)w->core.height / w->strip_chart.scale); XDrawLine(dpy, win, w->strip_chart.hiGC, left , j, scalewidth, j); *************** +*** 566,573 **** + PerfChartWidget w; + Boolean blit; + { +! double old_max, old_min; +! int left, i, j; + register int next = w->strip_chart.interval; + + if (!XtIsRealized((Widget) w)) return; +--- 602,609 ---- + PerfChartWidget w; + Boolean blit; + { +! double old_max; +! int i, j; + register int next = w->strip_chart.interval; + + if (!XtIsRealized((Widget) w)) return; +*************** *** 582,598 **** bcopy((char *)(w->strip_chart.valuedata + next - j), (char *)(w->strip_chart.valuedata), j * sizeof(double)); @@ -629,7 +666,7 @@ w->strip_chart.max_value = w->strip_chart.valuedata[i]; if ( w->strip_chart.valuedata[i] < w->strip_chart.min_value ) w->strip_chart.min_value = w->strip_chart.valuedata[i]; ---- 619,645 ---- +--- 618,644 ---- bcopy((char *)(w->strip_chart.valuedata + next - j), (char *)(w->strip_chart.valuedata), j * sizeof(double)); next = w->strip_chart.interval = j; @@ -671,7 +708,7 @@ left = j; for (i = 1; i < w->strip_chart.scale; i++) { j = i * ((int)w->core.height / w->strip_chart.scale); ---- 658,669 ---- +--- 657,668 ---- (unsigned int) j-LABEL_ROOM, (unsigned int) w->core.height, LABEL_ROOM, 0); @@ -705,7 +742,7 @@ DestroyGC(old, new_gc); CreateGC(w, new_gc); ---- 692,714 ---- +--- 691,713 ---- draw_graph, (XtPointer)w); } */ @@ -747,7 +784,7 @@ points[i - 1].y = HEIGHT / w->strip_chart.scale; } } ---- 737,753 ---- +--- 736,752 ---- w->strip_chart.points = NULL; return; } diff --git a/sysutils/xperfmon3/files/patch-ab b/sysutils/xperfmon3/files/patch-ab index 7ed45a9..fb4c8ae 100644 --- a/sysutils/xperfmon3/files/patch-ab +++ b/sysutils/xperfmon3/files/patch-ab @@ -1,5 +1,5 @@ *** ../xperfmon++/misc.c Wed Jul 27 22:29:33 1994 ---- ./misc.c Sun Jan 10 21:14:22 1999 +--- ./misc.c Tue Apr 10 21:48:00 2001 *************** *** 1,10 **** /* Copyright 1994, Roger Smith for Sterling Software and NASA-Ames Research Center @@ -17,7 +17,7 @@ + * Enhancement and error correction for FreeBSD-3.X + * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de> + * -+ * $Id: misc.c,v 3.3 1999/01/10 20:13:27 lkoeller Exp lkoeller $ ++ * $Id: misc.c,v 3.4 2001/04/10 19:47:38 lkoeller Exp lkoeller $ + */ + /* Copyright 1994, Roger Smith for Sterling Software and NASA-Ames Research Center @@ -58,7 +58,7 @@ */ + + #ifndef LINT -+ static char rcsid[] = "$Id: misc.c,v 3.3 1999/01/10 20:13:27 lkoeller Exp lkoeller $"; ++ static char rcsid[] = "$Id: misc.c,v 3.4 2001/04/10 19:47:38 lkoeller Exp lkoeller $"; + #endif + + #include "fbsd_vers.h" @@ -135,6 +135,16 @@ pw->strip_chart.highWarn, pw->strip_chart.highAlarm, *************** +*** 142,148 **** + adjust_timeout(delta) + int delta; + { +- int i; + char hostname[132], *c; + + if ( appData.ms_per_sec == 1 ) +--- 155,160 ---- +*************** *** 152,158 **** appData.interval += delta; @@ -143,7 +153,7 @@ appData.interval_id = XtAppAddTimeOut(appData.app_context, appData.interval*appData.ms_per_sec, start_graphs, (caddr_t) appData.toplevel); ---- 165,171 ---- +--- 164,170 ---- appData.interval += delta; XtRemoveTimeOut(appData.interval_id); @@ -160,7 +170,7 @@ (float)(appData.interval*appData.ms_per_sec)/1000.0); XtVaSetValues(labelBox, XtNlabel, hostname, NULL); } ---- 173,179 ---- +--- 172,178 ---- (void)gethostname(hostname, sizeof(hostname)); c = (char *) ((long) &hostname[0] + (int) strlen(hostname)); diff --git a/sysutils/xperfmon3/files/patch-ac b/sysutils/xperfmon3/files/patch-ac index 079f583..354e8fe 100644 --- a/sysutils/xperfmon3/files/patch-ac +++ b/sysutils/xperfmon3/files/patch-ac @@ -1,5 +1,5 @@ *** ../xperfmon++/xperfmon.c Wed Jul 27 22:29:39 1994 ---- ./xperfmon.c Tue Jan 26 22:17:32 1999 +--- ./xperfmon.c Tue Apr 10 22:01:25 2001 *************** *** 1,6 **** /* @@ -13,7 +13,7 @@ ! * Enhancement and error correction for FreeBSD-3.X ! * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de> ! * -! * $Id: xperfmon.c,v 3.5 1999/01/10 17:04:06 lkoeller Exp lkoeller $ +! * $Id: xperfmon.c,v 3.7 2001/04/10 20:01:01 lkoeller Exp lkoeller $ ! */ ! ! /* @@ -78,7 +78,7 @@ */ + #ifndef LINT -+ static char rcsid[] = "$Id: xperfmon.c,v 3.5 1999/01/10 17:04:06 lkoeller Exp lkoeller $"; ++ static char rcsid[] = "$Id: xperfmon.c,v 3.7 2001/04/10 20:01:01 lkoeller Exp lkoeller $"; + #endif + + #include "fbsd_vers.h" @@ -103,12 +103,11 @@ double testValue; *************** *** 94,99 **** ---- 110,122 ---- +--- 110,121 ---- { NULL, NULL }, }; + /* LK!!! */ -+ char *info1 = "da1"; + int MIN_HEIGHT=78; + #define MIN_WIDTH 185 + #define ADD_TO_TIMEH (11+(int)(appData.numGraphsOn*0.2)) @@ -118,7 +117,7 @@ #define XtNcount "count" #define XtCCount "Count" *************** -*** 101,156 **** +*** 101,164 **** #define XtCFill "Fill" #define XtNfast "fast" #define XtCFast "Fast" @@ -175,7 +174,15 @@ #define DEF_INTERVAL 1 #define DEF_COUNT -1 ---- 124,280 ---- + #define MS_PER_SEC 1000 + #define SLOWEST_INTERVAL 100 + +- static int defaultInterval = DEF_INTERVAL; +- static int defaultCount = DEF_COUNT; + Widget perfmon[NUM_GRAPHS], timechart, labelBox; + + AppData appData; +--- 123,285 ---- #define XtCFill "Fill" #define XtNfast "fast" #define XtCFast "Fast" @@ -333,6 +340,12 @@ #define DEF_INTERVAL 1 #define DEF_COUNT -1 + #define MS_PER_SEC 1000 + #define SLOWEST_INTERVAL 100 + + Widget perfmon[NUM_GRAPHS], timechart, labelBox; + + AppData appData; *************** *** 171,207 **** static XrmOptionDescRec optionDescList[] = { @@ -372,7 +385,7 @@ { "-lowinputAlarm", "*perfChartInput.lowAlarm", XrmoptionSepArg, NULL }, { "-lowinputWarn", "*perfChartInput.lowWarn", XrmoptionSepArg, NULL }, { "-highinputAlarm", "*perfChartInput.highAlarm", XrmoptionSepArg, NULL }, ---- 295,392 ---- +--- 292,389 ---- static XrmOptionDescRec optionDescList[] = { { "-interval", ".interval", XrmoptionSepArg, (caddr_t) NULL}, { "-immediate", "*PerfChart.immediate", XrmoptionNoArg, "True" }, @@ -473,7 +486,7 @@ { "-highinputAlarm", "*perfChartInput.highAlarm", XrmoptionSepArg, NULL }, *************** *** 217,222 **** ---- 402,438 ---- +--- 399,435 ---- { "-highcollisionAlarm", "*perfChartCollision.highAlarm", XrmoptionSepArg, NULL }, { "-highcollisionWarn", "*perfChartCollision.highWarn", XrmoptionSepArg, NULL }, @@ -557,7 +570,7 @@ { XtNinterval, XtCInterval, XtRInt, sizeof(int), XtOffsetOf(AppData, interval), XtRImmediate, (caddr_t) DEF_INTERVAL }, { XtNcount, XtCCount, XtRInt, sizeof(int), ---- 442,543 ---- +--- 439,540 ---- { "-lownfsserverWarn", "*perfChartNFSServer.lowWarn", XrmoptionSepArg, NULL }, { "-highnfsserverAlarm", "*perfChartNFSServer.highAlarm", XrmoptionSepArg, NULL }, { "-highnfsserverWarn", "*perfChartNFSServer.highWarn", XrmoptionSepArg, NULL }, @@ -705,7 +718,7 @@ { XtNnfsclientAdd, XtCNfsclientAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[NFS_CLT]), XtRImmediate, (XtPointer) NULL }, { XtNnfsclientSub, XtCNfsclientSub, XtRBool, sizeof(Bool), ---- 548,684 ---- +--- 545,681 ---- XtOffsetOf(AppData, debug), XtRImmediate, (caddr_t)NULL }, { XtNfast, XtCFast, XtRBoolean, sizeof(Boolean), XtOffsetOf(AppData, fast), XtRImmediate, (XtPointer) NULL }, @@ -857,7 +870,7 @@ fprintf(stderr, "\nusage: xperfmon++ option option option .....\n"); fprintf(stderr, "options:\n"); fprintf(stderr, " [-display [{host}]:[{vs}]]\n"); ---- 686,701 ---- +--- 683,698 ---- { XtNnfsserverAdd, XtCNfsserverAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[NFS_SRV]), XtRImmediate, (XtPointer) NULL }, { XtNnfsserverSub, XtCNfsserverSub, XtRBool, sizeof(Bool), @@ -869,7 +882,7 @@ usage() { + #if __FreeBSD_version >= 300000 -+ fprintf(stderr, "\nxperfmon++ V3.0 for FreeBSD-3.X\n"); ++ fprintf(stderr, "\nxperfmon++ V3.1 for FreeBSD-3.X/4.X\n"); + #endif fprintf(stderr, "\nusage: xperfmon++ option option option .....\n"); fprintf(stderr, "options:\n"); @@ -894,7 +907,7 @@ fprintf(stderr, "NOTE: The default is ALL graphs! A \"-\" option takes away from the default list.\n"); fprintf(stderr, " Any \"+\" option resets the default list to empty and then adds the option.\n\n"); fprintf(stderr, "ALARMS:\n"); ---- 712,761 ---- +--- 709,758 ---- fprintf(stderr, " [-fast] (changes interval from seconds to milliseconds)\n"); fprintf(stderr, " [-immediate] (background limit alarm color is based on current sample)\n"); fprintf(stderr, " [-fill] (output filled graph instead of line graph)\n\n"); @@ -957,7 +970,7 @@ fprintf(stderr, "WARNING: It is an error condition to set both a high, and a low, limit warning or alarm.\n"); exit(1); } ---- 765,785 ---- +--- 762,782 ---- fprintf(stderr, " [-high*Alarm {value}] ( Set High Alarm value for *)\n"); fprintf(stderr, " [-high*Warn {value}] ( Set High Warning value for *)\n"); fprintf(stderr, " Where \"*\" is one of the following:\n"); @@ -981,7 +994,7 @@ } *************** *** 386,391 **** ---- 801,807 ---- +--- 798,804 ---- time(&timeStamp); return; } @@ -998,12 +1011,12 @@ char eventString[60]; switch (event->type) { case Expose: ---- 810,817 ---- +--- 807,814 ---- Boolean *contin2disp; { Dimension neww, newh; ! Dimension hOverHead, boxH, timeH, newWidgetH; -! int i, window_size_changed; +! int i, window_size_changed=FALSE; char eventString[60]; switch (event->type) { case Expose: @@ -1022,7 +1035,7 @@ strcpy(eventString,"reparent"); break; case ConfigureNotify: ---- 820,837 ---- +--- 817,834 ---- strcpy(eventString,"expose"); break; case MapNotify: @@ -1056,10 +1069,15 @@ if ( appData.debug ) printf("Resize Request: type=%d %s, oldw=%hu, oldh=%hu, neww=%hu, newh=%hu\n", (int)event->type, eventString, ---- 839,872 ---- +--- 836,874 ---- newh=event->xconfigure.height; strcpy(eventString,"configure"); break; ++ default: ++ neww=MIN_WIDTH; ++ newh=w->core.height; ++ window_size_changed = TRUE; ++ break; + } + if ( neww < MIN_WIDTH ) { @@ -1104,7 +1122,7 @@ if ( oldWidth == neww && oldHeight == newh ) return; if ( appData.debug ) ---- 874,880 ---- +--- 876,882 ---- neww, newh); if ( event->type == ConfigureNotify ) { @@ -1132,7 +1150,7 @@ char *progname = argv[0]; Bool foundAnAdd = FALSE; ---- 894,917 ---- +--- 896,918 ---- XFlush(XtDisplay(w)); } @@ -1149,7 +1167,6 @@ + /* LK!!! */ + Dimension timeH, newWidgetW, newWidgetH, hOverHead, boxH; + unsigned int w, h; -+ static char *da_str[] = {"da1 da2"}; + Arg arg; Pixmap icon_pixmap = None; @@ -1169,14 +1186,10 @@ if (argc != 1) usage(); if ( appData.toplevel->core.depth == 1 ) ---- 919,936 ---- +--- 920,933 ---- int i; gprogname = progname; -! -! /* topNames[DA_MB] = da_str[0]; LK!!! */ -! -! ! appData.toplevel = XtVaAppInitialize(&appData.app_context, "XPerfmon++", ! optionDescList, XtNumber(optionDescList), &argc, argv, @@ -1189,8 +1202,21 @@ if ( appData.toplevel->core.depth == 1 ) *************** -*** 488,493 **** ---- 941,949 ---- +*** 488,500 **** + XtGetApplicationResources(appData.toplevel, &appData, resources, + XtNumber(resources), NULL, 0 ); + + /*check resources to make sure they are in range */ + + if ( (int)appData.fast ) { + short uid = getuid(); + short euid = geteuid(); + if ( appData.debug ) fprintf(stderr, "uid = %hd, euid = %hd\n", uid, euid); +! if ( uid != 0 & euid != 0 ) { + fprintf(stderr, "xperfmon++: ERROR: Must be root to use \"-fast\"\n"); + exit(); + } +--- 938,953 ---- XtGetApplicationResources(appData.toplevel, &appData, resources, XtNumber(resources), NULL, 0 ); @@ -1200,6 +1226,13 @@ /*check resources to make sure they are in range */ if ( (int)appData.fast ) { + short uid = getuid(); + short euid = geteuid(); + if ( appData.debug ) fprintf(stderr, "uid = %hd, euid = %hd\n", uid, euid); +! if ( (uid != 0) & (euid != 0) ) { + fprintf(stderr, "xperfmon++: ERROR: Must be root to use \"-fast\"\n"); + exit(); + } *************** *** 512,518 **** @@ -1209,7 +1242,7 @@ if ( appData.addG[i] ) { foundAnAdd = appData.graphOn[i] = TRUE; appData.numGraphsOn++; ---- 968,974 ---- +--- 965,971 ---- /* build graphOn table */ @@ -1226,7 +1259,7 @@ appData.graphOn[i] = FALSE; else appData.numGraphsOn++; ---- 976,982 ---- +--- 973,979 ---- if ( !foundAnAdd ) { for ( i=0; i<NUM_GRAPHS; i++ ) { appData.graphOn[i] = TRUE; @@ -1258,7 +1291,7 @@ XtNjustify, XtJustifyLeft, XtNinternalHeight, 0, XtNtop, XtChainTop, ---- 996,1047 ---- +--- 993,1044 ---- xperfmon_width, xperfmon_height)); XtSetValues(appData.toplevel, &arg, 1); } @@ -1275,8 +1308,8 @@ + { /* LK!!! handle -geometry option correct, also small changes in handleResize */ + Window rwin; -+ int x,y,px,py; -+ unsigned int pw,ph,bw,d; ++ int x,y; ++ unsigned int bw,d; + + XtRealizeWidget(appData.toplevel); + @@ -1295,7 +1328,7 @@ + boxH = 22; + timeH = 12; + if (h > GRAPH_MIN_HEIGHT * appData.numGraphsOn + hOverHead + (boxH+7) + (timeH+ADD_TO_TIMEH)) -+ newWidgetH = (h - hOverHead - (boxH+7) - (timeH+ADD_TO_TIMEH) ) / appData.numGraphsOn; ++ newWidgetH = (h - hOverHead - (boxH+7) - (timeH+ADD_TO_TIMEH)) / appData.numGraphsOn; + else + newWidgetH = GRAPH_MIN_HEIGHT; + @@ -1347,7 +1380,7 @@ - XtRealizeWidget(appData.toplevel); XtAppMainLoop(appData.app_context); } ---- 1053,1086 ---- +--- 1050,1085 ---- for ( i=0; i<NUM_GRAPHS; i++ ) { if ( appData.graphOn[i] ) { sprintf(hostname, "perfChart%s", widgetLabels[i]); @@ -1381,4 +1414,6 @@ appData.interval*appData.ms_per_sec, start_graphs, (caddr_t) appData.toplevel); XtAppMainLoop(appData.app_context); ++ ++ exit(0); } diff --git a/sysutils/xperfmon3/files/patch-ad b/sysutils/xperfmon3/files/patch-ad index 012a992..8b15c86 100644 --- a/sysutils/xperfmon3/files/patch-ad +++ b/sysutils/xperfmon3/files/patch-ad @@ -1,5 +1,5 @@ *** ../xperfmon++/TimeChart.c Wed Jul 27 22:29:31 1994 ---- ./TimeChart.c Sun Jan 10 18:08:06 1999 +--- ./TimeChart.c Tue Apr 10 21:50:32 2001 *************** *** 1,4 **** ! /* $XConsortium: TimeChart.c,v 1.20 91/05/24 17:20:42 converse Exp $ */ @@ -11,7 +11,7 @@ ! * Enhancement and error correction for FreeBSD-3.X ! * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de> ! * -! * $Id: TimeChart.c,v 1.4 1999/01/10 17:07:57 lkoeller Exp lkoeller $ +! * $Id: TimeChart.c,v 1.5 2001/04/10 19:50:19 lkoeller Exp lkoeller $ ! */ /*********************************************************** @@ -86,7 +86,7 @@ ******************************************************************/ + #ifndef LINT -+ static char rcsid[] = "$Id: TimeChart.c,v 1.4 1999/01/10 17:07:57 lkoeller Exp lkoeller $"; ++ static char rcsid[] = "$Id: TimeChart.c,v 1.5 2001/04/10 19:50:19 lkoeller Exp lkoeller $"; + #endif + #include <stdio.h> @@ -169,6 +169,43 @@ (void) repaint_window ((TimeChartWidget)w, event->xgraphicsexpose.x, event->xgraphicsexpose.width); *************** +*** 274,280 **** + TimeChartWidget w = (TimeChartWidget)client_data; + time_t value; + Display *dpy = XtDisplay(w); +- Window win = XtWindow(w); + int x,y; + + /* if (w->time_chart.update > 0) +--- 279,284 ---- +*************** +*** 342,353 **** + TimeChartWidget w; + int left, width; + { +! register int i, j; + int oldInterval; + register int next = w->time_chart.interval; + int scale = w->time_chart.scale; + int scalewidth = 0; +! int x, x1, x2, y, y1, y2; + char numstring[32]; + #if 0 + /* Compute the minimum scale required to graph the data, but don't go +--- 346,357 ---- + TimeChartWidget w; + int left, width; + { +! register int i; + int oldInterval; + register int next = w->time_chart.interval; + int scale = w->time_chart.scale; + int scalewidth = 0; +! int x, y; + char numstring[32]; + #if 0 + /* Compute the minimum scale required to graph the data, but don't go +*************** *** 364,388 **** SetPoints(w); @@ -185,7 +222,7 @@ ! if (XtIsRealized((Widget)w)) { Display *dpy = XtDisplay(w); - Window win = XtWindow(w); +! Window win = XtWindow(w); ! width += left - 1; if (!scalewidth) scalewidth = width; @@ -195,7 +232,7 @@ w->time_chart.next_x = 0; w->time_chart.last_end = 0; w->time_chart.num_timestamps = 0; ---- 369,393 ---- +--- 368,391 ---- SetPoints(w); @@ -211,7 +248,6 @@ ! if (XtIsRealized((Widget)w)) { Display *dpy = XtDisplay(w); - Window win = XtWindow(w); ! width += left - 1; if (!scalewidth) scalewidth = width; @@ -230,7 +266,7 @@ w->time_chart.interval = oldInterval; } return(next); ---- 430,436 ---- +--- 428,434 ---- } } } @@ -239,6 +275,24 @@ } return(next); *************** +*** 442,449 **** + TimeChartWidget w; + Boolean blit; + { +! double old_max; +! int left, i, j; + register int next = w->time_chart.interval; + + if (!XtIsRealized((Widget) w)) return; +--- 445,451 ---- + TimeChartWidget w; + Boolean blit; + { +! int j; + register int next = w->time_chart.interval; + + if (!XtIsRealized((Widget) w)) return; +*************** *** 461,474 **** next = w->time_chart.interval = j; @@ -254,7 +308,7 @@ (unsigned int) w->core.width - j, (unsigned int)w->core.height, FALSE); ---- 466,479 ---- +--- 463,476 ---- next = w->time_chart.interval = j; XCopyArea(XtDisplay((Widget)w), XtWindow((Widget)w), XtWindow((Widget)w), @@ -281,7 +335,7 @@ LABEL_ROOM, (unsigned int)w->core.height, FALSE); for ( j=1; j < w->time_chart.num_timestamps; j++ ) { ---- 485,494 ---- +--- 482,491 ---- if ( j > 31 ) break; w->time_chart.timestamp_end[j]--; } @@ -301,7 +355,7 @@ return; } ---- 496,502 ---- +--- 493,499 ---- } w->time_chart.num_timestamps--; } @@ -328,7 +382,7 @@ DestroyGC(old, new_gc); CreateGC(w, new_gc); ---- 521,537 ---- +--- 518,534 ---- */ if ( w->time_chart.min_scale > (int) ((w->time_chart.max_value) + 1) ) ret_val = TRUE; @@ -355,7 +409,7 @@ size = sizeof(XPoint) * (w->time_chart.scale - 1); points = (XPoint *) XtRealloc( (XtPointer) w->time_chart.points, size); ---- 559,565 ---- +--- 556,562 ---- w->time_chart.points = NULL; return; } diff --git a/sysutils/xperfmon3/files/patch-bb b/sysutils/xperfmon3/files/patch-bb index 43e610e..3d1e349 100644 --- a/sysutils/xperfmon3/files/patch-bb +++ b/sysutils/xperfmon3/files/patch-bb @@ -111,5 +111,4 @@ #define XtNvmunix "vmunix" ! typedef struct _TimeChartRec *TimeChartWidget; - typedef struct _TimeChartClassRec *TimeChartWidgetClass; - + typedef struct _TimeChartClassRec *TimeChartWidgetClass; diff --git a/sysutils/xperfmon3/files/patch-bc b/sysutils/xperfmon3/files/patch-bc index c91bbd7..3b056ba 100644 --- a/sysutils/xperfmon3/files/patch-bc +++ b/sysutils/xperfmon3/files/patch-bc @@ -1,5 +1,5 @@ *** ../xperfmon++/system.h Wed Jul 27 22:29:34 1994 ---- ./system.h Sun Jan 10 18:08:49 1999 +--- ./system.h Tue Apr 10 21:49:11 2001 *************** *** 1,4 **** --- 1,11 ---- @@ -7,7 +7,7 @@ + * Enhancement and error correction for FreeBSD-3.X + * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de> + * -+ * $Id: system.h,v 3.4 1999/01/10 17:08:28 lkoeller Exp lkoeller $ ++ * $Id: system.h,v 3.5 2001/04/10 19:48:22 lkoeller Exp lkoeller $ + */ + + /* @@ -74,10 +74,13 @@ #define MAX_STATS NUM_POSSIBLE_STATS + 1 #define LINES_PER_LABEL 2 ---- 62,72 ---- +--- 62,75 ---- /* This file information needed by both system.c and Perfmon.c */ +! #include <time.h> +! #include <unistd.h> +! ! #if __FreeBSD_version >= 300000 ! # define NUM_POSSIBLE_STATS 25 ! #else @@ -105,7 +108,7 @@ struct statistic { int min_val, max_val; ---- 88,132 ---- +--- 91,137 ---- for (stat = 0; stat < num_stats; stat++) #define NO_STAT -1 @@ -120,6 +123,8 @@ ! #define TTY_CHARS_OUT 7 ! #define INTERRUPTS 8 ! #define FREE_MEM 9 +! /* Refresh swap only every FREE_MEM_INT intervals */ +! #define FREE_MEM_INT 10 ! #define DISK_TRANSFERS 10 ! #define DISK_MB 11 ! #define TAPE_TRANSFERS 12 @@ -153,7 +158,7 @@ int min_val, max_val; *************** *** 113,118 **** ---- 152,197 ---- +--- 157,202 ---- #define VALID_UPDATE(x) ((x <= MAX_TIME) && (x > 0)) @@ -202,7 +207,7 @@ #define IDL_CPU 2 *************** *** 125,130 **** ---- 204,210 ---- +--- 209,215 ---- #define NFS_CLT 9 #define NFS_SRV 10 #define LAST_ITEM NFS_SRV /* must equal last item above */ @@ -244,7 +249,7 @@ "CPU", "CPU", "CPU", ---- 226,299 ---- +--- 231,304 ---- }AppData, *AppDataPtr; static char *topNames[] = { @@ -321,7 +326,7 @@ "CPU", *************** *** 183,186 **** ---- 305,351 ---- +--- 310,356 ---- "Packets", "Calls", "Calls", diff --git a/sysutils/xperfmon3/files/patch-ca b/sysutils/xperfmon3/files/patch-ca index 8cd86ef..fa9c780 100644 --- a/sysutils/xperfmon3/files/patch-ca +++ b/sysutils/xperfmon3/files/patch-ca @@ -1,5 +1,5 @@ *** ../xperfmon++/Imakefile Wed Jul 27 22:29:29 1994 ---- ./Imakefile Wed Dec 2 23:33:54 1998 +--- ./Imakefile Tue Apr 10 21:51:28 2001 *************** *** 17,31 **** SYS_MODULE= sgi_system @@ -24,7 +24,7 @@ ! #if defined (FreeBSDArchitecture) ! FreeBSDFLAGS= -lkvm -ldevstat ! SYS_MODULE= freebsd_system -! CC= gcc +! CC?= gcc ! EXTRA_DEFINES= -DHAVE_SYS_PARAM_H ! #endif ! @@ -36,5 +36,4 @@ ! SRCS = TimeChart.c StripChart.c misc.c $(SYS_MODULE).c xperfmon.c ! OBJS = TimeChart.o StripChart.o misc.o $(SYS_MODULE).o xperfmon.o - ComplexProgramTarget(xperfmon++) - + ComplexProgramTarget(xperfmon++) diff --git a/sysutils/xperfmon3/files/patch-cb b/sysutils/xperfmon3/files/patch-cb index 21562c5..73823aa 100644 --- a/sysutils/xperfmon3/files/patch-cb +++ b/sysutils/xperfmon3/files/patch-cb @@ -1,5 +1,5 @@ *** ../xperfmon++/README Wed Jul 27 22:29:30 1994 ---- ./README Thu Oct 15 21:25:22 1998 +--- ./README Tue Apr 10 22:07:01 2001 *************** *** 6,12 **** program will compile correctly under X11R5 and/or Motif. @@ -18,11 +18,12 @@ Replaced Perfmon widget with a highly modified StripChart widget. Charts now smooth scroll, scales update immediately, and there is a scrolling timestamp *************** -*** 18,20 **** ---- 18,66 ---- +*** 17,20 **** +--- 17,75 ---- + 1-25-94 Completed port to DEC-Ultrix by Roger Smith, Sterling Software @ NASA-Ames Research Center, rsmith@proteus.arc.nasa.gov. Imake will build for correct O/S if x11r5 is fully installed in all the right places. - ++ + + 3-15-95 Completely new port of systemdependent file (bsd_system.c) for FreeBSD-2.X + by Lars Köller @University of Rostock, Germany. @@ -69,3 +70,11 @@ + Compiles on FreeBSD-3.X + by Lars Köller @University of Bielefeld, Germany. + E-Mail: Lars.Koeller@Uni-Bielefeld.DE ++ ++ 04-10-01 Correct several bugs in V3.0: ++ Calc etime correct for multi CPU machines, show disk stats for new ++ "ad" disk devices, count number of network in/out packets correctly, ++ get free swapspace only every 10 intervals to limit CPU usage. ++ Compiles on FreeBSD-3.X/4.X ++ by Lars Köller @University of Bielefeld, Germany. ++ E-Mail: Lars.Koeller@Uni-Bielefeld.DE diff --git a/sysutils/xperfmon3/files/patch-cd b/sysutils/xperfmon3/files/patch-cd index 043f5df..42c1187 100644 --- a/sysutils/xperfmon3/files/patch-cd +++ b/sysutils/xperfmon3/files/patch-cd @@ -1,5 +1,5 @@ *** ../xperfmon++/xperfmon++.man Wed Jul 27 22:29:39 1994 ---- ./xperfmon++.man Sun Jan 10 21:28:14 1999 +--- ./xperfmon++.man Tue Apr 10 22:04:19 2001 *************** *** 1,5 **** ! ./" .TH XPERFMON++ 1 "19 January 1988" "X Version 11" @@ -8,7 +8,7 @@ xperfmon++ - X Window System-based performance monitor .SH SYNOPSIS --- 1,4 ---- -! .TH XPERFMON++ 1 "10 Oct 1998" "V3.0 for FreeBSD-3.X" +! .TH XPERFMON++ 1 "10 Oct 1998" "V3.1 for FreeBSD-3.X/4.X" .SH NAME xperfmon++ - X Window System-based performance monitor .SH SYNOPSIS @@ -149,7 +149,7 @@ Graph \fISystem Interrupts\fP. .TP 26 + .B \-freeswap | \+freeswap -+ Graph \fIFree Swap in %\fP. ++ Graph \fIFree Swap in %\fP. Calculation is done only every 10 intervals. + .TP 26 + .B \-diskxfr | \+diskxfr + Graph \fIDisk Transfers\fP per second. @@ -580,7 +580,7 @@ above address. .PP Enjoy! ---- 514,561 ---- +--- 514,566 ---- If you like this program, or if you have difficulties, I would like to hear your comments. E-Mail me at rsmith@proteus.arc.nasa.gov. .PP @@ -625,6 +625,11 @@ + number of graphs and rescaling the window fixed (hope this was the last time). + Output of Warn/Alarm values (press L|l in xperfmon++ window) corrected. + .PP ++ .I xperfmon++ V3.1 for FreeBSD 3.X/4.X (several bugfixes) ++ Calc etime correct for multi CPU machines, show disk stats for new ++ "ad" disk devices, count number of network in/out packets correctly, ++ get free swapspace only every 10 intervals to limit CPU usage. ++ .PP + Please E-Mail any bugs or comments with the subject + "xperfmon++ V3: ..." to Lars.Koeller@Uni-Bielefeld.DE or lkoeller@cc.FH-Lippe.DE. .PP |