From owner-svn-src-head@FreeBSD.ORG Tue Jan 29 12:12:00 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 5D2936D3 for ; Tue, 29 Jan 2013 12:12:00 +0000 (UTC) (envelope-from andrey@zonov.org) Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) by mx1.freebsd.org (Postfix) with ESMTP id BF1857BF for ; Tue, 29 Jan 2013 12:11:59 +0000 (UTC) Received: by mail-lb0-f175.google.com with SMTP id n3so622437lbo.20 for ; Tue, 29 Jan 2013 04:11:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:sender:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:x-enigmail-version:content-type :x-gm-message-state; bh=Xqcw4PsQRllbNAmNcwLDP4/dybA82ik8gUFyX1co+jY=; b=km01Q+dwaRYh0RyTzqqSYHg4vvQWKTIEv1katSQ8Rjg2mMxxSp9kbcTaCY2kmJ8+pY iGSsK9yF8vGuyE/Ic46BYga1jGE8pKq9WoL1Bzu0yuse6NtRqkZn1a8UQSELxt3UqWWB +wIY/4+3bOMUSUKmc70SflYI+Sh1ayp5NTyqoe5xJZfq2W8ZsG9KAr/Afplrs3P8FOvD +5M62q2onvfGedy68UrfmNR6iR47lHQxyJq1lBnavaAUzPZXVu8EGyISUft+h8kXdDiW f4tPmxQlmNHLeHtlclKm06zRD0+4QDhF10gGG6iJ8EZQQNkcp67RlHFgYtxlA6pjvkIy DnAg== X-Received: by 10.152.109.146 with SMTP id hs18mr961823lab.8.1359461518364; Tue, 29 Jan 2013 04:11:58 -0800 (PST) Received: from dhcp170-82-red.yandex.net (dhcp170-82-red.yandex.net. [95.108.170.82]) by mx.google.com with ESMTPS id gt13sm4897411lab.14.2013.01.29.04.11.56 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 29 Jan 2013 04:11:57 -0800 (PST) Sender: Andrey Zonov Message-ID: <5107BC87.4080403@FreeBSD.org> Date: Tue, 29 Jan 2013 16:11:51 +0400 From: Andrey Zonov User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 MIME-Version: 1.0 To: Bruce Evans Subject: Re: svn commit: r246033 - head/usr.bin/systat References: <201301281257.r0SCvhhv071414@svn.freebsd.org> <20130129003913.G2698@besplex.bde.org> In-Reply-To: <20130129003913.G2698@besplex.bde.org> X-Enigmail-Version: 1.5 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="----enig2DFWENKBPTLSKWUVBVGUD" X-Gm-Message-State: ALoCoQkkDStjhRuUgWIZODQnZYIOtsxr8TWbrPxvFV748bWWpsHZ+5DOJyoqGOUDZvPeIv0x9a2p Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jan 2013 12:12:00 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2DFWENKBPTLSKWUVBVGUD Content-Type: multipart/mixed; boundary="------------060109070406000801030708" This is a multi-part message in MIME format. --------------060109070406000801030708 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 1/28/13 6:51 PM, Bruce Evans wrote: > On Mon, 28 Jan 2013, Andrey Zonov wrote: >=20 >> Log: >> - Show page faults requiring I/O on vmstat display. >=20 > No space is available there for showing it. >=20 Yep, you're right. >> Modified: head/usr.bin/systat/vmstat.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> >> --- head/usr.bin/systat/vmstat.c Mon Jan 28 12:54:53 2013 (r2460= 32) >> +++ head/usr.bin/systat/vmstat.c Mon Jan 28 12:57:42 2013 (r2460= 33) >> @@ -324,24 +325,25 @@ labelkre(void) >> mvprintw(INTSROW, INTSCOL + 1, "Interrupts"); >> mvprintw(INTSROW + 1, INTSCOL + 6, "total"); >> >> - mvprintw(VMSTATROW, VMSTATCOL + 9, "cow"); >> - mvprintw(VMSTATROW + 1, VMSTATCOL + 9, "zfod"); >> - mvprintw(VMSTATROW + 2, VMSTATCOL + 9, "ozfod"); >> - mvprintw(VMSTATROW + 3, VMSTATCOL + 9 - 1, "%%ozfod"); >> - mvprintw(VMSTATROW + 4, VMSTATCOL + 9, "daefr"); >> - mvprintw(VMSTATROW + 5, VMSTATCOL + 9, "prcfr"); >> - mvprintw(VMSTATROW + 6, VMSTATCOL + 9, "totfr"); >> - mvprintw(VMSTATROW + 7, VMSTATCOL + 9, "react"); >> - mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "pdwak"); >> - mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdpgs"); >> - mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "intrn"); >> - mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "wire"); >> - mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "act"); >> - mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "inact"); >> - mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "cache"); >> - mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "free"); >> - if (LINES - 1 > VMSTATROW + 16) >> - mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "buf"); >=20 > This is the last possible line on a 25-line display. On a 24-line > display, it is omitted so that it doesn't mangle or get mangled by the > prompt/status line. But previous lines are not specially handled, and > neither are other parts of the display. Also, the interrupt display > may reach the last line of the window, and then it interacts with the > prompt/status line even on a 25-line display. >=20 > On a 23-line display, mangling occurs as follows: > - the special case for the "buf" line has no visible effect, since > this line is outside of the window > - the free "line" and the prompt/status line are both on the last line > in the window, together with the %busy display and possibly the > interrupts display. These mangle each other, >=20 > On a 22-line display, the mangling moves up by 1 line and becomes worse= =2E > Now there seems to be a windowing bug. Some field (the "free" one) is > mispositioned, so the display becomes magled (instead of just truncated= ) > even when the prompt/status line is not used. >=20 >> + mvprintw(VMSTATROW, VMSTATCOL + 9, "ioflt"); >=20 > Putting it first unsorts the fields a bit and makes the diff large. >=20 > It is not documented in the man page. >=20 Fixed in attached systat1.patch.txt. >> + mvprintw(VMSTATROW + 1, VMSTATCOL + 9, "cow"); >> + mvprintw(VMSTATROW + 2, VMSTATCOL + 9, "zfod"); >> + mvprintw(VMSTATROW + 3, VMSTATCOL + 9, "ozfod"); >> + mvprintw(VMSTATROW + 4, VMSTATCOL + 9 - 1, "%%ozfod"); >> + mvprintw(VMSTATROW + 5, VMSTATCOL + 9, "daefr"); >> + mvprintw(VMSTATROW + 6, VMSTATCOL + 9, "prcfr"); >> + mvprintw(VMSTATROW + 7, VMSTATCOL + 9, "totfr"); >> + mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react"); >> + mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak"); >> + mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs"); >> + mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn"); >> + mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire"); >> + mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act"); >> + mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact"); >> + mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "cache"); >> + mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free"); >> + if (LINES - 1 > VMSTATROW + 17) >> + mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf"); >=20 > Adding a field at the top pushes the "buf" field to the last line of > the window in the most common case of a 25-line display, and makes its > special case useless except for 26-line displays, so mangling from the > "buf" line now occurs in the most common case. >=20 > It moves the problems for 22-24 line displays to 23-25 line displays, > respectively. Now it is the "free" field that needs the special handli= ng > to avoid mangling in the nextmost common case of 24-line displays. Eve= n > more seriously, the "free" field is much more interesting than the "buf= " > field, so we don't want to lose it or have it mangled in a common case.= > The "buf" field really belongs in another group of fields (before "dtbu= f") > but is spaced where it is since there is no free space near "dtbuf" but= > just 1 line of free space (in the most common case) in the vmmeter fiel= ds > column ("buf" also isn't a vmmeter field so it doesn't belong there). = But > now there are 0 lines of free space there. >=20 > Since systat output barely works with screen depths other than 24 and > 25 lines, omitting the "buf" field after moving its special case to the= > "free" field and moving some less important field than "free" to the > end would be the simplest fix. >=20 > The "buf" field is worse than useless because it is just the constant > limit on the amount of virtual memory for buffers (nbuf * BKVASIZE). > It is not merely useless, since it wastes space and confuses users > into thinking that it is useful. top(1) prints it too. In other OS's > top(1) prints something related to buffer resources that is actually > useful. The related usful values in FreeBSD are the non-constant > amount of physical memory mapped to buffers and to a lesser extent the > non-constant amount of virtual memory mapped to buffers. These are > not directly available. Also the amount of malloced memory pointed > to by buffers (available in vfs.bufmallocspace), and the amount of > disk space cached in VMIO buffers (not directly available, buf "inact" > often approximates it). But there is no space for these. >=20 > "buf" is even more useless with zfs. So are some of the other fields > printed by systat and top. I think zfs has its own statistics programs= , > but it would be especially difficult to combine these with systat > statistics see the combined resource usage if both zfs and file systems= > using the buffer cache/VMIO are active. >=20 I totally agree with you, 'buf' should go away from systat and top. I removed 'buf' from systat. Please review systat2.patch.txt. To count 'disk cache' we have to add new counter which should track all pages with OBJT_VNODE type. It doesn't look hard to implement this. I wrote utility [1] which allows me to inspect memory and find what is in disk cache. I also found that %ozfod is not useful for me and I removed it to not mangle 'free' on 24-line terminals (systat3.patch.txt). Thanks for comments! [1] https://github.com/z0nt/meminfo/ --=20 Andrey Zonov --------------060109070406000801030708 Content-Type: text/plain; charset=UTF-8; name="systat1.patch.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="systat1.patch.txt" commit 8b2daa5a9ffae685987ec7c7641d94f87d8da91e Author: Andrey Zonov Date: Tue Jan 29 15:21:54 2013 +0400 - Document 'ioflt' in man page. =20 Spotted by: bde X-MFC-with: r246033 diff --git a/usr.bin/systat/systat.1 b/usr.bin/systat/systat.1 index 849c890..d815e54 100644 --- a/usr.bin/systat/systat.1 +++ b/usr.bin/systat/systat.1 @@ -28,7 +28,7 @@ .\" @(#)systat.1 8.2 (Berkeley) 12/30/93 .\" $FreeBSD: head/usr.bin/systat/systat.1 240605 2012-09-17 13:36:47Z m= elifaro $ .\" -.Dd September 17, 2012 +.Dd January 29, 2013 .Dt SYSTAT 1 .Os .Sh NAME @@ -371,6 +371,7 @@ memory system. The first few lines describe, in units (except as noted below) of pages per second averaged over the sampling interval, +page faults requiring I/O (`ioflt'), pages copied on write (`cow'), pages zero filled on demand (`zfod'), pages optimally zero filled on demand (`ozfod'), --------------060109070406000801030708 Content-Type: text/plain; charset=UTF-8; name="systat2.patch.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="systat2.patch.txt" commit dc19ccb997e57ddc8a31ad839f26db5f32590b7d Author: Andrey Zonov Date: Tue Jan 29 14:51:44 2013 +0400 - Do not show bufspace, because it is useless and constant in fact. =20 Suggested by: bde X-MFC-with: r246033 diff --git a/usr.bin/systat/systat.1 b/usr.bin/systat/systat.1 index 29b3276..07cf12a 100644 --- a/usr.bin/systat/systat.1 +++ b/usr.bin/systat/systat.1 @@ -396,15 +396,6 @@ free pages (`free'). Note that the values displayed are the current transient ones; they are not averages. .Pp -At the bottom of this column is a line showing the -amount of virtual memory, in kilobytes, mapped into the buffer cache (`b= uf'). -This statistic is not useful. -It exists only as a placeholder for the corresponding useful statistic -(the amount of real memory used to cache disks). -The most important component of the latter (the amount of real memory -used by the vm system to cache disks) is not available, -but can be guessed from the `inact' amount under some system loads. -.Pp Running down the right hand side of the display is a breakdown of the interrupts being handled by the system. At the top of the list is the total interrupts per second diff --git a/usr.bin/systat/vmstat.c b/usr.bin/systat/vmstat.c index 7a9d719..c7e3c7f 100644 --- a/usr.bin/systat/vmstat.c +++ b/usr.bin/systat/vmstat.c @@ -112,7 +112,6 @@ static struct Info { struct nchstats nchstats; long nchcount; long *intrcnt; - long bufspace; int desiredvnodes; long numvnodes; long freevnodes; @@ -342,8 +341,6 @@ labelkre(void) mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact"); mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "cache"); mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free"); - if (LINES - 1 > VMSTATROW + 17) - mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf"); =20 mvprintw(GENSTATROW, GENSTATCOL, " Csw Trp Sys Int Sof Flt"); =20 @@ -513,8 +510,6 @@ showkre(void) putint(pgtokb(s.v_inactive_count), VMSTATROW + 14, VMSTATCOL, 8); putint(pgtokb(s.v_cache_count), VMSTATROW + 15, VMSTATCOL, 8); putint(pgtokb(s.v_free_count), VMSTATROW + 16, VMSTATCOL, 8); - if (LINES - 1 > VMSTATROW + 17) - putint(s.bufspace / 1024, VMSTATROW + 17, VMSTATCOL, 8); PUTRATE(v_vnodein, PAGEROW + 2, PAGECOL + 6, 5); PUTRATE(v_vnodeout, PAGEROW + 2, PAGECOL + 12, 5); PUTRATE(v_swapin, PAGEROW + 2, PAGECOL + 19, 5); @@ -779,7 +774,6 @@ getinfo(struct Info *ls) GETSYSCTL("vm.stats.vm.v_active_count", ls->v_active_count); GETSYSCTL("vm.stats.vm.v_inactive_count", ls->v_inactive_count); GETSYSCTL("vm.stats.vm.v_cache_count", ls->v_cache_count); - GETSYSCTL("vfs.bufspace", ls->bufspace); GETSYSCTL("kern.maxvnodes", ls->desiredvnodes); GETSYSCTL("vfs.numvnodes", ls->numvnodes); GETSYSCTL("vfs.freevnodes", ls->freevnodes); --------------060109070406000801030708 Content-Type: text/plain; charset=UTF-8; name="systat3.patch.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="systat3.patch.txt" commit 89bb37ad23d3d893e7efb6b8fc2eea9fdd08fa02 Author: Andrey Zonov Date: Tue Jan 29 15:18:06 2013 +0400 - Remove '%ozfod' on vmstat display to not mangle 'free' on 24-line t= erminal. diff --git a/usr.bin/systat/systat.1 b/usr.bin/systat/systat.1 index 07cf12a..849c890 100644 --- a/usr.bin/systat/systat.1 +++ b/usr.bin/systat/systat.1 @@ -374,7 +374,6 @@ of pages per second averaged over the sampling interv= al, pages copied on write (`cow'), pages zero filled on demand (`zfod'), pages optimally zero filled on demand (`ozfod'), -the ratio of the (average) ozfod / zfod as a percentage (`%ozfod'), pages freed by the page daemon (`daefr'), pages freed by exiting processes (`prcfr'), total pages freed (`totfr'), @@ -384,7 +383,7 @@ times per second that the page daemon was awakened (`= pdwak'), pages analyzed by the page daemon (`pdpgs'), and in-transit blocking page faults (`intrn'). -Note that the units are special for `%ozfod' and `pdwak'. +Note that the units are special for `pdwak'. The next few lines describe, as amounts of memory in kilobytes, pages wired down (`wire'), diff --git a/usr.bin/systat/vmstat.c b/usr.bin/systat/vmstat.c index c7e3c7f..f8e051d 100644 --- a/usr.bin/systat/vmstat.c +++ b/usr.bin/systat/vmstat.c @@ -328,19 +328,18 @@ labelkre(void) mvprintw(VMSTATROW + 1, VMSTATCOL + 9, "cow"); mvprintw(VMSTATROW + 2, VMSTATCOL + 9, "zfod"); mvprintw(VMSTATROW + 3, VMSTATCOL + 9, "ozfod"); - mvprintw(VMSTATROW + 4, VMSTATCOL + 9 - 1, "%%ozfod"); - mvprintw(VMSTATROW + 5, VMSTATCOL + 9, "daefr"); - mvprintw(VMSTATROW + 6, VMSTATCOL + 9, "prcfr"); - mvprintw(VMSTATROW + 7, VMSTATCOL + 9, "totfr"); - mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react"); - mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak"); - mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs"); - mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn"); - mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire"); - mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act"); - mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact"); - mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "cache"); - mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free"); + mvprintw(VMSTATROW + 4, VMSTATCOL + 9, "daefr"); + mvprintw(VMSTATROW + 5, VMSTATCOL + 9, "prcfr"); + mvprintw(VMSTATROW + 6, VMSTATCOL + 9, "totfr"); + mvprintw(VMSTATROW + 7, VMSTATCOL + 9, "react"); + mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "pdwak"); + mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdpgs"); + mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "intrn"); + mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "wire"); + mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "act"); + mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "inact"); + mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "cache"); + mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "free"); =20 mvprintw(GENSTATROW, GENSTATCOL, " Csw Trp Sys Int Sof Flt"); =20 @@ -496,20 +495,18 @@ showkre(void) PUTRATE(v_cow_faults, VMSTATROW + 1, VMSTATCOL + 2, 8 - 2); PUTRATE(v_zfod, VMSTATROW + 2, VMSTATCOL + 2, 8 - 2); PUTRATE(v_ozfod, VMSTATROW + 3, VMSTATCOL, 8); - putint(s.v_zfod !=3D 0 ? (int)(s.v_ozfod * 100.0 / s.v_zfod) : 0, - VMSTATROW + 4, VMSTATCOL + 1, 8 - 1); - PUTRATE(v_dfree, VMSTATROW + 5, VMSTATCOL + 2, 8 - 2); - PUTRATE(v_pfree, VMSTATROW + 6, VMSTATCOL + 2, 8 - 2); - PUTRATE(v_tfree, VMSTATROW + 7, VMSTATCOL, 8); - PUTRATE(v_reactivated, VMSTATROW + 8, VMSTATCOL, 8); - PUTRATE(v_pdwakeups, VMSTATROW + 9, VMSTATCOL, 8); - PUTRATE(v_pdpages, VMSTATROW + 10, VMSTATCOL, 8); - PUTRATE(v_intrans, VMSTATROW + 11, VMSTATCOL, 8); - putint(pgtokb(s.v_wire_count), VMSTATROW + 12, VMSTATCOL, 8); - putint(pgtokb(s.v_active_count), VMSTATROW + 13, VMSTATCOL, 8); - putint(pgtokb(s.v_inactive_count), VMSTATROW + 14, VMSTATCOL, 8); - putint(pgtokb(s.v_cache_count), VMSTATROW + 15, VMSTATCOL, 8); - putint(pgtokb(s.v_free_count), VMSTATROW + 16, VMSTATCOL, 8); + PUTRATE(v_dfree, VMSTATROW + 4, VMSTATCOL + 2, 8 - 2); + PUTRATE(v_pfree, VMSTATROW + 5, VMSTATCOL + 2, 8 - 2); + PUTRATE(v_tfree, VMSTATROW + 6, VMSTATCOL, 8); + PUTRATE(v_reactivated, VMSTATROW + 7, VMSTATCOL, 8); + PUTRATE(v_pdwakeups, VMSTATROW + 8, VMSTATCOL, 8); + PUTRATE(v_pdpages, VMSTATROW + 9, VMSTATCOL, 8); + PUTRATE(v_intrans, VMSTATROW + 10, VMSTATCOL, 8); + putint(pgtokb(s.v_wire_count), VMSTATROW + 11, VMSTATCOL, 8); + putint(pgtokb(s.v_active_count), VMSTATROW + 12, VMSTATCOL, 8); + putint(pgtokb(s.v_inactive_count), VMSTATROW + 13, VMSTATCOL, 8); + putint(pgtokb(s.v_cache_count), VMSTATROW + 14, VMSTATCOL, 8); + putint(pgtokb(s.v_free_count), VMSTATROW + 15, VMSTATCOL, 8); PUTRATE(v_vnodein, PAGEROW + 2, PAGECOL + 6, 5); PUTRATE(v_vnodeout, PAGEROW + 2, PAGECOL + 12, 5); PUTRATE(v_swapin, PAGEROW + 2, PAGECOL + 19, 5); --------------060109070406000801030708-- ------enig2DFWENKBPTLSKWUVBVGUD Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.18 (Darwin) Comment: GPGTools - http://gpgtools.org iQEcBAEBAgAGBQJRB7yKAAoJEBWLemxX/CvTE+cH/RzSAEoDvaPp/cT9hYVxL2Xm Zhpeu0VNWiuGFzDnkuygxJBY6BFSHBgiTPlYOQswM1+xvIRcKZsCUATM3CsFh/hp F6khMMA3Prnu5c/uV8Lyg6X2AS5k1KA1wCo3EFn+mCbEtfLarsja+GrvLXX5Ep/1 SWHsm910DfLwSeIWGVSSn6aVf326Re8HBW1/DBhJENth4/Ki/PF8USmx1hbQvdoy fAL8pGhSuBwEuRNnoRnQrXmtoOix2y96eHXRKuumn6oMVgFoPCo7xdAIJCXprWM5 8DOPwzJ0hBB25+WbB9lhkm+R6HnaE5JipbA01ww3UrdjbyTQd5Pw9nExjh0k28I= =GyoU -----END PGP SIGNATURE----- ------enig2DFWENKBPTLSKWUVBVGUD--