[MUD-Dev] Architecture (Cell Rebalancing) - working-sets

ceo ceo at grexengine.com
Thu Jul 3 13:59:24 CEST 2003


Rossmann Peter wrote:
> On Wed, 02 Jul 2003 13:59:40 -0700
> ceo <ceo at grexengine.com> wrote:

>> currently does). You want to be abstracting things that work
>> together in practical terms e.g. by looking at working-sets
>> (c.f. a google search for "working set" if you don't know the
>> term) and making sure each clump of related/non-independent data
>> is grouped together in the abstraction. ISTR JC spoke a couple of
>> times about dependent working sets on the night before the MDC
>> (in relation to a dicussion on geographical partitioning).

> I havent been thinking that deeply about your words, (because i
> was confused by why you mention working sets) until now:

>   My idea of working sets is that i would never see any page paged
>   out, because that would be too high price to pay. (for real-time
>   systems; or for near-to RT). so for me it would be just enough,
>   as a build phase, to run the Working Set Optimiser.

> On the other hand, there are other (and similar) things that needs
> absolute attention in such enviroment (mainly at design phase):

> for parallel enviroment (or Multithreaded):

>   Using message passing, you need to minimize communication so
>   that your remote computation "pays for itself".  There are no
>   cache conflicts.  Using shared memory, you need to optimize data
>   layout so to minimize cache misses.  Otherwise, your program,
>   even though it is expressed in a concurrent fashion, could run
>   very very slow.  >

Yes, I glossed over the details. It was only an e.g. and I didn't
think to explain it precisely.

The key thing to remember (although perhaps my last post will
already have clarified this) is that "memory", "cache", "latency",
"bandwidth" and others are all terms that are not limited to a
single PC. For instance: a CPU cache uses the same meaning of the
word "cache" as an application-cache (running in software,
e.g. Web-Caches).

Hence, many people who work with distributed systems quite happily
draw no distinction between single-machines and groups-of-machines -
and often use the terminology that is most frequently used for a
single machine to describe the behaviour and characteristics of a
group of machines. At a purely theoretical level, this is absolutely
correct: e.g. a von-Neumann machine doesn't define that all the
components have to be in a single metal box.

So, when I was talking about Working Sets, I meant the "set of
memory locations touched by a particular (DISTRIBUTED)
process". Tanenbaum's definition in "Modern Operating Systems" uses
"pages" instead of "memory locations", but I know a lot of people
use the slightly more generic version, without loss of meaning
*albeit with a slight loss in clarity/precision*. A distributed
equivalent of what you describe above is that you want your
distributed process to be accessing all memory locations from the
local PC, rather than fetching them over the LAN or any other form
of less-direct memory.

Does this make things clearer? :)

Adam M
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list