hugmn optimizinghfm 2012 [read-only]hugmn.org/downloads/techday2012/accelatis optimizin… ·  ·...

45
Better Performance. Less Guesswork. HFM Optimization Jonathan Berry President & CEO Ed DeLise VP Sales & Marketing Principal President & CEO [email protected] 203.331.2267 VP Sales & Marketing, Principal [email protected] 678.296.3611

Upload: phamdiep

Post on 06-Mar-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

Better Performance. Less Guesswork.

HFM Optimizationp

Jonathan BerryPresident & CEO

Ed DeLiseVP Sales & Marketing PrincipalPresident & CEO

[email protected]

VP Sales & Marketing, [email protected]

Agenda

1 Background1. Background

2. Configurationg

3. Data

4. Rules

2

What is Accelatis?

3

Background

• Founded by Jonathan BerryH i Fi i l M t D l t T 1998 2008• Hyperion Financial Management Development Team 1998-2008

• Director Engineering for HFM & FDM at Oracle

• Team– Hyperion Technologists with combined 50 years of experience.

• Tony Mitrio Former Oracle Consulting Member Technical Staffo Co-author of HFM Consolidation Engine and Rules Engine

• Robb Salzmann: 13 Year veteran of Essbase Implementations and Tuning

– Ed DeLise, Former Senior Executive at Upstream/FDM

4

Where we fit inWith AccelatisWithout Accelatis

Application Administrator

Application Administrator

Quantifiable data and insightGuesswork

ITOutsourced IT

Who owns

ITOutsourced IT

CollaborativeD i i

Product SupportUsers

this?

Product SupportUsers

Decision Making

pp

Management

pp

Management

5

APM Proficiency ModelWhat Level do you want to operate?

ProficientUser simulations, load generation, benchmarking &

predictive alerting.5

Accelatis Clients within a few

weeks

Procedural

ProactiveRepeatable Optimization. Insight into user activity.

Monitoring, automation and continuous testing performed.4

Exploratory

ProceduralMonitoring with alerts. Some automation. Resolution

processes implemented. SLA compliance

2

3 Accelatis Clients on Day 1

ReactionaryNo monitoring Ad-hoc resources gathered for each issue

ExploratoryBasic Monitoring. Reactionary review of data.

1

2

Most EPM Clients Are HereMost EPM Clients Are Here

6

No monitoring. Ad-hoc resources gathered for each issue.

Accelatis Ascension Suite™

• Accelatis facilitates all EPM focus areas

Manage

MonitorA ti i t

EPM focus areas

• HFM Rules Profiler is just

Oracle EPM Users and Components

MonitorAnticipate HFM Rules Profiler is just one feature within the Optimize focus area

and Components

ResolveOptimize • Other Optimization capabilities include:

Simulate

capabilities include:o Essbase Calc Profilero Planning Forms Optimizero HFM Subcube Analyzer

7

Benefits of HFM Optimization

1 Faster Consolidations1. Faster Consolidations

2. More Predictable Close

3. Prevent Outages

8

Challenges

1. Data organization and usage not widely understood

2. HFM Rules are VBScript (Anything goes)

9

ConfigurationComponents to tune

1. Operating System• TCP, Memory settings, y g

2. Web Server• Compression, Caching

3 App Server3. App Server• Consolidation settings in registry HKEY_LOCAL_MACHINE\SOFTWARE\Hyperion

Solutions\Hyperion Financial Management\Server• 32/64 Bit Considerations

4 Database4. Database• Purging log tables• Oracle-specific tuning

Review of event logsFreeLRUs

10

Data: TablesDCE, DCN TablesDCN vary by parent: upper half of value dim

Table Population (MSSQL specific)If #records > 15000 consider changing primary key to clustered primary key# eco ds 5000 co s de c a g g p a y ey o c us e ed p a y ey

SQL Example:SELECT count(*) FROM COMMA DCE 1 2011FROM COMMA_DCE_1_2011

11

Data: SubcubesSubCube PopulationIf #records > 100,000 consider changing org structure

SQL Example:SELECT lEntity, lValue, count(*) as numRecsFROM COMMA DCE 1 2011FROM COMMA_DCE_1_2011GROUP BY lEntity, lValue

12

Data: ZerosNo reason for soft zerosPossible erroneous hard zerosPossible erroneous hard zeros

Determine how many zeros are in each periodselect * from COMMA_DCN_1_2005 where dp1_Input=0 and dp2_Input=0

d d 3 I t 0 d XXXand dp3_Input=0 and XXX

Thenforeach Period if dp<PERIOD> InputTransType != 2 then SoftZero, not p _ p yp ,

HardZero

13

HFM Rules ProfilingWhy?1. Faster Consolidations2. More Predictable Close3. Performance is affected not only by Rules changes but also by data changes,

period changes, POV, etc…

Challenges1. Not easy to determine bottlenecks without expertise2. Data organization and usage not widely understood3. HFM Rules are VBScript (Anything goes)

What you will learn today1. We will review the manual process of what our software does automatically2. Huge value in profiling rules manually or using our tool

14© 2012 Accelatis, LLC

Goals of Profiling Rules

1. Determine where the time is going?P d fi d f ti• Predefined functions

• Custom functions• Blocks of code• Time by Entityy y

2. Counters• Invocations by function• Invocations by specific line

3. Determine Rules effect on data?P l ti• Populating zeros

• Subcube density

© 2012 Accelatis, LLC 15

Steps (aka our Agenda)1. Instrument Rules file

o Add timings to all functionso Add timings to all functionso Track subroutines with complete stack traceo Track time by Entityo Add custom timing blocks and function line iteratorso Persist timings datao Persist timings data

2. Capture Subcube Populations Prior to Calculation3. Execute Consolidation4 Capture Subcube Populations After Calculation4. Capture Subcube Populations After Calculation5. Analyze Results

o Functionso Timing Blockso Iteratorso Timings by Entityo Changes to SubCube population due to Rules

6 Remediation6. Remediation

16© 2012 Accelatis, LLC

Storing Data Techniques

Options for persisting resultsOptions for persisting results

1. Write to file

2. Write to database

3. Write to object

4 Hybrid Approach4. Hybrid Approach

17© 2012 Accelatis, LLC

WriteToFileExample Calls1. Call WriteToFile("Finished CalcRoutine (Entity=" & UCase(HS.Entity.Member) & ").")2. Call WriteToFile(“Hit Line of Code: XXXYYY”)( )

Sample WriteToFile functionSub WriteToFile(data)

On Error Resume NextOn Error Resume NextConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso, fileSet fso = CreateObject("Scripting.FileSystemObject")Set file = fso.OpenTextFile("c:\Temp\RuleRunLog.txt", ForAppending, True)If (1) Then

Set file = fso.OpenTextFile("\\machine\data\timings.txt", ForAppending, True)f.WriteLine data & “ – “ & Now() & " - " & Timer()f.CloseOn Error GoTo 0'

End IfEnd SubEnd Sub

*Performance issues result from multiple script engines writing to the same file

18© 2012 Accelatis, LLC

same file.

WriteToDatabaseExample Calls1. Call WriteToDatabase("Finished CalcRoutine (Entity=" & UCase(HS.Entity.Member) & ").")2. Call WriteToDatabase(“Hit Line of Code: XXXYYY”)( )

Sample WriteToDatabase functionWriteToDatabase(data)

Dim conn, strSQLQuery, rsDim conn, strSQLQuery, rsConst adOpenDynamic = 2, adLockPessimistic = 2, adCmdText = 1

Set conn = Server.CreateObject("ADODB.Connection")conn.open connectionString

strSQLQuery = "INSERT INTO tablename (FieldName1, FieldName2) VALUES (data, Value2)"Set rs = Server.CreateObject("ADODB.Recordset")rs.Open strSQLQuery, conn, adOpenDynamic, adLockPessimistic, adCmdText

conn.closeset conn = Nothingset conn = Nothing

End Sub

*Be aware that the time to write the data to the database will affect overall lid ti ti d lti t l f ti i ti

19© 2012 Accelatis, LLC

consolidation time and ultimately accuracy of timing proportions.

WriteToObjectExample Calls1. Call WriteToObject("Finished CalcRoutine (Entity=" & UCase(HS.Entity.Member) & ").")2. Call WriteToObject(“Hit Line of Code: XXXYYY”)j ( )

Sample WriteToObject functionWriteToObject(data)

Dim objHelperDim objHelperSet objHelper = CreateObject(“PROGID”)Call objHelper.AddSample(data)Set objHelper = Nothing

End Sub

*Recommend performing the actual write activities in a thread so as to limit the interruption to the consolidation process.to limit the interruption to the consolidation process.

20© 2012 Accelatis, LLC

Tracking Time

1. Adding timers to beginning and end of functions2. Adding timers to blocks of code3. Adding ‘Iterators’ capturing lines of code called

21© 2012 Accelatis, LLC

Timers

1. How to capture time spentAdd ti t b i i d d f f ti• Add timers to beginning and end of functions

Sub Calculate()

'Accelatis InstrumentationDim AccRules, accStartTime, accEndTime, accFunctionTraceaccFunctionTrace = "Calculate"accFunctionTrace = CalculateSet AccRules=CreateObject("AccHFMRulesProfiling.RulesProfiling_Class")accStartTime = AccRules.GetCurrentTime()

Call StandardCalculations (accFunctionTrace)Call CalculateNetIncomeVarianceToPlan (accFunctionTrace)Call ValidateVarianceCommentary (accFunctionTrace)Call ValidateMiscExpenseDetail (accFunctionTrace)Call ValidateFixedAssetDetail (accFunctionTrace)Call ValidateFixedAssetDetail (accFunctionTrace)Call ValidateBalancedBalanceSheet (accFunctionTrace)Call ValidateFlashInput (accFunctionTrace)Call CalculateCashFlow (accFunctionTrace)

'Accelatis InstrumentationaccEndTime = AccRules.GetCurrentTime()Call AccRules.AddSample("Calculate",accFunctionTrace,, HS.Scenario.ID, HS.Scenario.Member, HS.Year.ID, HS.Year.Member, HS.Period.ID,

HS Period Member HS Entity ID HS Entity Member HS Parent ID HS Parent Member HS Value ID HS Value Member accStartTime accEndTime)HS.Period.Member, HS.Entity.ID, HS.Entity.Member, HS.Parent.ID, HS.Parent.Member, HS.Value.ID, HS.Value.Member, accStartTime, accEndTime)

End Sub

© 2012 Accelatis, LLC 22

Capturing Function Stack

Custom functions called by multiple higher level functions

BEFORESub Calculate()

Call CustomFunction(Parameters)

AFTERSub Calculate()

Call CustomFunction(Parameters, “Calculate”)( )End Sub

Sub Translate()Call CustomFunction(Parameters)

End Sub

( , )End Sub

Sub Translate()Call CustomFunction(Parameters, “Translate”)

End Sub

Sub CustomFunction(parameters)‘Do StuffCall WriteToFile(“CustomFunction”, parameters)

End Sub

Sub CustomFunction(parameters, functionStack)‘Do StuffCall WriteToFile(“CustomFunction”, parameters, functionStack)

End Sub

23© 2012 Accelatis, LLC

Capturing POVHS.<DIMENSION>.ID and HS.<DIMENSION>.Member

Example UsageCall WriteToObject("Finished CalcRoutine (Entity=" & UCase(HS.Entity.Member) & ").“)j ( ( y ( y ) ) )

24© 2012 Accelatis, LLC

Putting it TogetherSub HelperFunction(accFunctionTrace)

'Accelatis Instrumentation'Accelatis InstrumentationDim AccRules, accStartTime, accEndTime, accFunctionTraceaccFunctionTrace = accFunctionTrace & “HelperFunction”Set AccRules=CreateObject("AccHFMRulesProfiling.RulesProfiling_Class")accStartTime = AccRules.GetCurrentTime()

Call OtherFunction1(accFunctionTrace)Call OtherFunction2(accFunctionTrace)If (test = TRUE)

'Accelatis InstrumentationCall AccRules.AddLineCounter(lineCountIDDefinedSomeplace, “HelperFunction”, lineNumber)Call DoOneThing(accFunctionTrace)

ElseCall DoAnotherThing(accFunctionTrace)

End IfCall OtherFunction3(accFunctionTrace)

'Accelatis InstrumentationaccEndTime = AccRules.GetCurrentTime()Call AccRules.AddSample(“HelperFunction“, accFunctionTrace, HS.Scenario.ID, HS.Scenario.Member, HS.Year.ID,

HS.Year.Member, HS.Period.ID, HS.Period.Member, HS.Entity.ID, HS.Entity.Member, HS.Parent.ID, HS.Parent.Member, HS.Value.ID, HS.Value.Member, accStartTime, accEndTime)

25© 2012 Accelatis, LLC

, , , , )

End Sub

Capturing Subcube Populations

select lEntity, lValue, COUNT (*) FROM <CURRENCY_TABLE> group by lEntity, lValue

Entity Value NumRecords5 10 725 11 34

select lEntity, lParent, lValue, COUNT (*) FROM <NODE_TABLE>group by lEntity, lParent, lValueg p y y

Entity Parent Value NumRecords5 8 10 725 8 11 34

•Need to convert IDs to Metadata Labels•Need to compare Before and After Consolidation

26© 2012 Accelatis, LLC

Gotchas

1. Multiple VBScript engines• Do not use global variables as counters• Do not use global variables as counters• Total time calculated may be more than actual elapsed time

due to multiple threads

2. Performance Impact of Instrumentation• If tracking function time, write data outside of timings• If using Objects, make calls asynchronous so writing of data g j y g

happens in queue on background thread. Do not create thread for every call!

3. Eliminate unnecessary calls to routines from global scope. This can greatly increase load time and application startup time

27© 2012 Accelatis, LLC

Gotchas (cont)

4. Writing to file from multiple VBScript engines is dangerous. • Each instance may block access to the file and cause• Each instance may block access to the file and cause

deadlocks as well as major performance issues. • Doing so effectively forces HFM Consolidation into single

threaded operationthreaded operation.

5. Resolution of timing using the Timer function in VBScript is >= 15ms. Using this built-in timing function can amplify timing15ms. Using this built in timing function can amplify timing calculation errors over many iterations.

28© 2012 Accelatis, LLC

Analyzing ResultsManual Options

1. Import files into Excel and plot2. Read data from database and plot in Excel or other SQL based

report writer

High Level Formulas (dependant on how data is written and reporting tool)

1. For Function Count, Filter by FunctionName and COUNT total rows• Optionally include StackTrace in filter to narrow down code path

2. For Function Timing, Filter by FunctionName and SUM Duration by Function/Entity/StackTracey

3. For Line Counts, Filter by LineCounterID and COUNT total rows4. For Timing Blocks, Filter by TimingBlockID and SUM Duration on all rows

29© 2012 Accelatis, LLC

Accelatis Rules ProfilerAnalysis: Graphical review of results

FunctionFunction breakdown• Overall Inclusive

Function Time• Most Time

Consuming Inclusive Functions

• Overall Exclusive Function Time

• Most Time Consuming Exclusive Functions

• Function Call Frequency

• Most Frequently Called Functions

30

Accelatis Rules Profiler

Analysis: Graphical review of results• Timing Block times (Inclusive, Longest, Shortest, Frequency)

31

Accelatis Rules Profiler

Analysis: Graphical review of results• Iterator frequency

32

Accelatis Rules Profiler

Analysis: Graphical review of results• View time by Entity, Value and Rules Function (to pinpoint bottlenecks)

33

Upcoming WebinarsTop Notch Oracle EPM Performance: Load Testing and User Simulation

On Tuesday April 10, we will cover the primary aspects of meaningful load testing and user simulation, including:

•Essbase, Planning, HFM, and all associated products•4 phases – Design, Validation, Execution and Analysis•Single and Multi-User Performance, Concurrency and Longevity•Test Execution – monitoring test-refinementTest Execution monitoring, test refinement•Analysis – identifying bottlenecks and remediation

Making Oracle EPM Run More Smoothly: The APM Proficiency Modelg y yOn Tuesday May 8th, we will discuss mastering the black art of Oracle EPM Application Performance Management. We will cover:

•Better system performance•Less guesswork when troubleshooting issuesP idi fi t l i•Providing first class user experiences

•Reducing risk during critical, high use periods•Collaborate between departments effectively

To register or to view past sessions go to:

© 2012 Accelatis, LLC 34

To register, or to view past sessions, go to: http://www.accelatis.com/webinars-hyperion

Questions?

Jonathan BerryPresident & [email protected] 331 2267

Ed DeLiseVP Sales & Marketing, [email protected] 296 3611

35© 2012 Accelatis, LLC

203.331.2267 678.296.3611

How Accelatis Works

Transition Slide

36

HFM Rules ProfilingProfile Rules with little effort• Create profile ‘packages’ that include instrumentation rules and consolidation profiles• Profiler will automatically capture all function timings and distinguish top-level andProfiler will automatically capture all function timings and distinguish top level and

custom calls (inclusive and exclusive function timings)

37

HFM Rules ProfilingTiming Blocks and Iterators• Timing blocks can be set to any block of code to collect timings• Function Line Iterators will count how many times a line of code is hit

38

HFM Rules Profiling

Compare to Original Rules Code (Extract instrumented Rules to RLE file an option)

39

HFM Rules Profiling

Automated Execution Steps:1. Take snapshot of subcube populations2. Extract original rules3. Load instrumented rules4. Run consolidation5. Take post-snapshot of subcube population6. Reload original rules

40

HFM Rules ProfilingAnalysis: Graphical review of results

FunctionFunction breakdown• Overall Inclusive

Function Time• Most Time

Consuming Inclusive Functions

• Overall Exclusive Function Time

• Most Time Consuming Exclusive Functions

• Function Call Frequency

• Most Frequently Called Functions

41

HFM Rules Profiling

Analysis: Graphical review of results• Timing Block times (Inclusive, Longest, Shortest, Frequency)

42

HFM Rules Profiling

Analysis: Graphical review of results• Iterator frequency

43

HFM Rules Profiling

Analysis: Graphical review of results• View time by Entity, Value and Rules Function (to pinpoint bottlenecks)

44

HFM Rules Profiling

Analysis: Graphical review of results• View SubCubes with largest data Increases due to Rules• *In this example there is no data change…

45