16.01.2013 Views

Advanced Techniques To Measure The Memory Component

Advanced Techniques To Measure The Memory Component

Advanced Techniques To Measure The Memory Component

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>To</strong>day’s Agenda:<br />

1) Why Do We Need <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>?<br />

2) Machine Pool <strong>Memory</strong> / Best Practice Guidelines<br />

3) <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

a) Understanding Your Current Environment<br />

b) Historical Analysis<br />

c) Performance Adjuster - Are You Set Up Efficiently?<br />

d) <strong>Advanced</strong> <strong>Memory</strong> Analysis / <strong>Techniques</strong><br />

4) New Product Functionality<br />

5) Q&A


Why Do We Need <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>?<br />

<strong>To</strong> answer that, let’s take a step back and understand some basic<br />

memory terminology<br />

I get asked this question all the time – What is a fault?<br />

Here is a great definition one of my mentors gave me years ago:<br />

A fault occurs when a virtual address is referenced, but it is not in main storage.<br />

When a fault occurs, a job will stop dead in its tracks and wait for an I/O, and by<br />

definition, it is a synchronous I/O.


Why Do We Need <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>?<br />

Why is that important?<br />

Excessive faulting on your system can cause your system / applications<br />

to slow down<br />

A Real life example with my Mom’s new PC


Why Do We Need <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>?<br />

So it slows down a bit…why is that important?<br />

Bad response for your internal / external customers<br />

Nightly Batch Processing Takes Longer <strong>To</strong> Run<br />

(Jobs are taking longer to complete)


Private Pools - Reminder Of How <strong>The</strong>y Work<br />

Private Pools – areas of memory set aside to be used for specific processing<br />

A Good Example: 1 Gig of memory just for Websphere<br />

Remember: Private pool memory will stay isolated from shared pool memory…if that<br />

processing is idle, that memory is not being used for other resources that may need it…<br />

Is that bad? It Depends. If you have a lot of memory, No Problem<br />

If you are robbing peter to pay paul, then it’s a problem


Private Pools - Reminder Of How <strong>The</strong>y Work<br />

Private Pool Example:


Shared Pools - Reminder Of How <strong>The</strong>y Work<br />

Shared Pools – Shared pools are either special or general; the Machine pool and<br />

Base pool are considered special shared pools, and all other shared pools are<br />

considered general shared pools<br />

General shared pools are pools of main storage that multiple subsystems can use at the<br />

same time.<br />

*INTERACT is the interactive storage pool used for interactive jobs.<br />

*SPOOL is the storage pool used for spool writers.<br />

*SHRPOOL1 through *SHRPOOL60 are storage pools that you can use for your own<br />

use.<br />

NOTE: Set up via the WRKSHRPOOL command


Shared Pools - Reminder Of How <strong>The</strong>y Work<br />

Shared Pools Example:


<strong>Memory</strong> Concepts Can Be A Bit Complicated…<br />

On top of all that, many of you might have performance<br />

adjuster turned on…where memory is being adjusted on the<br />

fly…Next, we have a virtual world where memory can now be<br />

shared between LPARs!?!<br />

With all that complexity, you can see why its so important to<br />

be able to measure memory effectively<br />

So lets see how easy it is


Machine Pool <strong>Memory</strong> / <strong>Memory</strong> Best Practice Guidelines<br />

Audience Poll<br />

Why do I ask the question?<br />

MACHINE POOL IS THE MOST IMPORTANT POOL ON YOUR SYSTEM<br />

Industry best practice guideline: < 10 Faults / sec<br />

Why Is It <strong>The</strong> Most Important Pool?<br />

This is the pool that is used for all the system tasks (operating system)


Machine Pool <strong>Memory</strong> / Best Practice Guidelines<br />

If you have excessive faulting in the machine pool, your system will not be<br />

running efficiently.<br />

More importantly, if the system is not running efficiently…<br />

Will your production applications (i.e. order entry) run efficiently?<br />

Like a car not firing on all cylinders…I can get to the store, but my gas<br />

mileage is horrible and I get there not as fast I normally would


Calculating<strong>The</strong> Machine Pool <strong>Memory</strong> Size<br />

Best practice guideline:<br />

the pool size should be 2 to 4 times the reserve size


Calculating <strong>The</strong> Machine Pool <strong>Memory</strong> Size (cont)<br />

370 M<br />

X2<br />

----------<br />

740 MB<br />

Remember it’s a starting point – Your environment may require less/more memory<br />

<strong>The</strong> key is to measure the pool faulting rate


Measuring Machine Pool Faulting<br />

Old way – back in the day…the refresh<br />

That simply tells us what’s happening now…


Measuring Machine Pool Faulting<br />

<strong>To</strong> better manage memory, we need to answer these questions:<br />

What’s been happening historically to the machine pool?<br />

Is the machine pool faulting rate within the best practice guideline?<br />

Service Level View & Historical View – lets see this now…


Tuning Machine Pool Faulting<br />

Real Life Example:


Tuning Machine Pool Faulting (cont)<br />

Wow…an 83%<br />

Improvement!


Tuning Machine Pool Faulting (cont)<br />

Wow…an 83%<br />

Improvement!


Tuning Machine Pool Faulting (cont)


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Understanding Your Current Environment<br />

What Is Your Faulting Factor?<br />

Historical <strong>To</strong>tal Faults Analysis<br />

Identifying <strong>The</strong> <strong>To</strong>p Faulting <strong>Memory</strong> Pools<br />

Performance Adjuster - Are You Set Up Efficiently?


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Understanding Your Current Environment


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Understanding Your Current Environment


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

What Is Your Faulting Factor?<br />

Mike Denney from IBM Wrote A Great Article Called: “Analyze This”<br />

Introduced the concept: Faulting Factor<br />

Based many factors…CPU time, Sync Disk Time, and Faulting Time<br />

Although really cool, it’s a bit complicated<br />

But MPG made it really easy for you!!


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

MPG made Faulting Factor Easy!<br />

Think of a 1 hour clock…<br />

Job is In the CPU 30 minutes,<br />

But that mean its also waiting 30 minutes<br />

50% faulting factor<br />

MPG Best Faulting Factor practice guideline: 30% or lower<br />

What Is Your Faulting Factor? – Lets find out how easy it is!!


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Graph / <strong>Memory</strong> / Faulting Factor


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Historical <strong>To</strong>tal Faults Analysis<br />

Graph / <strong>Memory</strong> / <strong>Memory</strong> Size vs. Faulting


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Identifying <strong>The</strong> <strong>To</strong>p Faulting <strong>Memory</strong> Pools:<br />

Current Day / <strong>Memory</strong> / <strong>To</strong>p Pools – do this for multiple days


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Identifying <strong>The</strong> <strong>To</strong>p Faulting <strong>Memory</strong> Pools


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Breaking down the top pools…


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Remember…<br />

Understand Your Faulting Factor For All Periods During <strong>The</strong> Day<br />

Understand Your <strong>To</strong>tal Faulting Rate Historically<br />

Understand Where Your Faulting Is Occurring – Month End<br />

<strong>Measure</strong> Impact Of Any Changes


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?


Quick Refresher About Performance Adjuster<br />

Performance Adjuster – Algorithm program that is moving memory in / out<br />

of pools based on a set of conditions / configuration settings<br />

Is it turned on?


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Is it turned on? – Easy <strong>To</strong> See in Performance Navigator


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

Common Problem We See…Machine Pool Real Life Example<br />

<strong>Memory</strong> going in / out of pool all day


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

If machine pool is the most important pool…<br />

Shouldn’t we keep memory in the pool so that the faulting rate remains<br />

within the best practice guideline?<br />

Absolutely!<br />

How do we do that?


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

Step 1 - <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> Activity In <strong>The</strong> Pool<br />

Step 2 – Note <strong>The</strong> Avg / Min / Max for the pool memory activity<br />

Step 3 – Do WRKSHRPOOL to analyze the tuning data configurations<br />

(F11)<br />

Step 4 – Compare PerfNav Avg / Min / Max to QPFRADJ<br />

configuration settings<br />

Step 5 – Make Necessary Changes<br />

Lets see this now…


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

Eventually we have something like this:


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

Now we compare our PerfNav Findings to QPFRADJ settings:<br />

What would happen with this kind of set up? – Poll Time!


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

Here’s what would happen in the pool:


<strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Performance Adjuster – Am I set up efficiently?<br />

New <strong>Memory</strong> Allocation Script


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Historical Analysis By Pool<br />

Faulting Factor By Pool<br />

Job Faulting<br />

How Much <strong>Memory</strong> Does My Job Use?


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Historical Analysis By Pool


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Historical Analysis By Pool


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Faulting Factor By Pool


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Faulting Factor By Pool


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Job Faulting


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

Job Faulting


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong><br />

How Much <strong>Memory</strong> Does<br />

My Job Use?<br />

No memory usage metric<br />

But you can be creative!


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>


<strong>Advanced</strong> <strong>Techniques</strong> <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>


Why Do We Need <strong>To</strong> <strong>Measure</strong> <strong>The</strong> <strong>Memory</strong> <strong>Component</strong>?<br />

Why Does Performance Navigator Make A Difference?<br />

Perfect Real Life <strong>Memory</strong> Examples…

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!