Date: Tue, 8 Jul 2008 16:50:03 GMT From: hotlips Internet admin <hostmaster@GTS.Infra-service.CA> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/92412: [libexec] [patch] rpc.rstatd reports bogus packets-per-second info Message-ID: <200807081650.m68Go3vf075866@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/92412; it has been noted by GNATS. From: hotlips Internet admin <hostmaster@GTS.Infra-service.CA> To: bug-followup@FreeBSD.org Cc: jhb@freebsd.org Subject: Re: kern/92412: [libexec] [patch] rpc.rstatd reports bogus packets-per-second info Date: Tue, 8 Jul 2008 12:33:34 -0400 (EDT) Recently kern/122875 bug report provoked a change to libexec/rpc.rstatd (rather than a still-needed fix to sys/kern/kern_clock.c for RELENG_7 & HEAD) - Below is an updated patch to re-establish the required fixes so that it works properly... Bruce Becker +1 416 410 0879 GTS Network Administration Toronto, Ont. Email: hostmaster@GTS.Infra-service.CA --------- 8< --------- 8< --------- 8< --------- 8< --------- 8< --------- --- rstat_proc.c.2008062600 2008-06-26 22:20:37.000000000 -0400 +++ rstat_proc.c.2008070600 2008-07-06 15:36:25.000000000 -0400 @@ -125,6 +125,7 @@ if (! stat_is_init) stat_init(); sincelastreq = 0; + stats_all.s2.if_opackets = stats_all.s3.if_opackets; return(&stats_all.s2); } @@ -134,6 +135,7 @@ if (! stat_is_init) stat_init(); sincelastreq = 0; + stats_all.s1.if_opackets = stats_all.s3.if_opackets; return(&stats_all.s1); } @@ -205,13 +207,13 @@ exit(1); } for(i = 0; i < RSTAT_CPUSTATES ; i++) - stats_all.s1.cp_time[i] = bsd_cp_time[cp_time_xlat[i]]; + stats_all.s3.cp_time[i] = bsd_cp_time[cp_time_xlat[i]]; (void)getloadavg(avrun, sizeof(avrun) / sizeof(avrun[0])); - stats_all.s2.avenrun[0] = avrun[0] * FSCALE; - stats_all.s2.avenrun[1] = avrun[1] * FSCALE; - stats_all.s2.avenrun[2] = avrun[2] * FSCALE; + stats_all.s3.avenrun[0] = avrun[0] * FSCALE; + stats_all.s3.avenrun[1] = avrun[1] * FSCALE; + stats_all.s3.avenrun[2] = avrun[2] * FSCALE; mib[0] = CTL_KERN; mib[1] = KERN_BOOTTIME; @@ -221,13 +223,13 @@ exit(1); } - stats_all.s2.boottime.tv_sec = btm.tv_sec; - stats_all.s2.boottime.tv_usec = btm.tv_usec; + stats_all.s3.boottime.tv_sec = btm.tv_sec; + stats_all.s3.boottime.tv_usec = btm.tv_usec; #ifdef DEBUG - fprintf(stderr, "%d %d %d %d\n", stats_all.s1.cp_time[0], - stats_all.s1.cp_time[1], stats_all.s1.cp_time[2], stats_all.s1.cp_time[3]); + fprintf(stderr, "%d %d %d %d\n", stats_all.s3.cp_time[0], + stats_all.s3.cp_time[1], stats_all.s3.cp_time[2], stats_all.s3.cp_time[3]); #endif #define FETCH_CNT(stat, cnt) do { \ @@ -238,12 +240,12 @@ } \ } while (0) - FETCH_CNT(stats_all.s1.v_pgpgin, vm.v_vnodepgsin); - FETCH_CNT(stats_all.s1.v_pgpgout, vm.v_vnodepgsout); - FETCH_CNT(stats_all.s1.v_pswpin, vm.v_swappgsin); - FETCH_CNT(stats_all.s1.v_pswpout, vm.v_swappgsout); - FETCH_CNT(stats_all.s1.v_intr, sys.v_intr); - FETCH_CNT(stats_all.s2.v_swtch, sys.v_swtch); + FETCH_CNT(stats_all.s3.v_pgpgin, vm.v_vnodepgsin); + FETCH_CNT(stats_all.s3.v_pgpgout, vm.v_vnodepgsout); + FETCH_CNT(stats_all.s3.v_pswpin, vm.v_swappgsin); + FETCH_CNT(stats_all.s3.v_pswpout, vm.v_swappgsout); + FETCH_CNT(stats_all.s3.v_intr, sys.v_intr); + FETCH_CNT(stats_all.s3.v_swtch, sys.v_swtch); gettimeofday(&tm, (struct timezone *) 0); stats_all.s1.v_intr -= hz*(tm.tv_sec - btm.tv_sec) + hz*(tm.tv_usec - btm.tv_usec)/1000000; @@ -262,11 +264,11 @@ exit(1); } - stats_all.s1.if_ipackets = 0; - stats_all.s1.if_opackets = 0; - stats_all.s1.if_ierrors = 0; - stats_all.s1.if_oerrors = 0; - stats_all.s1.if_collisions = 0; + stats_all.s3.if_ipackets = 0; + stats_all.s3.if_opackets = 0; + stats_all.s3.if_ierrors = 0; + stats_all.s3.if_oerrors = 0; + stats_all.s3.if_collisions = 0; for (i = 1; i <= ifcount; i++) { len = sizeof ifmd; mib[3] = IFMIB_IFDATA; @@ -281,11 +283,11 @@ exit(1); } - stats_all.s1.if_ipackets += ifmd.ifmd_data.ifi_ipackets; - stats_all.s1.if_opackets += ifmd.ifmd_data.ifi_opackets; - stats_all.s1.if_ierrors += ifmd.ifmd_data.ifi_ierrors; - stats_all.s1.if_oerrors += ifmd.ifmd_data.ifi_oerrors; - stats_all.s1.if_collisions += ifmd.ifmd_data.ifi_collisions; + stats_all.s3.if_ipackets += ifmd.ifmd_data.ifi_ipackets; + stats_all.s3.if_opackets += ifmd.ifmd_data.ifi_opackets; + stats_all.s3.if_ierrors += ifmd.ifmd_data.ifi_ierrors; + stats_all.s3.if_oerrors += ifmd.ifmd_data.ifi_oerrors; + stats_all.s3.if_collisions += ifmd.ifmd_data.ifi_collisions; } gettimeofday((struct timeval *)&stats_all.s3.curtime, (struct timezone *) 0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807081650.m68Go3vf075866>