Other References

vcheckout Dissection

A description of the implmentation of vcheckout circa October 2004.

Auto-generated Code Cross-reference

Thanks to KlausElmquist we now have a cross-reference of the code (generated with Doxygen).

Repository

Base Chains

Cache Server

/vesta/vestasys.org/vesta/cache/50

Background

common

lib.ves

CacheArgs.H CacheArgs.C

CacheConfig.H CacheConfig.C

ReadConfig.H ReadConfig.C

CacheIndex.H CacheIndex.C

CacheIntf.H CacheIntf.C

CacheState.H CacheState.C

Debug.H Debug.C

Derived.H Derived.C

ImmutableVal.H ImmutableVal.C

Model.H

PKEpoch.H

PKPrefix.H PKPrefix.C (Note: don’t confuse with PrefixTbl)

TextIO.H TextIO.C

Timer.H Timer.C

LookupStats.H LookupStats.C

BitVector.H BitVector.C

PrefixTbl.H PrefixTbl.C

CompactFV.H CompactFV.C

FV.H FV.C

FV2.H FV2.C

GraphLog.H GraphLog.C

VestaVal.H VestaVal.C

NewVal.H NewVal.C

tests.ves

client

lib.ves

CacheC.H CacheC.C

    f()
    {
       G();
       H();
       ...
       return;
    }

WeederC.H WeederC.C

ParCacheC.H ParCacheC.C

DebugC.H DebugC.C

tests.ves

TestCache.C TestCache.1.mtex

TestCacheRandom.C TestCacheRandom.1.mtex

Histogram.H Histogram.C

progs.ves

ChkptCache.C ChkptCache.1.mtex

FlushCache.C FlushCache.1.mtex

VCacheMonitor.C VCacheMonitor.1.mtex

server

lib.ves

CacheConfigServer.H CacheConfigServer.C

IntIntTblLR.H IntIntTblLR.C

Combine.H Combine.C

CacheEntry.H CacheEntry.C

SPKFile.H SPKFile.C

SPKFileRep.H SPKFileRep.C

VPKFile.H VPKFile.C

EmptyPKLog.H EmptyPKLog.C

PrintGraphLog.C

VPKFileChkPt.H

Intvl.H Intvl.C

FlushQueue.H FlushQueue.C

PKFile re-write process

Cache Logs

For recording new entries:

  1. CI log: logs allocation of cache indecies

    • .ckp file contains the full usedCIs BitVector

    • .log file contains a sequence of Intvl::T objects (see Intvl.H)

  2. Graph log: logs parent/child relationship between newly added cache entries

    • .ckp and .log files have the same format: a sequence of GraphLog::Node objects

  3. Cache log: logs newly added cache entries not yet written to on-disk PKFiles

    • .ckp and .log files have the same format: a sequence of CacheLog::Entry objects

The above three logs must always be written in exactly the order shown above! Because the data is stored in separate logs, we must write them out in this order to avoid inconsistencies if the server restarts. An inconsistency would be:

Because of the order there are a couple possibilities of a newly added cache entry not being completely written to disk:

How is log order flushing enforced?

RunToolServer

/vesta/vestasys.org/vesta/run_tool/37

Client Library

lib.ves

RunToolClient.H RunToolClient.C RunToolClientPrivate.H

Server

ServerMain.C

RunToolDaemon.H RunToolDaemon.C

Launcher.h

get_load.h get_load.c

tool_launcher

tool_launcher.c

RunToolProbe

RunToolProbe.C