[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