Re: [PATCH] eliminate nswap and cnswap

From: Matt Mackall
Date: Mon Apr 12 2004 - 23:29:27 EST


On Mon, Apr 12, 2004 at 08:42:23PM -0700, Andrew Morton wrote:
> Albert Cahalan <albert@xxxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > > The nswap and cnswap variables counters have never
> > > been incremented as Linux doesn't do task swapping.
> >
> > I'm pretty sure they were used for paging activity.
> > We don't eliminate support for "swap space", do we?
> >
> > Somebody must have broken nswap and cnswap while
> > hacking on some vm code. I hate to see the variables
> > get completely ripped out of the kernel instead of
> > getting fixed.
>
> There's nothing in 2.4 which increments these, nor was there in 2.6. Which
> tends to imply that they weren't very important.
>
> We could sort-of do this - move them into mm_struct (doing it in
> task_struct was always wrong) and increment them in the VM. But we'd need
> some reason why these statistics are interesting, and we'd need an
> explanation of what nswap and cnswap are actually supposed to represent.

It's used in 2.0 and 2.2 to satisfy the getrusage(2) syscall. The
getrusage page only documents it as 'swaps', but says:

The above struct was taken from BSD 4.3 Reno. Not all fields
are meaningful under Linux. Right now (Linux 2.4) only the
fields ru_utime, ru_stime, ru_minflt, ru_majflt, and ru_nswap
are maintained.

the BSD manpage says:

ru_nswap
the number of times a process was swapped out of main memory.

Which means it's a count of full process swaps like ancestral UNIX,
which Linux has never had.

So the 2.0/2.2 attempt to increment said variables was actually bogus.

--
Matt Mackall : http://www.selenic.com : Linux development and consulting
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/