Transcript
Page 1: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

1

Abstract

Modern computing demands large memory, many CPUs and elaborate storage.

How do you meet these demands for your OpenEdge environment? In this talk we give you advice, tips, useless information, and pointers on the technologies you can use to meet your requirements. Among other things, we will discuss NUMA (Non-Uniform Memory Access), RAID, SSD, and some of the more advanced OpenEdge RDBMS tuning techniques.

What's in it for you? We'll address that question in a discussion of benefits.

Page 2: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

Performance Tuning the OpenEdge Database In The Modern World

Gus Björklund, Lackey

Mike Furgal, Boss

EMEA PUG Challenge 2015,Copenhagen, Denmark4 – 6 November, 2015

Page 3: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

3

We are

Page 4: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

4

Performance tuning is not

just about software configuration

and turning knobs.

Page 5: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

5

Situation:

Your server is 5 years old.

Vendor support fees rise.

Parts prices rise.

Parts are harder to find.

With what do you replace old server ???

Page 6: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

6

Good news !

Hardware is cheap.

Page 7: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

7

Your new server will have:

Processors

Memory

Storage

Software

Page 8: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

8

Numbers you should know(from Jeff Dean @ google)

thing time

Read or write L1 cache memory 0.5 ns

Branch mispredict 5 ns

Mutex lock/unlock 100 ns

Read 1 byte from main memory 100 ns

Send 2K bytes over 1 Gbps network 20,000 ns

Read 1 MB sequentially from memory 250,000 ns

Round trip packet within same datacenter 500,000 ns

Disk seek 10,000,000 ns

Read 1 MB sequentially from network 10,000,000 ns

Read 1 MB sequentially from disk 30,000,000 ns

Send packet CA -> Netherlands -> CA 150,000,000 ns

1 second 1,000,000,000 ns

Page 9: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

9

Processors

Page 10: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

10

Modern processors are very fast.

Single cpu machines hardly exist anymore.

You can have way more cpu power thanyou can ever use

Page 11: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

11

cpu

me

mor

y b

us

address contents

0x100 gus.....

0x108 bob.....

0x110 peter...

0x118 clyde...

0x120 mary....

0x128 amnon...

0x130 gabi....

0x138 may.....

0x140 bill....

0x148 rich....

0x150 evan....

0x158 robin...

0x160 shelley.

slowmain

memory

address contents

0x100 gus.....

0x138 may.....

fast cache

Simple single processor architectureone level high speed cache memory

Page 12: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

12

cpu

me

mor

y b

us

address contents

0x100 gus.....

0x108 bob.....

0x110 peter...

0x118 clyde...

0x120 mary....

0x128 amnon...

0x130 gabi....

0x138 may.....

0x140 bill....

0x148 rich....

0x150 evan....

0x158 robin...

0x160 shelley.

slowmain

memory

address contents

0x100 alan....

0x138 may.....

fast cache

Simple single processor architectureone level high speed cache memory

Page 13: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

13

cpu

me

mor

y b

us

address contents

0x100 alan....

0x108 bob.....

0x110 peter...

0x118 clyde...

0x120 mary....

0x128 amnon...

0x130 gabi....

0x138 may.....

0x140 bill....

0x148 rich....

0x150 evan....

0x158 robin...

0x160 shelley.

slowmain

memory

address contents

0x150 evan....

0x138 may.....

fast cache

Simple single processor architectureone level high speed cache memory

Page 14: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

14

cpu

Multiprocessor caches

me

mor

y b

us

address contents

0x100 gus.....

0x108 bob.....

0x110 peter...

0x118 clyde...

0x120 mary....

0x128 amnon...

0x130 gabi....

0x138 may.....

0x140 bill....

0x148 rich....

0x150 evan....

0x158 robin...

0x160 shelley.

slowmain

memory

address contents

0x100 gus.....

0x138 may.....

fast cache

cpu0x100 gus.....

0x138 may.....

cpu0x100 gus.....

0x138 may.....

cpu0x100 gus.....

0x138 may.....

Page 15: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

15

cpu

Multiprocessor caches

me

mor

y b

us

address contents

0x100 gus.....

0x108 bob.....

0x110 peter...

0x118 clyde...

0x120 mary....

0x128 amnon...

0x130 gabi....

0x138 may.....

0x140 bill....

0x148 rich....

0x150 evan....

0x158 robin...

0x160 shelley.

slowmain

memory

address contents

0x100 gus.....

0x138 may.....

fast cache

cpu0x100 alan....

0x138 may.....

cpu0x150 evan....

0x138 may.....

cpu0x150 evan.....

0x138 may.....

who has the right value foraddress 0x100?

Page 16: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

16

A techniques to avoid Cache Coherency issues

Lessen the number of processes connecteddirectly to shared memory.

Page 17: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

17

Main Memory

Page 18: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

18

Memory prices have dropped significantly over the past years. For example in the year 2000, 64 MB of memory cost $100. In 2010 for $100 you could get 4 GB of memory. Today (2015) that same $100 gets you about 16 GB of memory.

9.0A 10.0A 9.1E04 10.2B 11.3.2

1998 2000 2002 2004 2006 2008 2010 2012 2014 20160

5000

10000

15000

20000

25000

How many MB does $100 USD Buy

11.5.0

Page 19: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

19

Main Memory

The least expensive wayto enhance performance.

Buy as much as you can.

Page 20: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

20

NUMA

Page 21: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

21

NUMA stands for Non-Uniform Memory Access

In layman's terms, a NUMA machine is the coupling of severalmachines in a single physical unit, running a single Operating System. Like a "cluster" (if you squint).

Page 22: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

22

The NUMA Quotient

This is the time it takes for a CPU to read memory on a remotenode as compared to reading memory locally

Page 23: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

23

How do you know if you have a NUMA machine?

Page 24: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

24

So now you know you have a NUMA machine.

Is all hope lost?

Page 25: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

25

On some machines you can pin memory and processes to a particular node.

On some you can disable nodes but may lose memory too

Change the OpenEdge configuration to client/server

Look into OS Specfic NUMA configuration options

Page 26: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

26

Storage

Page 27: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

27

RAID

Page 28: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

28

RAIDWhy?

raid diagrams are from wikipedia

Page 29: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

29

RAID 0: block striping

performance but NO reliability

Page 30: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

30

RAID 1: disk mirroring

reliability – two copies

Page 31: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

31

RAID 5: block striping with parity

reliability and bad performance

all writes must update 2 drives

Page 32: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

32

RAID 6: block striping with two parity disks

reliability and worse performance

all writes must update 3 drives

Page 33: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

33

RAID 6: block striping with two parity disks

reliability and worse performance

all writes must update 3 driveswrite to block E1 has to wait for write to block A3

Page 34: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

34

RAID 10: disk mirroring and block striping

reliability – two copies

performance – data spread over multiple drives

Page 35: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

35

RAID 10: disk mirroring and block striping

reliability – two copies

performance – data spread over multiple drives

Page 36: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

36

RAID choices

Type Description Use ?

RAID 0 Block striping (no redundancy at all) Bad

RAID 1 Mirroring OK

RAID 10 Block striping + mirroring Excellent

RAID 2 Bit level striping, dedicated parity Bad

RAID 3 Byte level striping, dedicated parity Bad

RAID 4 Block striping, dedicated parity Bad

RAID 5 Block striping with striped parity Poor

RAID 6 Block striping with dual striped parity Poor

RAID 60, 6+, DP, etc. Marketing Poor

Page 37: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

37

RAID choices – only 1 good one

Type Description Use ?

RAID 0 Block striping (no redundancy at all) Bad

RAID 1 Mirroring OK

RAID 10 Block striping + mirroring Excellent

RAID 2 Bit level striping, dedicated parity Bad

RAID 3 Byte level striping, dedicated parity Bad

RAID 4 Block striping, dedicated parity Bad

RAID 5 Block striping with striped parity Poor

RAID 6 Block striping with dual striped parity Poor

RAID 60, 6+, DP, etc. Marketing Poor

Advancements in technology can never make a silk purse from theRAID 5 / 6 sow's ear. Vendors can't fool mother nature !!!

Local disks will beat SAN storage

Page 38: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

38

SSD

Page 39: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

39

SSD

Fetching a record that is already in the database buffer pool is 75 times faster than SSD !!!!

Prices have dropped – a LOT. Low end is $0.50 per gigabyte

Reliability is now very good – better than spinning rust

SSD devices are fast, and getting faster

Use Mirrored pairs (RAID 1) – NO RAID 5 or any striping

When you need to replace one, you may not be able to get matching units anymore.

Page 40: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

40

Time to grow a 96 MB file

Disk Type Duration Speed

Spinning Disk 7 – 10 9 - 13 MB/Sec

SSD 1 - 2 43 – 96 MB/Sec

Page 41: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

41

The PROGRESS Bravepoint businesshas many customers running with SSDdrives successfully.

Either Complete SSD, Hybrid, or a Mix

Page 42: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

42

… in Big B You Should Trust!

Layer Time # of Recs # of Ops Cost per Op

Relative

Progress to –B 0.96 100,000 203,473 0.000005 1

-B to FS Cache 10.24 100,000 26,711 0.000383 75

FS Cache to SAN 5.93 100,000 26,711 0.000222 45

-B to SAN Cache* 11.17 100,000 26,711 0.000605 120

SAN Cache to Disk 200.35 100,000 26,711 0.007500 1500

-B to Disk 211.52 100,000 26,711 0.007919 1585

* Used concurrent IO to eliminate FS cache

42

courtesy of Tom Bascom

Page 43: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

43

Mid-range

server replacement example

Page 44: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

44

Page 45: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

45

Name Qty Value

CPU (32) 4 Intel Xeon E5 4603, 8 cores

RAM (32 GB) 8 1866MT/s 4 GB RDIMM

Ether 1 Intel GB Ethernet Card

Disk Controller 1 PERC H10

Storage, hot plug 8 146 GB 15,000 rpm SAS

Stuff ? dual psu, case, power cord, etc.

Operating system 1 Linux, not included

Page 46: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

47

Page 47: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

48

Software

Page 48: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

49

Modern OpenEdge RDBMS

Current version of you application

Use them on your new server

Page 49: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

50

Get Current.

Better be on 11.5 or later

Page 50: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

51

Page 51: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

52

Client database-request statement caching

Top is last procedure executed

Bottom is first procedure executed

Top down, newest to oldest

One time full stack

Continuous full stack

Continuous current location

Procedure Call Stack

# Procedure Name File Name

19 : reallyLongNamedInternalProcedure3 proctestb.r 12 : reallyLongNamedInternalProcedure2 proctestb.r 5 : reallyLongNamedInternalProcedure1 proctesta.r445 : reallyLongNamedInternalProcedure0 proctesta.r 1 : /usr1/stmtest/p72340_Untitled1.ped

Newest

Oldest

Top

Bottom

Page 52: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

53

_tablestats_indexstats_usertablestats_userindexstats

Application ProfilerCompile XREFEtc….

Session: Finding Bottlenecks in ABL Applications using Profiling – Friday 14:45 (Cologne)

Page 53: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

54

Advanced Tuning Techniques

Page 54: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

55

Get Current.

9.1E is over 10 years old!

10.1C is over 6 years old!

9.0A 10.0A 9.1E04 10.2B 11.3.2

1998 2000 2002 2004 2006 2008 2010 2012 2014 20160

5000

10000

15000

20000

25000

How many MB does $100 USD Buy

11.5.0

Page 55: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

56

-B2

Page 56: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

57

-lruskips

Page 57: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

58

-napmax

Page 58: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

59

index rebuild

Page 59: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

60

Index Rebuild Performance (OE 10.2B06, OE 11.2)

sort block size (8K – 64K, note new limit)

# threads for data scan phase

merge block size ( default -TB)

merge pool fraction of system memory (in %)

# threads per concurrent sort group merging-mergethreads

# concurrent sort group merging-threadnum

# merge buffers to merge each merge pass-TM

report system usage statistics

a bit quieter than before

-rusage

-silent

-TB

-datascanthreads

-TMB

-TF

X -threadnum = 1.5 X #CPUs

2 or 4

32

-rusage

-silent

64

1.5 X #CPUs

64

80%

Page 60: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

61

Index Rebuild Performance (OE 10.2B06, OE 11.2)

sort block size (8K – 64K, note new limit)

# threads for data scan phase

merge block size ( default -TB)

merge pool fraction of system memory (in %)

# threads per concurrent sort group merging-mergethreads

# concurrent sort group merging-threadnum

# merge buffers to merge each merge pass-TM

report system usage statistics

a bit quieter than before

-rusage

-silent

-TB

-datascanthreads

-TMB

-TF

X -threadnum = 1.5 X #CPUs

2 or 4

32

-rusage

-silent

64

1.5 X #CPUs

64

80%

12 ½ hours 2 ½

hours

5X improvement!

Page 61: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

62

-omsize

Page 62: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

63

How to manage Object Mapping Cache

Do I have a problem?

• Check latch statisticsdefine variable prev-latches as integer.

repeat:

find _latch where _latch-name = "MTL_OM".

display _Latch-Name

_Latch-Lock /* # times latch acquired */

_Latch-Wait /* # time conflict occurred */

_Latch-Lock - prev-latches label "latch/sec".

prev-latches = _Latch-Lock.

pause 1.

end.

Page 63: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

64

The dawn rises only when the rooster crows.

Burmese proverb

Page 64: 1 Abstract Modern computing demands large memory, many CPUs and elaborate storage. How do you meet these demands for your OpenEdge environment? In this

65

Answersemail:

[email protected]

[email protected]


Top Related