Path: utzoo!attcan!uunet!world!bzs From: bzs@world.std.com (Barry Shein) Newsgroups: comp.unix.internals Subject: Re: Shareable, networked, swap device? Message-ID: Date: 29 Oct 90 21:44:03 GMT References: <144274@sun.Eng.Sun.COM> <3665@skye.ed.ac.uk> Sender: bzs@world.std.com (Barry Shein) Organization: The World Lines: 43 In-Reply-To: richard@aiai.ed.ac.uk's message of 29 Oct 90 15:25:04 GMT From: richard@aiai.ed.ac.uk (Richard Tobin) [responding to me] >>Couldn't NFS *almost* do this right now. > >I considered this. The way I looked at it was that the problem is >that there's no way for the client to tell the server when a page is >freed. Apart from this, it could work - the server wouldn't even have >to give the client a pointer into the file, it could just map (client, >client's-offset) to (server's-offset). Hmm, basically a distributed scatter-gather MMU device. The client believes it has Xmb of swap and the server just manages the address mappings thru typical associative memory maps. I suppose the easiest way to free pages would be by use of a tag (the process id on the client would be a good candidate, the server doesn't much care so long as it's client-unique.) Then all you need is a free_tag() operation (I assume that once a page is allocated to a process it's not freed until the process is finished, something more flexible can be left as an exercise for the reader.) So you have a three-tuple to identify any page: f(host_address,page_offset,tag) -> server_page_location for each page in the page server (again, assuming pages are fixed in size, otherwise throw in size, bother.) Interestingly, with the tag it allows for each process to have its own virtual page-address space w/o the client needing to manage that at all. It could work. It's even stateless enough to survive server crashes, and doesn't much interfere with the current model in a Unix client of how swap is allocated. -- -Barry Shein Software Tool & Die | {xylogics,uunet}!world!bzs | bzs@world.std.com Purveyors to the Trade | Voice: 617-739-0202 | Login: 617-739-WRLD