From: kanoj@google.engr.sgi.com (Kanoj Sarcar)
To: "Stephen C. Tweedie" <sct@redhat.com>
Cc: andrea@suse.de, torvalds@transmeta.com, linux-mm@kvack.org
Subject: Re: filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Fix swapoff races
Date: Mon, 28 Jun 1999 14:11:18 -0700 (PDT) [thread overview]
Message-ID: <199906282111.OAA54637@google.engr.sgi.com> (raw)
In-Reply-To: <14199.56793.520615.700914@dukat.scot.redhat.com> from "Stephen C. Tweedie" at Jun 28, 99 09:40:57 pm
>
> Hi,
>
> On Mon, 28 Jun 1999 10:25:45 -0700 (PDT), kanoj@google.engr.sgi.com
> (Kanoj Sarcar) said:
>
> >> But it can atomic_inc(&mm->count) to pin the mm, drop the task lock and
> >> take the mm semaphore, and mmput() once it has finished.
>
> > Hmm, hadn't thought about that one. Of course, as soon as you drop
> > the task_lock, in theory, you have to resume your search from the
> > beginning of the task list, since the list might have changed while
> > you dropped the task_lock (assume for a moment that the vm code does
> > not know how the task list is managed). That prevents any forward
> > progress by swapoff.
>
> Then keep a fencepost of the highest pid you have completed so far,
> and with the lock held, look for the lowest pid greater than that
> one. If you don't make any progress on the mm, bump up the fencepost
> pid by one.
If I understand right, here is an example. Lets say I believe I
have scanned uptil pid 10. You are suggesting, after having scanned
pid 10, hold on to task_lock, and look for the min pid > 10. Say
that is pid 12. Problem is, while I was scanning pid 10, maybe
pid 5 got reallocated, and pid 5 is a new process (probably a
child of pid 20). Note that I mention that it is good design for
the vm code not to assume how the task list is managed or pids
allocated (yes, I have thought of having a swapoff generation
number stored in each task structure too ...)
>
> It will work. It's a little extra overhead, but it confines all of
> the cost to the swapoff path. The pid scan isn't going to be nearly
> as expensive as the rest of the vm scanning we are already forced to
> do in swapoff.
I would love to confine the complexity in the swapoff path, except
I can't come up with a solution. In any case, I think I was not
clear about what the cost is in my fix. It is adding 2 chain fields
in the mm structure, adding and deleting to this chain at mm alloc/free
time, and the up/down cost on the mutex. Note that the up/down cost
is minimal (one atomic inc/dec) when no swapoff is going on, since the
kernel_lock also protects the chain. The mutex only becomes contended
when there is a swapoff in progress.
Thanks.
Kanoj
kanoj@engr.sgi.com
Ps - All this discussion does not seem to be making it on to the
linux-mm web page ...
>
> --Stephen
>
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/
next prev parent reply other threads:[~1999-06-28 21:11 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-06-21 5:29 filecache/swapcache questions Kanoj Sarcar
1999-06-21 11:25 ` Stephen C. Tweedie
1999-06-21 16:46 ` Kanoj Sarcar
1999-06-21 16:57 ` Stephen C. Tweedie
1999-06-21 17:36 ` Kanoj Sarcar
1999-06-21 17:49 ` Stephen C. Tweedie
1999-06-21 18:46 ` Kanoj Sarcar
1999-06-21 23:44 ` Kanoj Sarcar
1999-06-24 22:23 ` Andrea Arcangeli
1999-06-24 23:55 ` Kanoj Sarcar
1999-06-25 0:26 ` Andrea Arcangeli
1999-06-28 1:48 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Fix swapoff races Kanoj Sarcar
1999-06-28 10:35 ` Andrea Arcangeli
1999-06-28 17:11 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Kanoj Sarcar
1999-06-28 16:32 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Fix swapoff races Stephen C. Tweedie
1999-06-28 17:25 ` Kanoj Sarcar
1999-06-28 20:40 ` Stephen C. Tweedie
1999-06-28 21:11 ` Kanoj Sarcar [this message]
1999-06-28 22:12 ` Stephen C. Tweedie
1999-06-28 23:43 ` Kanoj Sarcar
1999-06-29 11:44 ` Stephen C. Tweedie
1999-06-29 22:01 ` Kanoj Sarcar
1999-06-30 17:28 ` Stephen C. Tweedie
1999-06-30 18:05 ` Kanoj Sarcar
1999-06-28 19:39 ` Chuck Lever
1999-06-28 19:55 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Kanoj Sarcar
1999-06-28 20:33 ` Chuck Lever
1999-06-28 20:51 ` Kanoj Sarcar
1999-06-28 21:32 ` Chuck Lever
1999-06-28 21:38 ` Kanoj Sarcar
1999-06-28 21:50 ` Chuck Lever
1999-06-28 22:15 ` Kanoj Sarcar
1999-06-29 11:23 ` Stephen C. Tweedie
1999-06-29 17:36 ` Kanoj Sarcar
1999-06-28 22:22 ` Stephen C. Tweedie
1999-06-28 22:21 ` Stephen C. Tweedie
1999-06-28 22:57 ` Andrea Arcangeli
1999-06-29 2:13 ` Chuck Lever
1999-06-29 12:01 ` Stephen C. Tweedie
1999-06-29 12:32 ` Andrea Arcangeli
1999-06-30 15:59 ` Stephen C. Tweedie
1999-06-29 1:00 ` Chuck Lever
1999-06-28 22:08 ` Stephen C. Tweedie
1999-06-28 22:59 ` Andrea Arcangeli
1999-06-29 0:53 ` Chuck Lever
1999-06-29 11:14 ` Stephen C. Tweedie
1999-06-28 22:09 ` Stephen C. Tweedie
1999-06-28 20:45 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Fix swapoff races Stephen C. Tweedie
1999-06-28 21:14 ` Chuck Lever
1999-06-28 21:25 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Kanoj Sarcar
1999-06-28 22:15 ` filecache/swapcache questions [RFC] [RFT] [PATCH] kanoj-mm12-2.3.8 Fix swapoff races Stephen C. Tweedie
1999-06-28 22:48 ` Andrea Arcangeli
1999-06-29 1:29 ` Chuck Lever
1999-06-29 11:58 ` Stephen C. Tweedie
1999-06-29 12:09 ` Andrea Arcangeli
1999-06-29 15:27 ` Chuck Lever
1999-06-29 11:55 ` Stephen C. Tweedie
1999-06-29 20:08 ` Andrea Arcangeli
1999-06-28 22:36 ` filecache/swapcache questions Stephen C. Tweedie
1999-06-28 23:24 ` Kanoj Sarcar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=199906282111.OAA54637@google.engr.sgi.com \
--to=kanoj@google.engr.sgi.com \
--cc=andrea@suse.de \
--cc=linux-mm@kvack.org \
--cc=sct@redhat.com \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.