From owner-FreeBSD-users-jp@jp.FreeBSD.org Sat Apr 26 08:49:17 2008
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id m3PNnH989281;
	Sat, 26 Apr 2008 08:49:17 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from mgkyb1.nw.wakwak.com (IDENT:0@mgkyb1.nw.wakwak.com [211.9.230.193])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id m3PNnH989263
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sat, 26 Apr 2008 08:49:17 +0900 (JST)
	(envelope-from md440@luna.wak2.jp)
Received: from vckyb1.nw.wakwak.com (postfix@vckyb1.nw.wakwak.com [211.9.230.144])
	by mgkyb1.nw.wakwak.com (8.14.2/8.14.2/2007-12-27) with SMTP id m3PNnHNU041279
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sat, 26 Apr 2008 08:49:17 +0900 (JST)
	(envelope-from md440@luna.wak2.jp)
Received: from za.wakwak.com (za.wakwak.com [211.9.230.118])
	by vckyb1.nw.wakwak.com (Postfix) with ESMTP id 12FE930060
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sat, 26 Apr 2008 08:49:17 +0900 (JST)
Received: from localhost (z178.58-98-187.ppp.wakwak.ne.jp [58.98.187.178])
	(pbs=p3fn60)
	by za.wakwak.com (8.14.2/8.14.2/2007-12-26) with ESMTP/inet id m3PNnGUm008115
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sat, 26 Apr 2008 08:49:16 +0900 (JST)
	(envelope-from md440@luna.wak2.jp)
Message-ID: <86skx97azd.wl%md440@luna.wak2.jp>
From: "Dobashi.M" <md440@luna.wak2.jp>
To: FreeBSD-users-jp@jp.FreeBSD.org
User-Agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8
 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.6 MULE XEmacs/21.4 (patch 20) (Double
 Solitaire) (i386--freebsd)
MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka")
Content-Type: text/plain; charset=ISO-2022-JP
X-Dispatcher: imput version 20050308(IM148)
Lines: 123
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Sat, 26 Apr 2008 08:47:50 +0900
X-Sequence: FreeBSD-users-jp 91603
Subject: [FreeBSD-users-jp 91603] 7.0 =?ISO-2022-JP?B?GyRCJEckThsoQg==?=
 gkrellm2 =?ISO-2022-JP?B?GyRCJE4bKEI=?= Swap
 =?ISO-2022-JP?B?GyRCJWEhPCU/ITwkSyREJCQkRhsoQg==?=
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: md440@luna.wak2.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209


7.0-RELEASE(CPU: AMD-K6)$B$K$J$C$F$+$i!"(Bgkrellm2$B$N(B Swap$B%a!<%?!<$,!"5/F0(B
$B;~$NCM$N$^$^$GJQ99$5$l$^$;$s!#(B

sysutils/gkrellm2/work/gkrellm-2.3.0/src/sysdeps/freebsd.c
...
 struct vmmeter sum;
...
 if (kvm_read(kvmd, nl_mem[N_CNT].n_value, (char *)&sum,
              sizeof(sum)) != sizeof(sum))
...
 swappgsin = sum.v_swappgsin;
 swappgsout = sum.v_swappgsout;

(gdb) p sum
$3 = {... v_swapin = 0, v_swapout = 0, v_swappgsin = 0, v_swappgsout = 0, 
  ... v_page_count = 61095, ... v_free_count = 22020,
  ... v_wire_count = 12479, v_active_count = 15406, v_inactive_target = 2791,
  ... v_cache_count = 923 ...

$BJQF0Cf$G$b(B sum.v_swappgsin $B$H(B sum.v_swappgsout$B$NCM$,(B "0"$B$N$^$^$GBX$o$i(B
$B$:!"%a!<%?!<$,99?7$5$l$J$$$h$&$G$9!#(B
6.3 $B$G$O@5>o$G$9!#$I$3$+$N@_Dj$N0c$$$G$7$g$&$+(B?

$B$?$@!"(Btop$B$G$O(B Swap$BCM$O@5>o$K99?7$5$l$F$$$k$N$G!"$=$3$+$i(B 2$B$D$NFI$_9~$_(B
$BItJ,$@$1$r<ZMQ(B(gtk$BMQ$K>/$7JQ99(B)$B$7$F$_$k$H(B

--- freebsd.c.orig	2007-07-07 08:53:07.000000000 +0900
+++ freebsd.c	2008-04-24 18:08:08.000000000 +0900
@@ -654,6 +654,9 @@
 #include <sys/sysctl.h>
 #include <vm/vm_param.h>
 
+#define GETSYSCTL(name, var) getsysctl(name, &(var), sizeof(var))
+static void getsysctl(const char *name, void *ptr, size_t len);
+
 static struct nlist nl_mem[] = {
 #define N_CNT		0
 	{ "_cnt" },
@@ -934,6 +937,23 @@
 		swap_total,
 		swap_used;
 
+static void
+getsysctl(const char *name, void *ptr, size_t len)
+{
+        size_t nlen = len;
+
+        if (sysctlbyname(name, ptr, &nlen, NULL, 0) == -1) {
+                fprintf(stderr, "top: sysctl(%s...) failed: %s\n", name,
+                    strerror(errno));
+                exit(23);
+        }
+        if (nlen != len) {
+                fprintf(stderr, "top: sysctl(%s...) expected %lu, got %lu\n",
+                    name, (unsigned long)len, (unsigned long)nlen);
+                exit(23);
+        }
+}
+
 void
 gkrellm_sys_mem_read_data(void)
 	{
@@ -941,6 +961,7 @@
 	static gint	first_time_done = 0;
 	static gint	swappgsin = -1;
 	static gint	swappgsout = -1;
+	gint		nspgsin, nspgsout;
 	gint		dpagein, dpageout;
 	struct vmmeter	sum;
 	guint64		total, used, x_used, free, shared, buffers, cached;
@@ -1039,6 +1060,9 @@
 	cached = sum.v_cache_count << pshift;
 	used = x_used - buffers - cached;
 	gkrellm_mem_assign_data(total, used, free, shared, buffers, cached);
+
+	GETSYSCTL("vm.stats.vm.v_swappgsin", nspgsin);
+	GETSYSCTL("vm.stats.vm.v_swappgsout", nspgsout);
 	if (swappgsin < 0)
 		{
 		dpagein = 0;
@@ -1046,11 +1070,11 @@
 		}
 	else
 		{
-		dpagein = (sum.v_swappgsin - swappgsin) << (pshift - 10);
-		dpageout = (sum.v_swappgsout - swappgsout) << (pshift - 10);
+		dpagein = (nspgsin - swappgsin) << pshift;
+		dpageout = (nspgsout - swappgsout) << pshift;
 		}
-	swappgsin = sum.v_swappgsin;
-	swappgsout = sum.v_swappgsout;
+	swappgsin = nspgsin << pshift;
+	swappgsout = nspgsout << pshift;
 
 	if (dpagein > 0 || dpageout > 0 || first_time_done == 0)
 		{
----------- $B$3$3$^$G(B ----------

jdk16$B$G$N(B make$B$G!"(Bswap 100%$B$GDd;_$9$k$^$G$NJQ2=$r!"$A$c$s$H%a!<%?!<$G(B
$B<($9$h$&$K$J$j$^$9!#(B

/usr/include/sys/vmmeter.h$B$,(B 6.3$B$+$iBX$C$F$$$F(B
...
/*
 * System wide statistics counters.
 * Locking:
 *      a - locked by atomic operations
 *      c - constant after initialization
 *      f - locked by vm_page_queue_free_mtx
 *      p - locked by being in the PCPU and atomicity respect to interrupts
 *      q - locked by vm_page_queue_mtx
 */
...
        u_int v_swapin;         /* (p) swap pager pageins */
        u_int v_swapout;        /* (p) swap pager pageouts */
...

swap $B4X78$,!"3'(B(p)$B$H$J$C$F$$$k$N$G$9$,(B($B%G%e%"%k(BCPU$B$X$NBP1~$G$7$g$&$+(B?)$B!"(B
$B$3$3$^$G!((B
-- 
                        /  Name : Dobashi Mitsuyoshi  /
                       / E-mail : md440@luna.wak2.jp /
