csc 213 – large scale programming. today’s goals consider what new does & how java works ...

54
LECTURE 37: REAL-WORLD USE OF GRAPHS CSC 213 – Large Scale Programming

Upload: fredrick-partington

Post on 14-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

LECTURE 37:REAL-WORLD USE OF GRAPHS

CSC 213 – Large Scale Programming

Page 2: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Today’s Goals

Consider what new does & how Java works What are traditional means of managing

memory? Why did they change how this was done for

Java? What are the benefits & costs of these

changes? Examine real-world use of graphs & its

benefits How do all of those graph algorithms get

used? Can we take advantage of this knowledge

somehow? What occurs in real-world we have not

covered? And why is beer ALWAYS answer to life’s

problems

Page 3: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Explicit Memory Management

Traditional form of memory management Used a lot, but fallen out of favor

malloc / new Commands used to allocate space for an

object free / delete

Return memory to system using these command

Simple to use

Page 4: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Explicit Memory Management

Traditional form of memory management Used a lot, but fallen out of favor

malloc / new Commands used to allocate space for an

object free / delete

Return memory to system using these command

Simple to use, but tricky to get right Forget to free memory leak free too soon dangling pointer

Page 5: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Dangling Pointers

Node x = new Node(“happy”);

Page 6: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

Page 7: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

delete x; // But I’m not dead yet!

Page 8: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

delete x; // But I’m not dead yet!Node y = new Node(“sad”);

Page 9: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

delete x; // But I’m not dead yet!Node y = new Node(“sad”);

cout << ptr.data << endl; // sad

Page 10: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Creates insidious, hard-to-find bugs

Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

delete x; // But I’m not dead yet!Node y = new Node(“sad”);

cout << ptr.data << endl; // sad

Page 11: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Solution: Garbage Collection Allocate objects into program’s heap

No relation to heap implementing a priority queue

This heap is simply a “pile of memory” Garbage collector scans objects on

heap Starts at references in program stack &

static fields Finds objects reachable from those program

roots We consider the unreachable objects

“garbage” Cannot be used again, so safe to remove

from heap Need to include free command is

eliminated

Page 12: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

No More Dangling Pointers

Node x = new Node(“happy”);

Page 13: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

No More Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

Page 14: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

No More Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

// x reachable through ptr so cannot reclaim!

Page 15: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

No More Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

// x reachable through ptr so cannot reclaim!

Node y = new Node(“sad”);

Page 16: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

No More Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

// x reachable through ptr so cannot reclaim!

Node y = new Node(“sad”);

cout << ptr.data << endl; // happy!

Page 17: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Eliminates one mistake programmers make!

But how do we perform garbage collection?

No More Dangling Pointers

Node x = new Node(“happy”);

Node ptr = x;

// x reachable through ptr so cannot reclaim!

Node y = new Node(“sad”);

cout << ptr.data << endl; // happy!

Page 18: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 19: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 20: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 21: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 22: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 23: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 24: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 25: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 26: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 27: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 28: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Static & locals are called root references

Must compute objects in their transitive closure

Garbage CollectionH

EA

P

Page 29: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Garbage CollectionH

EA

P

Remove unmarked objects from the heap

Page 30: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Garbage CollectionH

EA

P

Remove unmarked objects from the heap

Page 31: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Garbage CollectionH

EA

P

Remove unmarked objects from the heap

New objects allocated into empty spaces

Page 32: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Why Not Always Use GC?

Garbage collection has obvious benefits Eliminates some errors that often occurs Added benefit: also makes programming

easier

Page 33: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Why Not Always Use GC?

Garbage collection has obvious benefits Eliminates some errors that often occurs Added benefit: also makes programming

easier Also easier to update code when GC used

for memory GC also has several drawbacks

Reachable objects could, not will, be used again

More memory needed to hold the extra objects

It takes time to compute reachable objects

Page 34: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Cost of Accessing Memory

How long memory access takes is also important Will make a major difference in time

program takes Imaginary scenario used to consider

this effect:

Page 35: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Cost of Accessing Memory

How long memory access takes is also important Will make a major difference in time

program takes Imaginary scenario used to consider

this effect:

I want a beer

Page 36: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers

Page 37: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers

Page 38: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers Very, very fast but… … number of beers held is limited

Page 39: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers

Use caches at next level for dearest memory

Page 40: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers

Use caches at next level for dearest memory

Page 41: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Registers and Caches

Inside the CPU, find first levels of memory

At the lowest level, are processor’s registers

Use caches at next level for dearest memory More space than registers, but… … not as fast (walk across room) Will need more beer if party is good

Page 42: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Horrors!

Processor does its best to keep memory local Caches organized to hold memory needed

soon Makes guesses, since this requires

predicting future Will eventually drink all beer in house

Page 43: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Horrors!

Processor does its best to keep memory local Caches organized to hold memory needed

soon Makes guesses, since this requires

predicting future Will eventually drink all beer in house

Page 44: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Horrors!

Processor does its best to keep memory local Caches organized to hold memory needed

soon Makes guesses, since this requires

predicting future Will eventually drink all beer in house

30MB is largest cache size at the moment Many programs need more than this What do we do?

Page 45: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

When the House Runs Dry…

What do you normally do when all beer gone? Must go to store to get more… … but do not want a DUI so we must walk

to store Processor uses RAM to store data that

cannot fit RAM sizes are much, much larger than

caches 100x slower to access, however

Page 46: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

When Store Is Out Of Beer...

Page 47: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

When Store Is Out Of Beer...

Page 48: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Ein Glass Bier, Bitte

Get SCUBA gear ready for WALK to Germany Should find enough beer to handle any

situation But buzz destroyed by the very long wait

per glass If Germany runs out, you're drinking too

much

Page 49: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Walking To Germany Is Slow…

60M 80M 100M 120M 140M 160M 180M1

1.2

1.4

1.6

1.8

2

2.2

2.4

pseudoJBB

GenMS

GenImmix

GenMS + Leadered

Heap Size

Tim

e R

ela

tive t

o G

en

MS

+ L

ead

ere

d

at

60

MB

Page 50: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Maintaining Your Buzz

Prevent long pauses by maintaining locality Repeatedly access those objects in fast

memory Access objects in sequential order they are

in memory Both of properties take advantage of

caching Limit data used to size of cache (temporal

locality) (Spatial locality) Exploit knowing how cache

works Limiting data is not easy (or would

have done it) So taking advantage of spatial locality is

our best bet

Page 51: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Cache Replacement Algorithms When we access memory, add its block

to cache May need to evict a block if the cache

already full 2+1 approaches used to select evicted

block FIFO maintains blocks in Queue and evicts

oldest Track each use and evict block least

recently used (Randomly choose a block to evict)

For good performance want to avoid worst case But what is it?

Page 52: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

Cache Replacement Workings

Access Order During Program Execution0 1 2 3 4 5 0 1 0 1 2 5 3 2 4

LRU

FIFO

Page 53: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

What Does This Mean?

Large data sets require more thought & care Start with, but do not end at, big-Oh

notation Consider memory costs and how to limit

them Most data structures do not grow this

large STACK, QUEUE, SEQUENCE rarely get above

1GB Using very, very large GRAPH is not typical

Databases are largest data sets anywhere Which data structures & implementations

affected?

Page 54: CSC 213 – Large Scale Programming. Today’s Goals  Consider what new does & how Java works  What are traditional means of managing memory?  Why did

For Next Lecture

Remember, tests for your program #3 due Think before submitting; do tests make

sense? Reading on memory hierarchy for

Monday How can we use experience of wanting a

beer? Organize searchable collections to help

performance I am taking students to conference on

Friday Will not be here, since I cannot be in two

places at once