69
VisualWorks Object Memory Management Andrés Valloud

VW Object Memory Management

  • Upload
    esug

  • View
    469

  • Download
    1

Embed Size (px)

DESCRIPTION

ESUG 2011, Edinburgh

Citation preview

Page 1: VW Object Memory Management

VisualWorks Object Memory Management

Andrés Valloud

Page 2: VW Object Memory Management

Structure

Page 3: VW Object Memory Management

Eden

Page 4: VW Object Memory Management

SASB

Eden

Page 5: VW Object Memory Management

Old

SASB

Eden

Page 6: VW Object Memory Management

SASB

Eden

Perm

Old

Page 7: VW Object Memory Management

Evolution

Page 8: VW Object Memory Management

Instance creation

Page 9: VW Object Memory Management

Scavenge 1

Page 10: VW Object Memory Management

Scavenge 2

Page 11: VW Object Memory Management

Scavenge 3

Page 12: VW Object Memory Management

Scavenge 4

Page 13: VW Object Memory Management

Tenured

Page 14: VW Object Memory Management

IGC / GC

Page 15: VW Object Memory Management

Perm save

Page 16: VW Object Memory Management

Global GC

RIP

Page 17: VW Object Memory Management

But, speaking of GC...

Page 18: VW Object Memory Management

SASB

Eden

Perm

Old

Page 19: VW Object Memory Management

Perm

OldRT

SASB

EdenScavenge finds

live objects faster

Page 20: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenScavenge finds

live objects faster

IGC / GC find live objects

faster

Page 21: VW Object Memory Management

Responsibilities

Page 22: VW Object Memory Management

OldRT

PermOldRT

SASB

Eden

Page 23: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenVM scavenges

new space

Page 24: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

Page 25: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

VM signals low memory

semaphore

Page 26: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenVM scavenges

new spaceVI must ensure

success

VI manages old space (GC,

grow, shrink)

VM signals low memory

semaphore

Page 27: VW Object Memory Management

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: VW Object Memory Management

Memory policies

Page 29: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenWorst case scavenge

Page 30: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenEden and

SA or SB fullWorst case scavenge

Page 31: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenEden and

SA or SB full

RT grows

Worst case scavenge

Page 32: VW Object Memory Management

OldRT

PermOldRT

SASB

EdenEden and

SA or SB full

RT grows

Old RT grows

Worst case scavenge

Page 33: VW Object Memory Management

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: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

The picture

Page 35: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

The pictureGrowth

Increments

Page 36: VW Object Memory Management

Improvements since VisualWorks 7.7

Page 37: VW Object Memory Management

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

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

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

Fixed since VW 7.7

Page 38: VW Object Memory Management

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: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7

Page 40: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7IGC as last

resort, bogus emergencies

Page 41: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7VM crash dueto scavenge

failure

Page 42: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Too low for

modernapplications

Page 43: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7

GrowthIncrements

Page 44: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Tiny growthincrement,

excessive GC

Page 45: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Tiny growthincrement,

fragmentation

Page 46: VW Object Memory Management

0Upper

Memory Bound

ImageSize

GrowthRegimeBound

EmergencyThreshold

Worst CaseScavenge

Fixed since VW 7.7Low free

memory limit, even more GC

Page 47: VW Object Memory Management

New technology

Page 48: VW Object Memory Management

New technologyTESTS

Page 49: VW Object Memory Management

New technologyTESTS

•MemoryPolicyChecker

Page 50: VW Object Memory Management

New technologyTESTS

•MemoryPolicyChecker

•MemoryPolicyTuner

Page 51: VW Object Memory Management

New technologyTESTS

•MemoryPolicyChecker

•MemoryPolicyTuner

•MemoryPolicyStressTest

Page 52: VW Object Memory Management
Page 53: VW Object Memory Management

Before and after

Page 54: VW Object Memory Management

Before

After

0Upper

Memory Bound

0Upper

Memory Bound

Page 55: VW Object Memory Management

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: VW Object Memory Management

Print 2 web, ESUG 2009

Page 57: VW Object Memory Management

Print 2 web, ESUG 2009

2.5x faster(with small

changes only)

X

Page 58: VW Object Memory Management

VisualWorks 7.8and beyond

Page 59: VW Object Memory Management

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: VW Object Memory Management

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: VW Object Memory Management

VisualWorks 7.9

Page 62: VW Object Memory Management

VisualWorks 7.9

•Up to 40% faster GC

Page 63: VW Object Memory Management

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

Page 64: VW Object Memory Management

VisualWorks 7.9

•Up to 40% faster GC

•Improved IGC uses less memory

•Adaptive time based memory policy IGC driver

Page 65: VW Object Memory Management

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: VW Object Memory Management

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: VW Object Memory Management

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: VW Object Memory Management

•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: VW Object Memory Management

Questions?