Getting Real, Getting Dirty (without getting real dirty)

  • Upload
    zuriel

  • View
    41

  • Download
    11

Embed Size (px)

DESCRIPTION

Getting Real, Getting Dirty (without getting real dirty). Funded by the National Science Foundation under grant 0081214 Funded by DARPA under contract F33615-00-C-1697. Ron K. Cytron Joint work with Krishna Kavi University of Alabama at Huntsville. - PowerPoint PPT Presentation

Citation preview

  • Getting Real, Getting Dirty(without getting real dirty)Ron K. CytronJoint work with Krishna Kavi University of Alabama at HuntsvilleApril 2001Dante Cannarozzi, Sharath Cholleti, Morgan Deters, Steve DonahueMark Franklin, Matt Hampton, Michael Henrichs, Nicholas Leidenfrost, Jonathan Nye, Michael Plezbert, Conrad WarmboldCenter for Distributed Object ComputingDepartment of Computer ScienceWashington UniversityFunded by the National Science Foundation under grant 0081214Funded by DARPA under contract F33615-00-C-1697

  • OutlineMotivationAllocationCollectionConclusion

  • Traditional architecture and object-oriented programsCaches are still biased toward Fortran-like behaviorCPU is still responsible for storage managementObject-management activity invalidates cachesGC disruptiveCompaction

  • An OO-biased design using IRAMs(with Krishna Kavi)CPU and cache stay the same, off-the-shelfMemory system redesigned to support OO programsCPU + cacheMMMML2 cacheLogicIRAM

  • IRAM interfaceMMMMLogicIRAMmallocaddrStable address for an object allows better cache behaviorObject can be relocated within IRAM, but its address to the CPU is constant

  • IRAM interfaceMMMMLogicIRAMputfield/getfieldvalueObject referencingtracked inside IRAM-supports garbage collection

  • IRAM interfaceMMMMLogicIRAMgccompactprefetchGoal: relegate storage-management functions to IRAM

  • Macro accessesMMMMLogicIRAMp.getLeft().getNext()*(*(p+12)+32)Observe: code sequences contain common gestures (superoperators)

  • Gesture abstractionMMMMLogicIRAMp.getLeft().getNext()*(*(p+12)+32)M143(x): *(*(x+12)+32)Goal: decrease traffic between CPU and storage

  • Gesture applicationMMMMLogicIRAMMacro 143 (p)M143(x): *(*(x+12)+32)p.getLeft().getNext()

  • Gesture applicationMMMMLogicIRAMMacro 143 (p)M143(x): *(*(x+12)+32)p.getLeft().getNext()p.getLeft().getNext()

  • Automatic prefetchingGoal: decrease traffic between CPU and storageMMMMLogicIRAMCPU + cacheL2 cacheFetch pp

  • p.getLeft().getNext()Automatic prefetchingGoal: decrease traffic between CPU and storageMMMMLogicIRAMCPU + cacheL2 cacheFetch pp

  • ChallengesAlgorithmicBounded-time methods for allocation and collectionGood average performance as wellArchitecturalLean interface between the CPU and IRAMEfficient realization

  • Storage Allocation (Real Time)Not necessarily fastNecessarily predictableAble to satisfy any reasonable requestDeveloper should know maxlive characteristics of the applicationThis is true for non-embedded systems as well

  • How much storage?curlivethe number of objects live at a point in timecurspacethe number of bytes live at a point in timeHandlesObject Space

  • Objects concurrently live

  • How much object space?

  • Storage AllocationFree ListLinked list of free blocksSearch for desired fitWorst case O(n) for n blocks in the list

  • Worst-case free-list behaviorThe longer the free-list, the more pronounced the effectNo a priori bound on how much worse the list-based scheme could getAverage performance similar

    Chart1

    3.14834443190.8874712937

    72.83866476820.9112379964

    Worst

    Avg

    Number of objects allocated

    Slowdown of List-Based Allocator

    Sheet1

    Size 100Size 100Size 100Size 1Size 1Size 1

    ListKnuthEstrangedListKnuthEstranged

    compress0.08577227091016593629802774716746

    jess-0.01099505221799181918109.19.19.1

    raytrace-0.0813648294210022862208515554

    db0.04079382583776362835941.21.21.1

    javac0.11724915451982177413217.477

    mpegaudio0.0326445776844681798609868387

    mtrt-0.0058061635222622392180525454

    jack0.0073244291233823212343138136138

    Sheet1

    0

    0

    0

    0

    0

    0

    0

    0

    Sheet2

    Morgan's stuff

    3000 objects size 1000 and 2000#Objects1803000

    Worst2nd3rdavgWorst3.148344431972.8386647682

    List11510330217851121512693511Avg0.88747129370.9112379964

    Knuth1580251535071512093853

    Estranged1650741546921367713739

    72.838664768214.191606897414.22712272420.9112379964

    180 objects size 32K

    Worst2nd3rdavg

    List40990545152243713478

    Knuth13019773981592133919

    Estranged133471119124732633935

    3.14834443190.61031886570.41158191610.8874712937

    Sheet2

    Worst

    Avg

    Number of objects allocated

    Speedup of Buddy over List

    Sheet3

  • Knuths Buddy SystemFree-list segregated by sizeAll requests rounded up to a power of 2

  • Knuths Buddy System (1)2561286432168421Begin with one large blockSuppose we want a block of size 16

  • Knuths Buddy System (2)Begin with one large blockRecursively subdivide2561286432168421

  • Knuths Buddy System (3)2561286432168421Begin with one large blockRecursively subdivide

  • Knuths Buddy System (4)2561286432168421Begin with one large blockRecursively subdivide

  • Knuths Buddy System (5)2561286432168421Begin with one large blockYield 2 blocks size 16

  • Knuths Buddy System (6)One of those blocks can be given to the program2561286432168421Begin with one large blockYield: 2 blocks size 16

  • Worst-case free-list behaviorThe longer the free-list, the more pronounced the effectNo a priori bound on how much worse the list-based scheme could getAverage performance similar

    Chart1

    3.14834443190.8874712937

    72.83866476820.9112379964

    Worst

    Avg

    Number of objects allocated

    Speedup of Buddy over List

    Sheet1

    Size 100Size 100Size 100Size 1Size 1Size 1

    ListKnuthEstrangedListKnuthEstranged

    compress0.08577227091016593629802774716746

    jess-0.01099505221799181918109.19.19.1

    raytrace-0.0813648294210022862208515554

    db0.04079382583776362835941.21.21.1

    javac0.11724915451982177413217.477

    mpegaudio0.0326445776844681798609868387

    mtrt-0.0058061635222622392180525454

    jack0.0073244291233823212343138136138

    Sheet1

    0

    0

    0

    0

    0

    0

    0

    0

    Sheet2

    Morgan's stuff

    3000 objects size 1000 and 2000#Objects1803000

    Worst2nd3rdavgWorst3.148344431972.8386647682

    List11510330217851121512693511Avg0.88747129370.9112379964

    Knuth1580251535071512093853

    Estranged1650741546921367713739

    72.838664768214.191606897414.22712272420.9112379964

    180 objects size 32K

    Worst2nd3rdavg

    List40990545152243713478

    Knuth13019773981592133919

    Estranged133471119124732633935

    3.14834443190.61031886570.41158191610.8874712937

    Sheet2

    00

    00

    Worst

    Avg

    Number of objects allocated

    Speedup of Buddy over List

    Sheet3

  • Spec Benchmark Results

    Chart2

    1.0857722709

    0.9890049478

    0.9186351706

    1.0407938258

    1.1172491545

    1.0326445776

    0.9941938365

    1.0073244291

    Speedup

    Speedup of Buddy over List

    Sheet1

    Size 100Size 100Size 100Size 1Size 1Size 1

    ListKnuthEstrangedListKnuthEstranged

    compress1.08577227091016593629802774716746

    jess0.98900494781799181918109.19.19.1

    raytrace0.9186351706210022862208515554

    db1.04079382583776362835941.21.21.1

    javac1.11724915451982177413217.477

    mpegaudio1.0326445776844681798609868387

    mtrt0.9941938365222622392180525454

    jack1.0073244291233823212343138136138

    Sheet1

    0

    0

    0

    0

    0

    0

    0

    0

    Sheet2

    Morgan's stuff

    3000 objects size 1000 and 2000#Objects1803000

    Worst2nd3rdavgWorst3.148344431972.8386647682

    List11510330217851121512693511Avg0.88747129370.9112379964

    Knuth1580251535071512093853

    Estranged1650741546921367713739

    72.838664768214.191606897414.22712272420.9112379964

    180 objects size 32K

    Worst2nd3rdavg

    List40990545152243713478

    Knuth13019773981592133919

    Estranged133471119124732633935

    3.14834443190.61031886570.41158191610.8874712937

    Sheet2

    00

    00

    Worst

    Avg

    Number of objects allocated

    Speedup of Buddy over List

    Sheet3

  • Buddy SystemIf a block can be found, it can be found in log(N), where N is the size of the heapThe application cannot make that worse

  • DefragmentationTo keep up with the diversity of requested block sizes, an allocator may have to reorganize smaller blocks into larger ones

  • DefragmentationFree ListFree-list permutes adjacent blocksStorage becomes fragmented, with many small blocks and no large onesBlocks in memory Free list

  • DefragmentationFree ListFree-list permutes adjacent blocksTwo issues:Blocks in memory Free listJoin adjacent blocks

  • DefragmentationFree ListFree-list permutes adjacent blocksTwo issues:Blocks in memory Free list

    Reorganize holes (move live storage)Join adjacent blocks

  • DefragmentationFree ListFree-list permutes adjacent blocksTwo issues:Blocks in memory Free list

    Reorganize holes

    Organization by address can help [Kavi]Join adjacent blocks

  • Buddiesjoining adjacent blocksThe blocks resulting from subdivision are viewed as buddiesTheir address differs by exactly one bitThe address of a block of size 2 differs with its buddys address at bit n01n

  • Knuths Buddy System (6)2561286432168421

  • Knuths Buddy System (5)2561286432168421When a block becomes free, it tries to rejoin its buddyA bit in its buddy tells whether the buddy is freeIf so, they glue together and make a block twice as big

  • Knuths Buddy System (4)2561286432168421

  • Knuths Buddy System (3)2561286432168421

  • Knuths Buddy System (2)2561286432168421

  • Knuths Buddy System (1)2561286432168421

  • Two problemsOscillationBuddy looks like it may split, glue, split, glueisnt this wasted effort?FragmentationWhat happens when Buddy cant glue but has space it would like to combine?

  • 2561286432168421Buddyoscillation

  • 2561286432168421Buddyoscillation

  • 2561286432168421Buddyoscillation

  • 2561286432168421Buddyoscillation

  • 2561286432168421Buddyoscillation

  • 2561286432168421Buddyoscillation

  • Problem is lack of hysteresisSome programs allocate objects which are almost immediately deallocated.Continuous, incremental approaches to garbage collection only make this worse!Oscillation is expensive: blocks are glued only to be quickly subdivided again

  • Estranged Buddy SystemVariant of Knuths ideaWhen deallocated, blocks are not eager to rejoin their buddiesEvidence of value [Kaufman, TOPLAS 84]Slight improvement on spec benchmarksAlgorithmic improvement over Kaufman

  • Buddy-Busy and Buddy-Free2Blocks whose buddies are busyBlocks whose buddies are freek

  • Estranged BuddyAllocationAllocation heuristicBuddy-busyBuddy-freeGlue one level below, buddy-freeSearch up (Knuth)Glue below

  • How well does Estranged Buddy do?(contrived example)

    Chart3

    0.82388662630.7549669276

    4.70222015875.0969607843

    5.46833299185.5121540752

    5.67445070116.8758905338

    6.3494452397.3998219506

    7.3927501277.1398971038

    7.42038519877.8292765511

    Knuth

    Estranged

    Size-8150 objects

    Sheet1

    NormalBuddyEstrangedSpeedupKnuthEstranged

    1002621084576839581000.30989878930.3121798995

    2002808184376645852000.33280790750.4347913602

    100042427847378725410000.50069037140.4862470488

    2500223744810262399039250021.802597858222.5915851331

    30002612799106591105633300024.512379093924.7346851836

    330042130038758187357330048.104075084848.2274231029

    Object size 1000

    NormalBuddyEstrangedSpeedupKnuthEstranged

    100637291322141279221000.48201400760.4981863948

    150394991293911232201500.30526852720.3205567278

    200525241127471164342000.46585718470.4511053472

    2507066791498621668042504.71553162244.2365830556

    3007778791213391218693006.41079125436.3829111587

    Object size 10000

    NormalBuddyEstrangedSpeedupKnuthEstranged

    2001244111510051647902000.82388662630.7549669276

    3007798351658441530003004.70222015875.0969607843

    4009072731659141645954005.46833299185.5121540752

    50010278701811401494895005.67445070116.8758905338

    60011720061845841583836006.3494452397.3998219506

    70012656611712031772667007.3927501277.1398971038

    80014336111931991831098007.42038519877.8292765511

    Object size 8150

    Sheet1

    00

    00

    00

    00

    00

    00

    00

    Knuth

    Estranged

    Pathological Case

    Sheet2

    00

    00

    00

    00

    00

    Knuth

    Estranged

    Pathological Case

    Sheet3

    00

    00

    00

    00

    00

    00

    Knuth

    Estranged

    Pathological Case

  • Estranged Buddy on Spec

    Chart2

    0.9551112018

    1.0049723757

    1.035326087

    1.0094602115

    1.3429220288

    0.9500522709

    1.0270642202

    0.9906103286

    Speedup

    Speedup of Estranged Buddy over Knuth

    Sheet1

    Size 100Size 100Size 100Size 1Size 1Size 1

    ListKnuthEstrangedListKnuthEstranged

    compress1.08577227091016593629802774716746

    jess0.98900494781799181918109.19.19.1

    raytrace0.9186351706210022862208515554

    db1.04079382583776362835941.21.21.1

    javac1.11724915451982177413217.477

    mpegaudio1.0326445776844681798609868387

    mtrt0.9941938365222622392180525454

    jack1.0073244291233823212343138136138

    compress0.9551112018

    jess1.0049723757

    raytrace1.035326087

    db1.0094602115

    javac1.3429220288

    mpegaudio0.9500522709

    mtrt1.0270642202

    jack0.9906103286

    Sheet1

    0

    0

    0

    0

    0

    0

    0

    0

    Sheet2

    0

    0

    0

    0

    0

    0

    0

    0

    Speedup

    Estranged Buddy over Buddy

    Sheet3

    Morgan's stuff

    3000 objects size 1000 and 2000#Objects1803000

    Worst2nd3rdavgWorst3.148344431972.8386647682

    List11510330217851121512693511Avg0.88747129370.9112379964

    Knuth1580251535071512093853

    Estranged1650741546921367713739

    72.838664768214.191606897414.22712272420.9112379964

    180 objects size 32K

    Worst2nd3rdavg

    List40990545152243713478

    Knuth13019773981592133919

    Estranged133471119124732633935

    3.14834443190.61031886570.41158191610.8874712937

    Sheet3

    00

    00

    Worst

    Avg

    Number of objects allocated

    Speedup of Buddy over List

  • Recall: two problemsOscillationBuddy looks like it may split, glue, split, glueisnt this wasted effort?Typically not, but can beFragmentationWhat happens when Buddy cant glue but has space it would like to combine?

  • Buddy SystemFragmentationInternal fragmentation from rounding-up of requests to powers of twoNot really a concern these daysAssume a program can run in maxlive bytesHow much storage needed so Buddy never has to defragment?What is a good algorithm for Buddy defragmentation?

  • Buddy Configurations8421

  • Buddy Configurations

  • Heap Full

  • Buddy cant allocate size-2 block

  • How Big a Heap for Non-Blocking Buddy (M = maxlive)?Easy bound: M log MBetter bound: M k, where k is the number of distinct sizes to be allocatedSounds like a good bound, but it isntDefragmentation may be necessary2561286432168421M bytes each level

  • Managing object relocationEvery object has a stable handle, whose address does not changeEvery handle points to its objects current locationAll references to objects are indirect, through a handle

  • Buddy DefragmentationWhen stuck at level kNo blocks free above level kNo glueable blocks free below level kAssume maxlive still sufficesExample: k=6, size 64 not available2561286432168421

  • Defragmentation Algorithm326416

  • Defragmentation Algorithm326416swap

  • Defragmentation Algorithm326416glue

  • Defragmentation Algorithm326416

  • Defragmentation AlgorithmRecursively visit below to develop two buddies that can be gluedAnalogous to the recursive allocation algorithmStill, choices to be made.studies underway

  • Need 4 bytesMove 3 bytes?Move 1 byte?

  • Recall: two problemsOscillationBuddy looks like it may split, glue, split, glueisnt this wasted effort?Typically not, but can beFragmentationWhat happens when Buddy cant glue but has space it would like to combine?New algorithm to defragment BuddySelective approachshould beat ListOptimizations needed

  • Towards an IRAM implementationVHDL of Buddy System completeDRAM clocked at 150 MHz10 cycles per DRAM accessNeed 7 accesses per level to split blocksFor 16Mbyte heap24 levels1680 cycles worst case: 11us168x slower than a readCan we do better?

  • Two tricksFind a suitable free-block quicklyReturn its address quickly

  • Finding a suitable free blockNo space at 16, but 16 points to the level above it that has a block to offer

  • Finding a suitable free blockEvery level points to the level above it that has a block to offerPointers are maintained using Tarjans path-compressionLocating pointers are not stored in DRAM2561286432168421

  • Alternative free-block finderPath-compression may be too complex for hardwareInstead, track the largest available free block

  • Alternative free-block finderPath-compression may be too complex for hardwareInstead, track the largest available free blockTends to break up large blocks and favor formation of small ones2561286432168421

  • Fast return for mallocWant 16 bytesZip to the 64 displayWLOG we return the first part of that block immediately to the requestor643216

  • Want 16 bytesZip to the 64 displayWLOG we return the first part of that block immediately to the requestorAdjustment to the structures happens in parallel with the return643216Fast return for malloc

  • Improved IRAM allocator~10 cycles fast return~1000 cycles to recover, worst caseIs this good enough?Compare software implementation~1000 cycles worst case~600 cycles average on spec benchmarksHardware can be much fasterDepends on recover time

  • Do programs allow us to recover?Run of jackJVM instructions between requests 56% of requests separated by at least 100 JVM instructionsAssume 10x expansion, JVM to native codeFor the 56%, we return in 10 cyclesCode motion might improve others

    MinMedianMax3181174053

  • Garbage CollectionWhile allocators are needed for most modern languages, garbage collection is not universally acceptedGenerational and incremental approaches help most applicationsEmbedded and real-time need assurances of bounded behavior

  • Why not garbage collect?Some programmers want ultimate control over storageReal-Time applications need bounded-time overheadRT Java spec relegates allocation and collection to user controlIsnt this a step back from Java?

  • Marking Phasethe problemTo discover the dead objects, we use calculatus eliminatusFind live objectsAll others are dead

  • Marking Phasethe problemTo discover the dead objects, weFind live objects

    stackheapPointers from the stack to the heap make objects live

  • Marking Phasethe problemTo discover the dead objects, weFind live objects

    Pointers from the stack to the heap make objects liveThese objects make other objects live

  • Marking Phasethe problemTo discover the dead objects, weFind live objectsSweep all others away as dead

    stackheap

  • Marking Phasethe problemTo discover the dead objects, weFind live objectsSweep all others away as deadPerhaps compact the heap

    stackheap

  • Problems with mark phaseTakes an unbounded amount of timeCan limit it using generational collection but then its not clear what will get collectedWe seek an approach that spends a constant amount of time per program operation and collects objects continuously

  • Two ApproachesVariation on reference countingContaminated garbage collection [PLDI00]

  • Reference CountingAn integer is associated with every object, summingStack referencesHeap referencesObjects with reference count of zero are deadstackheap1221110000

  • Problems with Reference CountingStandard problem is that objects in cyclesstackheap1211110000

  • Standard problem is that objects in cycles (and those touched by such objects) cannot be collectedstackheap1211110000Problems with Reference Counting

  • Standard problem is that objects in cycles (and those touched by such objects) cannot be collectedContaminated gc will collect such objectsOverhead of counting can be highUntyped stack complicates thingsstackheap1211110000Problems with Reference Counting

  • The Untyped StackThe stack is a collection of untyped cellsIn JVM, safety is verified at class-load timeNo need to tag stack locations with what they containLeads to imprecision in all gc methodsstackheapHeapAddress?

  • IdeaWhen a stack frame pops, all of its cells are deadDont worry about tracking cell pointersInstead, associate an object with the last stack frame that can reference the object

  • Reference Counting Approachs is zero or one, indicating none or at least one stack reference to the objecth precisely reflects the number of heap references to the objectIf s+h=0 object is deadsh

  • Our treatment of stack activityObject is associated with the last-to-be-popped frame that can reference the objectstack

  • Our treatment of stack activityObject is associated with the last-to-be-popped frame that can reference the objectWhen that frame popsIf object is returned, the receiving frame owns the objectstack

  • Our treatment of stack activityObject is associated with the last-to-be-popped frame that can reference the objectWhen that frame popsOtherwise the object is deadstack

  • Our reference-counting implementationThe objects associated with the frame are linked togetherstackheap01201frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anything

    stackheap01201frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object is unlinked, but still thought to be live

    stackheap01201frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object is dead and is collected

    stackheap01201frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object is also dead

    stackheap0201frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object is still live

    stackheap101frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingNow the frame is gone

    stackheap101frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all along

    stackheap101frame1

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all alongWhen heap count becomes zero, the object is scheduled for deletion in that frame

    stackheap101frame0

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all alongWhen heap count becomes zero, the object is scheduled for deletion in that frameWhen frame pops, all are dead

    stackheap101frame0

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all alongWhen heap count becomes zero, the object is scheduled for deletion in that frameWhen frame pops, all are dead

    stackheap001frame0

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all alongWhen heap count becomes zero, the object is scheduled for deletion in that frameWhen frame pops, all are dead

    stackheap000frame0

  • Our reference-counting implementationThe objects associated with the frame are linked togetherWhen a stack frame pops, all of its cells no longer can point at anythingThis object was linked to its frame all alongWhen heap count becomes zero, the object is scheduled for deletion in that frameWhen frame pops, all are dead

    stackheap000frame0

  • Reference CountingPredictable, constant overhead for each JVM instructionputfield decreases count at old pointed-to object, increases count at new pointed-to objectareturn associates object with stack frame if not already associated belowHow well does it do? We shall see!

  • Contaminated Garbage CollectionNeed to collect objects involved in reference cycles without resorting to marking live objectsIdeaAssociate each object with a stack frame such that when that frame returns, the object is known to be deadLike escape analysis, but dynamic

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedstackACBDE

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedWhen B references A, A becomes as live as BstackACBDE

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedNow A, B, and C are as live as CstackACBDE

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedEven though D is less live than C, it gets contaminatedShould something reference D later, all will be affectedstackACBDE

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedStatic finger of lifeNow all objects appear to live foreverstackACBDE

  • Contaminated garbage collectionInitially each object is associated with the frame in which it is instantiatedStatic finger of lifeNow all objects appear to live foreverEven if E points away!stackACBDE

  • Contaminated garbage collectionEvery object is a member of an equilive setAll objects in a set are scheduled for deallocation at the same timeSets are maintained using Tarjans disjoint union/find algorithmNearly constant amount of overhead per operation

  • Contaminated GCEach equilive set is associated with a framestack

  • Contaminated GCEach equilive set is associated with a frameSuppose an object in one set references an object in another set (in either direction)stack

  • Contaminated GCEach equilive set is associated with a frameSuppose an object in one set references an object in another set (in either direction)Contamination!The sets are unionedstack

  • Contaminated GCEach equilive set is associated with a frameWhen a frame pops, objects associated with it are deadstack

  • Contaminated GCEach equilive set is associated with a frameWhen a frame pops, objects associated with it are deadstack

  • Contaminated GCEach equilive set is associated with a frameWhen a frame pops, objects associated with it are deadstack

  • Summary of methodsReference countingCant handle cyclesHandles pointing at and then awayContaminated GCTolerates cyclesCant track pointing and then pointing awayBoth techniques:Incur cost at putfield, areturn(Nearly) constant overhead per operation

  • Implementation detailsSUN JDK 1.1 interpreter versionMany subtle places where references are generated: String.intern(), ldc instruction, class loader, JNIEach gc method took about 3 months to implementCan run either method or both in concertFairly optimized, more is possible

  • Spec benchmark effectiveness

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    Dante

    Both

    Nick

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    Dante

    Both

    Nick

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    Dante

    Both

    Nick

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Sheet2

    Sheet3

  • Spec benchmark effectiveness

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    Dante

    Both

    Nick

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    Dante

    Both

    Nick

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Sheet2

    Sheet3

  • Exactness of Equilive Sets

  • Distance to die in frames

    Chart4

    6152

    3679

    6709

    503

    62

    18

    2481

    jess

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    jess

    Sheet2

    Sheet3

    Chart5

    35806

    23823

    29071

    13876

    11449

    6383

    15144

    raytrace

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    raytrace

    Sheet2

    Sheet3

    Chart6

    667

    620

    1207

    603

    72

    22

    129

    db

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    db

    Sheet2

    Sheet3

    Chart7

    3602

    1954

    1340

    221

    406

    88

    157

    javac

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    javac

    Sheet2

    Sheet3

    Chart8

    181

    204

    173

    74

    56

    18

    11

    mpegaudio

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    mpegaudio

    Sheet2

    Sheet3

    Chart9

    7997

    263071

    19495

    2521

    1717

    22

    15

    jack

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Sheet1

    jack

    Sheet2

    Sheet3

  • Speed of CGC

    Chart12

    0.991.05

    11.24

    11.2

    11.14

    11.17

    0.991.04

    0.981.2

    11.1

    over JDK big heap

    over JDK same heap

    Size1R

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1

    Size 10R

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 10 Relative

    Size10A

    60744634399

    0262206401116418

    1519484025641104444

    011842413194430

    80041355372194945613

    0774628291

    3038964905181264434

    07333985603224353

    100899484490256765

    CGC

    Both

    RefCount

    None

    size 10 Absolute

    Size1A

    20688454391

    019604170949431

    151948120604564444

    033233314434

    07767125717103

    0717496812

    151948119674564430

    03668152272920935

    100899484490256765

    CGC

    Both

    RefCount

    None

    Size 1 Absolute

    Sheet1

    size 1CGCBothRefCountNoneTotalsize 1Dante/TotalNick/TotalBoth/Total

    compress206884543915144compress0.13763608090.1424961120.1463841369

    jess01960417094943146129jess0.42498211540.79555160530.7955516053

    raytrace151948120604564444277052raytrace0.98375756180.43551391070.9839596899

    db0332333144348088db0.41085558850.45178041540.4517804154

    javac0776712571710326127javac0.29727867720.34538982660.3453898266

    mpegaudio07174968127578mpegaudio0.09461599370.10108207970.1010820797

    mtrt151948119674564430276108mtrt0.98375273440.43363466470.9839555536

    jack03668152272920935410479jack0.89362671420.94899860890.9489986089

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    size 10CGCBothRefCountNoneTotalsize 10Dante/TotalNick/TotalBoth/Total

    compress607446343995266compress0.15267755410.15324724650.1646410938

    jess0262206401116418106649jess0.24585321940.8460557530.846055753

    raytrace1519484025641104444559066raytrace0.99185427120.72026200840.992051028

    db011842413194430124173db0.95370169040.96432396740.9643239674

    javac80041355372194945613211103javac0.67995717730.74601497850.7839301194

    mpegaudio07746282919127mpegaudio0.08480333080.09159636240.0915963624

    mtrt3038964905181264434798974mtrt0.99429268040.61409257370.9944503826

    jack07333985603224353813783jack0.90122059570.97007433190.9700743319

    checkit100899484490256765120723checkit0.86920470830.86039114340.9439626252

    Size of equilive sets

    Benchmark123456--10>10

    compress206110327212

    Benchmark123456--10>10

    jess33801829315819681031

    Benchmark123456--10>10

    raytrace40516949115031835342782

    Benchmark123456--10>10

    db8191383214213

    Benchmark123456--10>10

    javac3413640340176142722

    Benchmark123456--10>10

    mpegaudio214108398211

    Benchmark123456--10>10

    mtrt40323936614761799242782

    Benchmark123456--10>10

    jack1360018546313517471930271

    Distance to die

    Benchmark012345>5

    compress17419315884642511

    Benchmark012345>5

    jess61523679670950362182481

    Benchmark012345>5

    raytrace3580623823290711387611449638315144

    Benchmark012345>5

    db66762012076037222129

    Benchmark012345>5

    javac36021954134022140688157

    Benchmark012345>5

    mpegaudio18120417374561811

    Benchmark012345>5

    mtrt35581237592900313685112606287152047

    Benchmark012345>5

    jack799726307119495252117172215

    Benchmarkover JDK big heapover JDK same heap

    compress0.991.05

    jess11.24

    raytrace11.2

    db11.14

    javac11.17

    mpegaudio0.991.04

    mtrt0.981.2

    jack11.1

    Sheet1

    00

    00

    00

    00

    00

    00

    00

    00

    over JDK big heap

    over JDK same heap

    Sheet2

    Sheet3

  • Speedups of Mark-Free Approaches

    Chart1

    1.08587519711.05

    1.08712328771.24

    1.03173100871.2

    1.0466379311.14

    1.12153846151.17

    1.02357534551.04

    1.05431407481.2

    1.04654699291.1

    RefCount

    CGC

    Sheet1

    size 1myjavavanjavadanjava-fh on ->myjavapaperscaleBenchmarkRefCountCGC

    _201_compress416.29694.63413.16399.511.05433.818compress1.091.05

    _202_jess8.2612.97.048.031.248.7296jess1.091.24

    _205_raytrace42.41507.06 (pl)34.5240.151.241.424raytrace1.031.2

    _209_db2.313.12.132.321.142.4282db1.051.14

    _213_javac5.127.444.865.071.175.6862javac1.121.17

    _222_mpegaudio45.5666.5144.8745.591.0446.6648mpegaudio1.021.04

    _227_mtrt42.18printlist39.291.241.424mtrt1.051.2

    _228_jack89.18139.3383.2187.461.191.531jack1.051.1

    size 10

    _201_compress537.12786.59460.9477.96

    _202_jess72.11167.8563.2165.75

    _205_raytrace110.97639.7899.34105.26

    _209_db64.5146.9944.0158.73

    _213_javac46.671.8837.3938.04

    _222_mpegaudio529.37655.21459.8461.21

    _227_mtrt146.891139.49125.01144.44

    _228_jack196.02285.62164.33173.69

    size 100

    _201_compress5009.45208.18

    _202_jessBombBomb

    _205_raytraceBomb

    _209_dbBomb

    Sheet1

    00

    00

    00

    00

    00

    00

    00

    00

    RefCount

    CGC

    Sheet2

    Sheet3

  • Future PlansVHDL simulation of more efficient buddy allocatorVHDL simulation of garbage collection methodsBetter buddy defragmentationExperiment with informed allocationComparison/integration with other IRAM-based methods (with Krishna Kavi)

  • Informed Storage ManagementEvidence that programs allocate many objects of the same size

  • Benchmark jack20% fragmentation

    Chart2

    20.4308333079

    19.4737394356

    0

    21.2995305716

    0

    0

    0

    21.6032066074

    0

    0

    0

    0

    0

    0

    0

    13.7349212677

    0

    0

    0

    0

    0

    0

    0

    0

    0

    9.3837042925

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    8.6969675262

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    8.5849625007

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    7.7879025594

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    5.672425342

    0

    0

    0

    0

    3

    0

    0

    2.3219280949

    1.5849625007

    Buddy block-size (log)

    Number of requests (log)

    jack_s100_distributions-srt

    Jack

    Size(log)Num(log)wasted bytesTotal Buddysingle buddy

    81413493320.4308333079011307944813141349320.4308333079320.4308333079

    16728081419.47373943560116492961611472808119.4737394356419.4737394356

    242518452521.2641058038201476168059046432115251845221.264105803800

    3262605515.93399026330200336032005258105721.2995305716521.2995305716

    40171744617.38990017284121856109916166411617174417.389900172800

    481804104620.78285107642886566411546265664006197584820.914040535400

    56854238619.704278550868339045467123264006283008621.432414463300

    64355675618.44020004702276320064006318576121.6032066074621.6032066074

    7277079.588714635643120985601281177709.588714635600

    802888711.4958550269138624369664128007365811.836839359700

    885611712.4540421975224440718208128007926913.178197984600

    962291711.1617617433733122932481280071156013.496853777400

    1041827710.8352609186438482338561280071338713.708545071400

    11219377.59245703733088247041280071358013.729195859100

    1201073.32192809498012801280071359013.730257835700

    1284475.4594316186056321280071363413.7349212677713.7349212677

    13649288.9425145053590401259522561184928.942514505300

    1441684179240962560085088.988684686800

    152381.58496250073127682560085118.997179480900

    1685785.83289001425016145922560085689.149747119500

    176983.169925001472023042560085779.172427508600

    1842084.3219280949144051202560085979.221587121300

    200381.58496250071687682560086009.228818690500

    2083685.1699250014172892162560086369.312882955300

    224180322562560086379.315149562300

    2483184.954196310424879362560086689.383704292589.3837042925

    26421397.7347096202528241090565121192137.734709620200

    27229148010245120092157.748192849600

    2801902325125120092167.754887502200

    2883795.20945336568288189445120092537.982993574700

    29629143210245120092557.994353436900

    3284395.42626475477912220165120092988.219168520500

    3521901605125120092998.224001674200

    3682694.70043971813744133125120093258.344295907900

    4083094.90689059563120153605120093558.471675214400

    41689376840965120093638.50382573800

    4482694.70043971811664133125120093898.60362634500

    4882694.7004397181624133125120094158.696967526298.6969675262

    520193107.592457037397272197632102411101937.592457037300

    52826104.70043971811289626624102400102197.774787059600

    56817104.0874628413775217408102400102367.882643049400

    57611004481024102400102377.888743248900

    60815103.9068905956624015360102400102527.977279923500

    64824104.5849625007902424576102400102768.108524456800

    68813103.7004397181436813312102400102898.174925682500

    69611003281024102400102908.1799090900

    72813103.7004397181384813312102400103038.243173983500

    76811103.4594316186281611264102400103148.294620748900

    80811103.4594316186237611264102400103258.344295907900

    81611002081024102400103268.348728154200

    82421014002048102400103288.357552004600

    83221013842048102400103308.366322214200

    84811103.4594316186193611264102400103418.41362792900

    88811103.4594316186149611264102400103528.459431618600

    92811103.4594316186105611264102400103638.50382573800

    96811103.459431618661611264102400103748.546894459900

    100810103.321928094916010240102400103848.5849625007108.5849625007

    1032106116.7279204546107696217088204811111066.727920454600

    104810113.32192809491000020480204800111166.857980995100

    10889113.1699250014864018432204800111256.965784284700

    11289113.1699250014828018432204800111347.066089190500

    115211108962048204800111357.076815597100

    11688113704016384204800111437.159871336800

    12087112.8073549221588014336204800111507.228818690500

    12487112.8073549221560014336204800111577.294620748900

    128810113.3219280949760020480204800111677.383704292500

    1328411228808192204800111717.417852514900

    1368411227208192204800111757.451211111800

    1408411225608192204800111797.483815777300

    14483111.584962500718006144204800111827.507794640200

    14883111.584962500716806144204800111857.531381460500

    15283111.584962500715606144204800111887.554588851700

    15683111.584962500714406144204800111917.57742882800

    16083111.584962500713206144204800111947.599912842200

    162411104242048204800111957.607330313700

    164011104082048204800111967.614709844100

    16483111.584962500712006144204800111997.636624620500

    16883111.584962500710806144204800112027.658211482800

    17283111.58496250079606144204800112057.679480099500

    17683111.58496250078406144204800112087.700439718100

    18083111.58496250077206144204800112117.721099188700

    184821114004096204800112137.734709620200

    188821113204096204800112157.748192849600

    192821112404096204800112177.761551232400

    196821111604096204800112197.774787059600

    2048211104096204800112217.7879025594117.7879025594

    2056112020404096409611121000

    20882121401681924096001231.584962500700

    21282121393681924096001252.321928094900

    21682121385681924096001272.807354922100

    22082121377681924096001293.169925001400

    224821213696819240960012113.459431618600

    228821213616819240960012133.700439718100

    230411201792409640960012143.807354922100

    23282121353681924096001216400

    236821213456819240960012184.169925001400

    240821213376819240960012204.321928094900

    241611201680409640960012214.392317422800

    244821213296819240960012234.523561956100

    248821213216819240960012254.643856189800

    252821213136819240960012274.754887502200

    253621213120819240960012294.857980995100

    25687122.8073549221106962867240960012365.169925001400

    260811201488409640960012375.209453365600

    264811201448409640960012385.247927513400

    268811201408409640960012395.285402218900

    272811201368409640960012405.321928094900

    276811201328409640960012415.357552004600

    280811201288409640960012425.392317422800

    284811201248409640960012435.426264754700

    288811201208409640960012445.459431618600

    292811201168409640960012455.491853096300

    296811201128409640960012465.523561956100

    300811201088409640960012475.554588851700

    304811201048409640960012485.584962500700

    308811201008409640960012495.614709844100

    32721120824409640960012505.643856189800

    36161120480409640960012515.672425342125.672425342

    4104113040888192819211131000

    4608113035848192819200132100

    51283131.58496250079192245768192001352.321928094900

    65361130165681928192001362.584962500700

    80722131240163848192001383133

    82003141.5849625007245524915216384111431.584962500700

    921611407168163841638400144200

    10248114061361638416384001452.3219280949142.3219280949

    163923151.5849625007491289830432768111531.5849625007151.5849625007

    611697763128688881

    CompressSize(log)Num(log)

    831238.285402218902496811543128.285402218938.2854022189

    162817411.45994384840450721611155281711.4599438484411.4599438484

    241534510.583082767512272490883211156153410.583082767500

    3219657.6147098441062723200156173010.7565563225510.7565563225

    408366.3750394313199253126411157836.375039431300

    4810666.72792045461696678464001571897.562242424200

    5611166.7944158664888710464001573008.228818690500

    6411266.80735492210716864001574128.686500527268.6865005272

    7212076.9068905956672015360128111581206.906890595600

    8018377.5156998383878423424128001583038.243173983500

    8815977.3128829553636020352128001584628.851749041400

    9610076.6438561898320012800128001585629.134426320200

    1045275.700439718112486656128001586149.262094845400

    1121874.16992500142882304128001586329.303780748200

    120371.584962500724384128001586359.310612781700

    128572.32192809490640128001586409.321928094979.3219280949

    13610886.75488750221296027648256111591086.754887502200

    168281176512256001591106.781359713500

    176381.5849625007240768256001591136.820178962400

    2001283.58496250076723072256001591256.965784284700

    20828196512256001591276.988684686800

    2241803225625600159128787

    26410496.70043971812579253248512111601046.700439718100

    352190160512512001601056.714245517700

    416792.80735492216723584512001601126.807354922100

    48819024512512001601136.820178962496.8201789624

    52054105.75488750222721655296102411161545.754887502200

    70411003201024102400161555.781359713500

    82421014002048102400161575.832890014200

    83221013842048102400161595.8826430494105.8826430494

    10322111203240962048111622100

    16401110408204820480016231.584962500700

    18081110240204820480016242112

    20561120204040964096111631000

    253621213120819240960016331.584962500700

    3272112082440964096001634200

    36161120480409640960016352.3219280949122.3219280949

    41041130408881928192111641000

    65361130165681928192001642100

    800825134.64385618984600204800819200164274.7548875022134.7548875022

    82003141.58496250072455249152163841116531.5849625007141.5849625007

    163923151.58496250074912898304327681116631.5849625007151.5849625007

    6554425174.64385618981638200327680013107221167254.6438561898174.6438561898

    13800850185.643856189862068001310720026214411168505.6438561898185.6438561898

    27600825194.643856189862070001310720052428811169254.6438561898194.6438561898

    96256810203.321928094986008010485760104857611170103.3219280949203.3219280949

    115712810213.3219280949940024020971520209715211171103.321928094900

    128000810213.3219280949817144020971520209715200171204.3219280949214.3219280949

    285696810223.32192809491337336041943040419430411172103.321928094900

    315392810223.32192809491040376041943040419430400172204.3219280949224.3219280949

    1

    564666641665656480.3390054593frag

    runing sum

    raytracesize(log)num(log)diff from before?index0

    831223314.9303215420249784812093122314.930321542

    16438039418.740699797707008624161121043803918.7406997977

    2448352515.5612879452386816154726432112114835215.5612879452

    3219627514.2605520523062806432002116797916.0528015189

    4010473613.354387142325135267027264112121047313.3543871423

    4814067.12928301692240896064002121061313.3735449032

    561518610.5679560754121449715264002121213113.5664108612

    6424567.93663793901568064002121237613.5952574814

    727392712.851749041441395294617612811213739212.8517490414

    801202710.23122118075769615385612800213859413.0691140618

    8816277.339850002964802073612800213875613.0960562392

    968176.339850002925921036812800213883713.1093409688

    1045275.70043971811248665612800213888913.1178054117

    1121974.2479275134304243212800213890813.1208858428

    120371.58496250072438412800213891113.121371626

    1284675.52356195610588812800213895713.1287998908

    13616487.35755200461968041984256112141647.3575520046

    16818088256256002141657.3663222142

    176381.5849625007240768256002141687.3923174228

    19218064256256002141697.4008794363

    2001283.58496250076723072256002141817.4998458871

    208381.5849625007144768256002141847.5235619561

    22418032256256002141857.5313814605

    2648596.4093909361210804352051211215856.4093909361

    35219016051251200215866.4262647547

    416792.8073549221672358451200215936.5391588111

    52025104.64385618981260025600102411216254.6438561898

    69611003281024102400216264.7004397181

    82421014002048102400216284.8073549221

    83221013842048102400216304.9068905956

    103221112032409620481121721

    16401110408204820480021731.5849625007

    205621214080819240961121821

    253621213120819240960021842

    32721120824409640960021852.3219280949

    36161120480409640960021862.5849625007

    410411304088819281921121910

    653611301656819281920021921

    807221312401638481920021942

    82003141.58496250072455249152163841122031.5849625007

    163923151.58496250074912898304327681122131.5849625007

    16000811801021362621442621443122210

    1384136119710800.1156233189

    jack_s100_distributions-srt

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    num(log)

    Block-size (log)

    Number of requests (log)

    raytrace

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    Buddy block-size (log)

    Number of requests (log)

  • Benchmark raytrace12% fragmentation

    Chart1

    14.930321542

    18.7406997977

    16.0528015189

    13.5952574814

    13.1287998908

    7.5313814605

    6.5391588111

    4.9068905956

    1.5849625007

    2.5849625007

    2

    1.5849625007

    1.5849625007

    0

    Buddy block-size (log)

    Number of requests (log)

    jack_s100_distributions-srt

    Jack

    Size(log)Num(log)wasted bytesTotal Buddysingle buddy

    81413493320.43083330790113079448

    16728081419.473739435601164929616

    242518452521.2641058038201476168059046432

    3262605515.93399026330200336032

    40171744617.389900172841218561099161664

    481804104620.78285107642886566411546265664

    56854238619.704278550868339045467123264

    64355675618.44020004702276320064

    7277079.58871463564312098560128

    802888711.4958550269138624369664128

    885611712.4540421975224440718208128

    962291711.161761743373312293248128

    1041827710.835260918643848233856128

    11219377.5924570373308824704128

    1201073.3219280949801280128

    1284475.459431618605632128

    13649288.942514505359040125952256

    144168417924096256

    152381.5849625007312768256

    1685785.8328900142501614592256

    176983.16992500147202304256

    1842084.321928094914405120256

    200381.5849625007168768256

    2083685.169925001417289216256

    22418032256256

    2483184.95419631042487936256

    26421397.734709620252824109056512

    2722914801024512

    280190232512512

    2883795.2094533656828818944512

    2962914321024512

    3284395.4262647547791222016512

    352190160512512

    3682694.7004397181374413312512

    4083094.9068905956312015360512

    4168937684096512

    4482694.7004397181166413312512

    4882694.700439718162413312512

    520193107.5924570373972721976321024

    52826104.700439718112896266241024

    56817104.08746284137752174081024

    576110044810241024

    60815103.90689059566240153601024

    64824104.58496250079024245761024

    68813103.70043971814368133121024

    696110032810241024

    72813103.70043971813848133121024

    76811103.45943161862816112641024

    80811103.45943161862376112641024

    816110020810241024

    824210140020481024

    832210138420481024

    84811103.45943161861936112641024

    88811103.45943161861496112641024

    92811103.45943161861056112641024

    96811103.4594316186616112641024

    100810103.3219280949160102401024

    1032106116.72792045461076962170882048

    104810113.321928094910000204802048

    10889113.16992500148640184322048

    11289113.16992500148280184322048

    1152111089620482048

    116881137040163842048

    12087112.80735492215880143362048

    12487112.80735492215600143362048

    128810113.32192809497600204802048

    13284112288081922048

    13684112272081922048

    14084112256081922048

    14483111.5849625007180061442048

    14883111.5849625007168061442048

    15283111.5849625007156061442048

    15683111.5849625007144061442048

    16083111.5849625007132061442048

    1624111042420482048

    1640111040820482048

    16483111.5849625007120061442048

    16883111.5849625007108061442048

    17283111.584962500796061442048

    17683111.584962500784061442048

    18083111.584962500772061442048

    1848211140040962048

    1888211132040962048

    1928211124040962048

    1968211116040962048

    20482111040962048

    20561120204040964096

    20882121401681924096

    21282121393681924096

    21682121385681924096

    22082121377681924096

    22482121369681924096

    22882121361681924096

    23041120179240964096

    23282121353681924096

    23682121345681924096

    24082121337681924096

    24161120168040964096

    24482121329681924096

    24882121321681924096

    25282121313681924096

    25362121312081924096

    25687122.807354922110696286724096

    26081120148840964096

    26481120144840964096

    26881120140840964096

    27281120136840964096

    27681120132840964096

    28081120128840964096

    28481120124840964096

    28881120120840964096

    29281120116840964096

    29681120112840964096

    30081120108840964096

    30481120104840964096

    30881120100840964096

    3272112082440964096

    3616112048040964096

    41041130408881928192

    46081130358481928192

    51283131.58496250079192245768192

    65361130165681928192

    80722131240163848192

    82003141.5849625007245524915216384

    9216114071681638416384

    10248114061361638416384

    163923151.5849625007491289830432768

    611697763128688880.1955124921frag

    CompressSize(log)Num(log)

    831238.2854022189024968

    162817411.459943848404507216

    241534510.5830827675122724908832

    3219657.61470984410627232

    408366.37503943131992531264

    4810666.72792045461696678464

    5611166.7944158664888710464

    6411266.80735492210716864

    7212076.9068905956672015360128

    8018377.5156998383878423424128

    8815977.3128829553636020352128

    9610076.6438561898320012800128

    1045275.700439718112486656128

    1121874.16992500142882304128

    120371.584962500724384128

    128572.32192809490640128

    13610886.75488750221296027648256

    168281176512256

    176381.5849625007240768256

    2001283.58496250076723072256

    20828196512256

    22418032256256

    26410496.70043971812579253248512

    352190160512512

    416792.80735492216723584512

    48819024512512

    52054105.754887502227216552961024

    704110032010241024

    824210140020481024

    832210138420481024

    10322111203240962048

    1640111040820482048

    1808111024020482048

    20561120204040964096

    25362121312081924096

    3272112082440964096

    3616112048040964096

    41041130408881928192

    65361130165681928192

    800825134.643856189846002048008192

    82003141.5849625007245524915216384

    163923151.5849625007491289830432768

    6554425174.643856189816382003276800131072

    13800850185.6438561898620680013107200262144

    27600825194.6438561898620700013107200524288

    96256810203.3219280949860080104857601048576

    115712810213.32192809499400240209715202097152

    128000810213.32192809498171440209715202097152

    285696810223.321928094913373360419430404194304

    315392810223.321928094910403760419430404194304

    564666641665656480.3390054593frag

    runing sum

    raytracesize(log)num(log)diff from before?index0

    831223314.9303215420249784812093122314.930321542

    16438039418.740699797707008624161121043803918.7406997977

    2448352515.5612879452386816154726432112114835215.5612879452

    3219627514.2605520523062806432002116797916.0528015189

    4010473613.354387142325135267027264112121047313.3543871423

    4814067.12928301692240896064002121061313.3735449032

    561518610.5679560754121449715264002121213113.5664108612

    6424567.93663793901568064002121237613.5952574814

    727392712.851749041441395294617612811213739212.8517490414

    801202710.23122118075769615385612800213859413.0691140618

    8816277.339850002964802073612800213875613.0960562392

    968176.339850002925921036812800213883713.1093409688

    1045275.70043971811248665612800213888913.1178054117

    1121974.2479275134304243212800213890813.1208858428

    120371.58496250072438412800213891113.121371626

    1284675.52356195610588812800213895713.1287998908

    13616487.35755200461968041984256112141647.3575520046

    16818088256256002141657.3663222142

    176381.5849625007240768256002141687.3923174228

    19218064256256002141697.4008794363

    2001283.58496250076723072256002141817.4998458871

    208381.5849625007144768256002141847.5235619561

    22418032256256002141857.5313814605

    2648596.4093909361210804352051211215856.4093909361

    35219016051251200215866.4262647547

    416792.8073549221672358451200215936.5391588111

    52025104.64385618981260025600102411216254.6438561898

    69611003281024102400216264.7004397181

    82421014002048102400216284.8073549221

    83221013842048102400216304.9068905956

    103221112032409620481121721

    16401110408204820480021731.5849625007

    205621214080819240961121821

    253621213120819240960021842

    32721120824409640960021852.3219280949

    36161120480409640960021862.5849625007

    410411304088819281921121910

    653611301656819281920021921

    807221312401638481920021942

    82003141.58496250072455249152163841122031.5849625007

    163923151.58496250074912898304327681122131.5849625007

    16000811801021362621442621443122210

    1384136119710800.1156233189

    jack_s100_distributions-srt

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    Num(log)

    Block size (log)

    Number of requests (log)

    jack (20% fragmentation)

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    Num(log)

    Block size (log)

    Number of requests(log)

    compress (34% fragmentation)

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    num(log)