[coyotos-dev] Capability copying
Charles Landau
clandau at macslab.com
Wed May 10 23:01:55 EDT 2006
I question the analysis of capability copying at
http://coyotos.org/docs/misc/eros-comparison.html#7, which says:
* Most copied capabilities are prepared, and are therefore members of a list.
* Most overwritten capabilities are prepared.
* Capability copy therefore requires unlinking the target capability
(two cache misses) and then re-linking the copy (one additional
cache miss). This proves to be a major cost in invocations that
transfer capabilities.
* 50% of all invocations transfer at least one capability, which is
that descriptor to which the reply should be transmitted.
Taking the last point first, there is almost never more than one copy
of the reply capability. Thus in that case the list consists of just
the header in the process, and the single capability (which is
necessarily in the cache).
I don't know about Coyotos, but in KeyKOS and CapROS, the reply
capability is unlinked (and voided) when it is invoked. In this case
the invoked process is necessarily in the cache, so unlinking the
reply capability should not cause any cache misses.
In KeyKOS and CapROS, the reply capability is created (on a Call
invocation) not copied, so there should be no cache misses on the
creation either.
I would also guess that in many instances of capability copying, the
chain of the copied capability is short, and there is a likelihood
that instead of cache missing on an unrelated capability in the
chain, you are referencing the header in the object.
I grant that overwritten capabilities (other than reply capabilities)
are likely to be stale and unlinking them could involve up to two
cache misses.
More information about the coyotos-dev
mailing list