esug'11: visualworks object memory management, by andres valloud

69
VisualWorks Object Memory Management Andrés Valloud

Upload: cincom-smalltalk

Post on 04-Mar-2015

99 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks Object Memory Management

Andrés Valloud

Page 2: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Structure

Page 3: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Eden

Page 4: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

SASB

Eden

Page 5: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Old

SASB

Eden

Page 6: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

SASB

Eden

Perm

Old

Page 7: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Evolution

Page 8: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Instance creation

Page 9: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Scavenge 1

Page 10: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Scavenge 2

Page 11: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Scavenge 3

Page 12: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Scavenge 4

Page 13: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Tenured

Page 14: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

IGC / GC

Page 15: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Perm save

Page 16: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Global GC

RIP

Page 17: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

But, speaking of GC...

Page 18: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

SASB

Eden

Perm

Old

Page 19: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Perm

OldRT

SASB

EdenScavenge finds

live objects faster

Page 20: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenScavenge finds

live objects faster

IGC / GC find live objects

faster

Page 21: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Responsibilities

Page 22: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

Eden

Page 23: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenVM scavenges

new space

Page 24: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

Page 25: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

VM signals low memory

semaphore

Page 26: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

VI manages old space (GC,

grow, shrink)

VM signals low memory

semaphore

Page 27: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

VI manages old space (GC,

grow, shrink)

VM signals low memory

semaphore

VM (few) fixed actions

VI memory policy classes

Page 28: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Memory policies

Page 29: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenWorst case scavenge

Page 30: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenEden and

SA or SB fullWorst case scavenge

Page 31: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenEden and

SA or SB full

RT grows

Worst case scavenge

Page 32: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenEden and

SA or SB full

RT grows

Old RT grows

Worst case scavenge

Page 33: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

OldRT

PermOldRT

SASB

EdenEden and

SA or SB full

RT grows

Old RT grows

Stack

Stack zone full, flushed to

object memory

Worst case scavenge

due to GC

Page 34: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

The picture

Page 35: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

The pictureGrowth

Increments

Page 36: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Improvements since VisualWorks 7.7

Page 37: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

ObjectMemory>>igcState...aborting ifTrue: [^#aborting]....

MemoryPolicy>>dealWithIGC...memoryStatus igcState = #aborted

ifTrue: [“recover from IGC abort”]....

Fixed since VW 7.7

Page 38: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Fixed since VW 7.7

IGC does not recover from

stack overflow

ObjectMemory>>igcState...aborting ifTrue: [^#aborting]....

MemoryPolicy>>dealWithIGC...memoryStatus igcState = #aborted

ifTrue: [“recover from IGC abort”]....

Page 39: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7

Page 40: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7IGC as last

resort, bogus emergencies

Page 41: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7VM crash dueto scavenge

failure

Page 42: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Too low for

modernapplications

Page 43: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7

GrowthIncrements

Page 44: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Tiny growthincrement,

excessive GC

Page 45: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Tiny growthincrement,

fragmentation

Page 46: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Low free

memory limit, even more GC

Page 47: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

New technology

Page 48: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

New technologyTESTS

Page 49: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

New technologyTESTS

•MemoryPolicyChecker

Page 50: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

New technologyTESTS

•MemoryPolicyChecker

•MemoryPolicyTuner

Page 51: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

New technologyTESTS

•MemoryPolicyChecker

•MemoryPolicyTuner

•MemoryPolicyStressTest

Page 52: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud
Page 53: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Before and after

Page 54: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Before

After

0Upper

Memory Bound

0Upper

Memory Bound

Page 55: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

0

10,000

20,000

30,000

40,000

A (x100) B (x100) C (x400) D (x40) E (x40) F (x6) G (x6)

Run time per stress test case, in seconds

VW 7.7 legacy MemoryPolicy (with fixes) ~1 day, if they workVW 7.7.1 without sizesAtStartup tuning ~160 minutesVW 7.7.1 default ~73 minutes

A: pointer garbageB: byte garbageC: point creation

Segmented containerD: byte allocationE: pointer allocation

Large containerF: byte allocationG: pointer allocation

Page 56: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Print 2 web, ESUG 2009

Page 57: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Print 2 web, ESUG 2009

2.5x faster(with small

changes only)

X

Page 58: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.8and beyond

Page 59: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.8+

•Fixed space allocation fixed

•Improved weak / ephemeron support

•IGC performance improvements

•GC / IGC mark stack overflow prevention

•GC moves large objects back into large space

•New -m[1..7] VM switches

Page 60: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.8+

•Fixed space allocation fixed

•Improved weak / ephemeron support

•IGC performance improvements

•GC / IGC mark stack overflow prevention

•GC moves large objects back into large space

•New -m[1..7] VM switches

DONE

Page 61: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

Page 62: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

Page 63: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

Page 64: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

Page 65: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

•Memory policy IGC smart abort

Page 66: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

•Memory policy IGC smart abort

•Memory policy IGC switch

Page 67: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

•Memory policy IGC smart abort

•Memory policy IGC switch

•Updates to the OldRT, become:, fixed space...

Page 68: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

•Memory policy IGC smart abort

•Memory policy IGC switch

•Updates to the OldRT, become:, fixed space...

VisualWorks 7.9

DONE

Page 69: ESUG'11:  VisualWorks Object Memory Management, by Andres Valloud

Questions?