Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Jul 2002 00:34:04 -0700
From:      Peter Wemm <peter@wemm.org>
To:        David Schultz <dschultz@uclink.Berkeley.EDU>
Cc:        Matthew Dillon <dillon@apollo.backplane.com>, Sean Kelly <smkelly@zombie.org>, hackers@FreeBSD.ORG
Subject:   Re: swapoff? 
Message-ID:  <20020713073404.9869A3811@overcee.wemm.org>
In-Reply-To: <20020713071911.GA1558@HAL9000.wox.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
David Schultz wrote:
> Thus spake Matthew Dillon <dillon@apollo.backplane.com>:
> >     Implementing swapoff is a bunch of grunt-work but not too hard in
> >     concept.  Basically the work involved is this:
> 
> Sounds like a plan, and not too tricky.  Perhaps I'll see if I can
> figure it out when I have some free time.
> 
> > 	* Make a calculation to be sure that it is possible to turn off
> > 	  the swap device and not run the system out of VM.  If it is not
> > 	  possible do not allow the swapoff.
> 
> Can't you have a race condition here where you decide that you
> have enough space, and by the time you've deallocated half of the
> swapfile that's no longer the case?  It seems like the correct
> thing to do in that case is abort the system call (which could be
> painful).  Perhaps the best thing to do in this case is wait for
> vm_pageout_scan to kill a few pigs.

One system I used to use years and years ago seperated this process into
stages.  The swap(1M) command could be used to enable, disable and 'weight'
allocation to swap areas.  The add was easy.  'delete' would cause the
device to be attempted to be paged in, but if the system looked like it was
going to run out of resources it would fail and stop right there.  You could
either turn allocation back on, or kill processes or wait for the pager catch
up with moving stuff out to other swap spaces.  When (if) it finally hit
zero inuse, it would be deleted.

It did manage multiple swap spaces as seperate entities with different fill
levels etc [rather than one giant logical swap area], so doing it this way
kinda made sense.  I did actually use it once and it even worked. :-)
(I cannibalized my /tmp file system and used it for swap for a project, and
 then turned it off and re-mkfs'ed it)

Cheers,
-Peter
--
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020713073404.9869A3811>