Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Jan 2000 14:35:02 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Kirk McKusick <mckusick@flamingo.McKusick.COM>, Greg Lehey <grog@lemis.com>, Mike Smith <msmith@FreeBSD.ORG>, Tom <tom@uniserve.com>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Slight mistake in my DaemonNews column
Message-ID:  <200001012235.OAA93859@apollo.backplane.com>

next in thread | raw e-mail | index | archive | help
    Ach, I also forgot the all-shadowed optimization, which is actually
    fairly important.  Well, if anyone brings it up here's the problem
    and solution:

    "But doesn't the object model cause an ever deeper stack of layers
    as a server forks children out?".

    Even though we do not optimize the dead-page case we *do* optimize the
    all-shadowed case.  Lets say that the parent, C1, touches all the pages
    in B causing a copy-on-write to occur to C1.  C1 now entirely shadows B
    and therefore can BYPASS B.

    +----+----+			     +----+
    | C1 | C2 |			     | C2 |
    +----+----+			+---------+
    |    B    |		->	| C1 |  B |
    +---------+			+---------+
    |    A    |			|     A   |
    +---------+			+---------+

    Once the bypass occurs, B has only one reference and C2 and B can be 
    collapsed together.

    Ok, so you might ask the question "But wait, what if B is large object
    (represents the entire data area of the program)?  Doesn't that mean
    that neither C1 or C2 are likely to ever completely shadow B?".

    Answer:  This is often true at the second level (B), but usually not
    true at the third level (C1 or C2).  If C1 (the parent) or C2 (the child)
    forks again, then it is likely that something in the new layer D? will
    be able to completely overshadow C1 or C2 and thus D? will be able to
    bypass C1 or C2.

    The end result is that in typical useage, even with a lot of working going
    on, the object stack does not run more then 4 deep.

						-Matt



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?200001012235.OAA93859>